web-dev-qa-db-ja.com

Selenium-タイプpromptUserAndPassのユーザープロンプトはサポートされていません

長い間、私はpythonボットを使用していくつかの作業タスクを実行しています。とりわけ、ボットは認証ウィンドウを渡す必要があります。

pythonプログラム内のこのコードは次のとおりです。

driver = webdriver.Firefox(firefox_profile=profile)
...
driver.get('https://example.com')
driver.switch_to.alert.send_keys('123456' + Keys.TAB + '123456')
driver.switch_to.alert.accept()

しかし、昨日それはこのエラーを投げました:

Selenium.common.exceptions.WebDriverException:メッセージ:タイプpromptUserAndPassのユーザープロンプトはサポートされていません

私はググリングしてきましたが、この種の例外やこの問題への対処方法についての結果も見つかりません。

何か案は?

前もって感謝します!

8
cooper

現在、HTTPAuthダイアログはどのドライバーでもサポートされていないようです。
Firefoxは67.0で動作しない回避策を実装しました。仕様がないため、現在HTTP認証プロンプトのサポートを追加できません。

https://bugzilla.mozilla.org/show_bug.cgi?id=1556026

https://bugzilla.mozilla.org/show_bug.cgi?id=1556307

https://github.com/w3c/webdriver/issues/385

@ elead1のように、Firefox 66.0を別の名前でインストールし、FirefoxDriverを呼び出すときにその場所を言及することで、この問題を回避することができました。

from Selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from Selenium.webdriver import Firefox

path = FirefoxBinary("/path/to/Firefox2/firefox-bin")
browser = Firefox(firefox_binary=path)
5
elinnore

コメントするのに十分な担当者がいないので、これで問題が「解決」しないことはわかっていますが、 Firefox ESR を使用してこの問題を回避できました。

ESRをメインのFirefoxインストールと並行してインストールし、FirefoxDriverが使用するバイナリを指定できます。

driver = webdriver.Firefox(firefox_profile=profile, firefox_binary="/path/to/esr/binary")
4
elead1