OS:Ubuntu 16.04.3 LTS(GNU/Linux 4.4.0-1066-aws x86_64)
Seleniumバージョン:Selenium == 3.6.0
ブラウザー:Mozilla Firefox 63.0
Geckodriverバージョン:geckodriver-v0.19.0-linux64
新しいFirefoxブラウザーを作成し、いくつかの手順を実行します-Webサイトを解析します。
ログでクラッシュ:-
self.driver = webdriver.Firefox()
File "/home/ubuntu/env/local/lib/python2.7/site-packages/Selenium/webdriver/firefox/webdriver.py", line 154, in __init__
keep_alive=True)
File "/home/ubuntu/env/local/lib/python2.7/site-packages/Selenium/webdriver/remote/webdriver.py", line 151, in __init__
self.start_session(desired_capabilities, browser_profile)
File "/home/ubuntu/env/local/lib/python2.7/site-packages/Selenium/webdriver/remote/webdriver.py", line 240, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/home/ubuntu/env/local/lib/python2.7/site-packages/Selenium/webdriver/remote/webdriver.py", line 308, in execute
self.error_handler.check_response(response)
File "/home/ubuntu/env/local/lib/python2.7/site-packages/Selenium/webdriver/remote/errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
Selenium.common.exceptions.WebDriverException: Message: newSession
誰もが以前にこの問題に直面し、可能な解決策を持っていますか?
更新:次のコマンドを実行しました:geckodriver --log trace & curl -d '{}' 127.0.0.1:4444/session
Selenium pythonパッケージを更新し、最新のgeckodriverを使用して問題を修正しました。
すべてのあなたの助けをありがとう@fzbd。
ありがとう@skyfail。あなたの答えが助けになりました。次のシーケンスが実行され、問題が解決されました。
Seleniumをアップグレードするには:Sudo pip3 install Selenium --upgrade
Geckodriverをアップグレードするには、 this からステップ1-3を実行します
Sudo mv geckodriver /usr/local/bin/geckodriver
、/ usr/local/binは通常PATHにあるため、編集する必要はありません。ログには次の行があります。
1540501901605 geckodriverエラー使用中のアドレス(OSエラー98)
これは、ドライバーが他のプロセスで既に使用されているポートを使用しようとしていることを示します。ログにはポートが表示されないため、strace
を使用してドライバーを実行できます。
strace geckodriver 2>&1 | grep -iE 'bind|getsockname'
私の場合、これらの行を取得します:
bind(3、{sa_family = AF_INET、sin_port = htons(4444)、sin_addr = inet_addr( "127.0.0.1")}、16)= 0
getsockname(3、{sa_family = AF_INET、sin_port = htons(4444)、sin_addr = inet_addr( "127.0.0.1")}、[128-> 16])= 0
次に、ポートを使用しているプロセスを確認できます(たとえば)。
netstat -tulpn | grep -i 4444
私の場合、戻る:
tcp 0 0 127.0.0.1:4444 0.0.0.0:* LISTEN 31471/geckodriver
geckodriverポートロギングに関する問題 によると、OSに空きポートを割り当てることができます。
geckodriver --port 0
これがすべてうまくいかない場合、ログのこのエラーが示唆するように、geckodriverのバージョンとSeleniumの間に互換性がない可能性があります。
geckodriver :: marionette TRACE <-[1,1、{"error": "unknown command"、 "message": "newSession"、 "stacktrace": "WebDriverError @ chrome://marionette/content/error.js:178 :5
次のバージョンを使用しています。