0

リモートWebドライバーを介してhtmlunitを使用して、Pythonスクリプトからセレンを含むページを取得すると、次のエラーが発生します。

WebDriverException: メッセージ: u'TypeError: 関数 addEventListener がオブジェクト [オブジェクト HTMLDocument] に見つかりません。( https://xxx.xxx.com/static/js/jquery-2.0.3.min.js#4 )

したがって、この例外を回避するために、Webドライバーを初期化するときにjavascriptを無効にしようとしましたが、うまくいきません...

私はwebdriver.DesiredCapabilities.HTMLUNIT(vs HTMLUNITWITHJS)でdesired_capabilitiesを設定しようとしましたが、何も変わりませんでした。そのため、機能を手動で定義しようとしましたが、役に立ちませんでした。

私が行ったことのいくつかの例と結果を次に示します。

In [45]: driver = webdriver.Remote(desired_capabilities=webdriver.DesiredCapabilities.HTMLUNIT)

In [46]: driver.desired_capabilities
Out[46]:
{u'browserName': u'htmlunit',
 u'cssSelectorsEnabled': True,
 u'javascriptEnabled': True,
 u'platform': u'LINUX',
 u'version': None,
 u'webdriver.remote.sessionid': u'3aa1c9c0-9d85-4e22-ad2b-1116950cf86d'}

In [47]: driver = webdriver.Remote(desired_capabilities={'browserName': 'htmlunit', 'javascriptEnabled': False, 'platform': 'ANY', 'version': ''})

In [48]: driver.desired_capabilities
Out[48]:
{u'browserName': u'htmlunit',
 u'cssSelectorsEnabled': True,
 u'javascriptEnabled': True,
 u'platform': u'LINUX',
 u'version': None,
 u'webdriver.remote.sessionid': u'426aef71-2b7c-45c5-9313-c3dbbec07c7f'}

だからここにいます。誰かが何か考えがあれば... :)

4

1 に答える 1

1

他の誰かが同じ種類の問題に遭遇した場合の部分的な回答:

1/ サーバー ログを見ると、javascriptEnabled 設定に関する私の指示が実際にセレン サーバーによって考慮されているようです。クライアントによって表示される desired_capabilities ディクショナリは関係ありません。

15:21:35.575 INFO - Executing: [new session: Capabilities [{platform=ANY,  javascriptEnabled=false, browserName=htmlunit, version=}]])
15:21:35.576 INFO - Creating a new session for Capabilities [{platform=ANY, javascriptEnabled=false, browserName=htmlunit, version=}]
15:21:35.590 INFO - Done: [new session: Capabilities [{platform=ANY, javascriptEnabled=false, browserName=htmlunit, version=}]]

2/この議論を読むと、私が javascriptEnabled 設定から期待したことは、それが意図したものではないようです。これはブラウザでの JavaScript の実行を無効にするのではなく、クライアント スクリプトからの JavaScript の「インジェクション」を無効にします。

HTMLUNIT を使用して JavaScript の実行を無効にすることはできないようです。したがって、この質問は関連性がないため、閉じることができます。

唯一の解決策は、HTMLUNIT を jquery-2.0.3 で動作させることです。最新版にアップデートしましたがダメでした…

[編集] 最後に、ここで適切な解決策が見つかりまし: JavaScript エラーで HTMLUNIT が例外をスローするのを防ぎます。

In [14]: driver = webdriver.Remote(desired_capabilities={'browserName': 'htmlunit', 'javascriptEnabled': False, 'platform': 'ANY', 'version': '', 'setThrowExceptionOnScriptError': False})

URLを読み込めるようになりました!:)

于 2014-08-26T14:48:58.090 に答える