web-dev-qa-db-ja.com

WebDriverException:メッセージ:不明なエラー:Chrome起動に失敗:ChromeDriverを使用してクラッシュしたエラーChrome Seleniumを介してPython=

私が自分のデューディリジェンスを実行したことを示すために、私は以下の質問について、提案された回答をすでに試したか、少なくともそれらを読んで理解しようとしました。

Selenium:WebDriverException:Chrome failed to start:クラッシュしてgoogle-chromeが実行されなくなったため、ChromeDriverはChromeがクラッシュしたと想定しています

chromeの場所から開始されたプロセスC:\ ..\Chrome\Application\chrome.exeは実行されなくなったため、ChromeDriverはChromeがクラッシュしたと想定しています

Docker経由のセレンpythonライブラリ、Chromeエラーの開始に失敗しました:異常終了しました

Seleniumを使用するとChromeがクラッシュします (回答は投稿されていませんが、それでも確認しました)

Linuxで「usr/bin/google-chromeが実行されなくなったため、ChromeDriverがChromeがクラッシュした」エラーを想定していますか? -この問題の場合、私は「/ usr/bin/google-chrome」を「/ etc/alternatives/google-chrome」に置き換えましたが、まだ機能しませんでした。

chromeの場所から開始されたプロセス/ usr/bin/google-chromeは実行されなくなったため、ChromeDriverはSelenium のChromeがクラッシュしたと想定しています

Selenium.common.exceptions.WebDriverException:Message:unknown error:Chrome failed to start:crashed with ChromeDriver and Selenium in Python

python linux Selenium:chromeに到達できません

不明なエラー:Chromeを開始できませんでした:crashed(Selenium、ヘッドレスモード)

python Selenium:WebDriverException:Message:chrome not reachable

Selenium chromeを開始できませんでした

WebDriverException:メッセージ:不明なエラー:Chromeを開始できませんでした:VPSでChromeDriver ChromeおよびPythonを介してSeleniumで異常終了しました

Chromeブラウザを使用してSelenium Gridでテストスクリプトを実行中に「Chromeに到達できません」エラーが発生する

Selenium WebdriverエラーChromeを開始できませんでした

org.openqa.Selenium.WebDriverException:unknown error:Chrome failed to start:crashed(headless chrome)

Python:Selenium-メッセージ:不明なエラー:Chromeを開始できませんでした:異常終了しました

Amazon LinuxサーバーでPythonを使用してSeleniumを実行すると、ここでスタックオーバーフローで見られる一般的なエラーが発生します。次の結果が得られます。

Traceback (most recent call last):
  File "test-Selenium-chrome.py", line 15, in <module>
    driver = webdriver.Chrome(options=options, executable_path='/usr/local/bin/chromedriver')  # Optional argument, if not specified will search path.i
  File "/usr/local/lib/python3.7/site-packages/Selenium/webdriver/chrome/webdriver.py", line 81, in __init__
    desired_capabilities=desired_capabilities)
  File "/usr/local/lib/python3.7/site-packages/Selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.7/site-packages/Selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.7/site-packages/Selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.7/site-packages/Selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
Selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
  (chrome not reachable)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

これが私のコードです:

#!/usr/bin/python3
import time
from Selenium import webdriver
from Selenium.webdriver.chrome.options import Options
from pyvirtualdisplay import Display

options = Options()
options.binary_location = '/usr/bin/google-chrome'
options.add_argument('--disable-extensions')
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--remote-debugging-port=9515')
options.add_argument('--disable-setuid-sandbox')

display = Display(visible=0, size=(800, 800))
display.start()

driver = webdriver.Chrome(options=options, executable_path='/usr/local/bin/chromedriver')  # Optional argument, if not specified will seearch path.i
driver.maximize_window()
driver.get('http://www.google.com/')
time.sleep(5)  # Let the user actually see something!
search_box = driver.find_element_by_name('q')
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5)  # Let the user actually see something!
driver.quit()

Google Chromeバージョン79.0.3945.130、および対応するchromedriverバージョンChromeDriver 79.0.3945.36を使用しています https://sites.google.com/a/chromium.org/chromedriver/downloads

追加情報、コマンドラインからgoogle-chromeを実行すると、次のようになります。

[ec2-user@ip-xxx-xx-xx-xxx bin]$ pwd
/usr/bin
[ec2-user@ip-xxx-xx-x-xxx bin]$ google-chrome
Segmentation fault

どんな助けでも大歓迎です。

4
Brent Heigold

このエラーメッセージ...

Selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
  (chrome not reachable)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

...ChromeDriverが新しいBrowsing Context、つまりChromeを開始/生成できなかったことを意味しますブラウザセッション。


Selenium:WebDriverException:Chrome failed to start:crased for google-chrome is no running as Chrome Chromerは、Chromeがクラッシュしたlinux 上の google-chrome のデフォルトの場所は次のとおりです。

/usr/bin/google-chrome

:Linuxシステムでは、ChromeDriverは/usr/bin/google-chromeが実際のChromeバイナリへのシンボリックリンクであると想定しています。

したがって、理想的には、次の最小限のコードブロックが機能するはずです。

from Selenium import webdriver
from Selenium.webdriver.chrome.options import Options

options = Options()
options.binary_location = '/usr/bin/google-chrome'
driver = webdriver.Chrome(options=options, executable_path='/usr/local/bin/chromedriver')
driver.get('http://www.google.com/')

しかし、Chromeセッションを手動で開始しようとすると、Segmentation faultが発生します。つまり、次のようにクラッシュします。

[ec2-user@ip-xxx-xx-xx-xxx bin]$ pwd
/usr/bin
[ec2-user@ip-xxx-xx-x-xxx bin]$ google-chrome
Segmentation fault

セグメンテーション違反

セグメンテーション違反segfaultと短縮)またはアクセス違反は、メモリ保護機能を備えたハードウェアによって発生した障害または障害状態であり、ソフトウェアが制限された領域にアクセスしようとしたことをオペレーティングシステムに通知しますメモリ。これに応じて、OSカーネルは通常、いくつかの修正アクションを実行します。通常、プロセスにシグナルを送信することにより、問題のあるプロセス(スクリプト)に障害を渡します。

要するに、それは、プログラム/スクリプトがそれに属していないメモリを破損することを制限するヘルパーメカニズムです。詳細はこちら こちら


理由と解決策

考えられる理由と解決策は次のとおりです。

  • Chromeがシステムにインストールされていないため、Chromeをインストールする必要があります
  • Chromeはデフォルトの場所にインストールされていないため、binary_locationを介してchrome実行可能ファイルの正しい場所を渡す必要がありますプロパティ。
  • 実際のChromeバイナリへのシンボリックリンク/usr/bin/google-chromeが破損しているため、シンボリックリンクを作成する必要がある場合があります。
  • ユーザーには必要なアクセス権/usr/bin/google-chromeがないため、アクセス権を提供しています。
2
DebanjanB