下記プログラムの実行時に後述のエラーが発生します。
エラーの解消方法についてご教示をお願いいたします。
情報が不足しておりましたら、
どういった情報が必要であるかご指摘下さい。
言語: Python3.7
環境: Windows10 64bit / Visual Studio 2019
【ソースコード】
import time
import win32com.client
ie = win32com.client.Dispatch("InternetExplorer.Application")
ie.visible = True
ie.Navigate("https://www.google.co.jp")
while(ie.Busy and ie.ReadyState != 4):
time.sleep(1)
col = ie.document.all
elem = ie.Document.getElementById("gsr")
【エラー箇所】
elem = ie.Document.getElementById("gsr")
【エラー内容】
ハンドルされていない例外
Message=getElementById() takes 1 positional argument but 2 were given
Source=C:\Users\sample.py
スタック トレース:
File "C:\Users\sample.py", line 12, in <module>
elem = ie.Document.getElementById("gsr")
【試したこと】
1.エラー文面通り、引数を減らして(渡さずに)実行する。
結果、以下事象が発生しました。
①Visual Studio で「^ScriptDocument1 COMObject unknown.txt」というファイルが開く。
②開かれたファイルでエラーが発生する。
【開かれたファイルの内容】
1行目 空白
2行目 LOAD_FAST(self), LOAD_METHOD(ApplyTypes), LOAD_CONST(3001611), LOAD_CONST(1), LOAD_CONST((12, 0)), LOAD_CONST(()), LOAD_CONST('getElementById'), LOAD_CONST(None), CALL_METHOD{6}, RETURN_VALUE
3行目 空白
【エラー箇所】
開かれたファイルの2行目
【エラー内容】
Message=(-2147352319, 'OLE error 0x80020101', None, None)
Source=<COMObject <unknown>>
スタック トレース:
File "<COMObject <unknown>>", line 2, in getElementById
File "C:\Users\sample.py", line 12, in <module>
elem = ie.Document.getElementById()
2.引数を2つ渡す。
予想通りでしたが、同じ箇所でほぼ同じエラーが発生します。
相違点は but 2 were given が but 3 were given となる点です。
3.引数で渡す id を変更する。
上記ソースコードに記載の gsr 以外の、 google.com に存在する id を渡して実行してみましたが、
同じ箇所で同じエラーが発生します。
ちなみに、エラー箇所直前の document.all が正常に取得できているので、
存在するエレメントの id 一覧は取得できます。
4.pywin32 のバージョンを確認する。
getElementsById の定義で引数に self を設定しなければ上記エラーが発生するはずなので、
import されているモジュール自体に問題がある可能性を考え、
現在のバージョンの確認と、 pip install pywin32 --upgrade を実行しました。
結果、現在のバージョンは最新と思われる 228 であり、 --upgrade の後も228 のままでした。
5.getElementById を他のメソッドに変更する。
取り敢えず getElement と名の付くメソッドを思いつく限り実行しましたが、
すべて同様の箇所で同様のエラーが発生します。
色々なサイトを拝見しましたが、エラーの原因が特定できません。
どうかご助力をお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/30 17:06