web-dev-qa-db-ja.com

Selenium:WebDriverException:Chromeの開始に失敗しました:google-chromeが実行されなくなったためクラッシュしました。ChromeDriverはChromeがクラッシュしたと想定しています

私はこの質問に関していくつかの答えがあることを知っていますが、これまでのところ何も役に立たなかったので、新しい質問を投稿しています。

最近、コンピューターを切り替えて以来、Seleniumでchromeを起動できません。私もFirefoxを試してみましたが、ブラウザは起動しません。

from Selenium import webdriver

d = webdriver.Chrome('/home/PycharmProjects/chromedriver')

d.get('https://www.google.nl/')

次のエラーが表示されます。

Selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /opt/google/chrome/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
  (Driver info: chromedriver=2.43.600233, platform=Linux 4.15.0-38-generic x86_64)

最新のchromeバージョンとchromedriverがインストールされています

編集:@ b0sssソリューションを試した後、次のエラーが表示されます。

Selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
  (chrome not reachable)
  (The process started from chrome location /opt/google/chrome/google-chrome is no longer running, so chromedriver is assuming that Chrome has crashed.)
  (Driver info: chromedriver=2.43.600233 (523efee95e3d68b8719b3a1c83051aa63aa6b10d),platform=Linux 4.15.0-38-generic x86_64)
22
SOeh

こちらからダウンロードして、この最新のchromeドライバーバージョンを使用してみてください。

https://sites.google.com/a/chromium.org/chromedriver/downloads

編集:

これを試して:

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
d = webdriver.Chrome('/home/PycharmProjects/chromedriver',chrome_options=chrome_options)
d.get('https://www.google.nl/')
22
NgoCuong

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

Selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /opt/google/chrome/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

...ChromeDriverは新しいWebBrowserつまりChrome Browserセッションを開始/生成できなかったことを意味します。

主な問題はChromeブラウザがシステム内のデフォルトの場所にインストールされていないことです。

サーバー(つまりChromeDriverは、Chromeデフォルトの場所は以下の画像のように各システムごとに:

Chrome_binary_expected_location

1Linuxシステムの場合、ChromeDriverは/usr/bin/google-chromeが実際のChromeバイナリへのシンボリックリンクであることを期待します。


解決

非標準の場所でChrome実行可能ファイルを使用している場合は、Chromeバイナリの場所をオーバーライドする必要があります。次のように:

  • Python解決策:

    from Selenium import webdriver
    from Selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.binary_location = "C:\\path\\to\\chrome.exe"
    driver = webdriver.Chrome(chrome_options = options, executable_path=r'C:\path\to\chromedriver.exe')
    driver.get('http://google.com/')
    print("Chrome Browser Invoked")
    driver.quit()
    
  • Java解決策:

Chrome executable in a non-standard location

10
DebanjanB

同様の問題があり、オプション引数は特定の順序でなければならないであることを発見しました。私は、Ubuntu 18マシンでこれを機能させるために必要な2つの引数のみを認識しています。このサンプルコードは私の終わりに働いた:

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

options = Options()
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')

d = webdriver.Chrome(executable_path=r'/home/PycharmProjects/chromedriver', chrome_options=options)
d.get('https://www.google.nl/')
5
Ethan Hill

Docker container(ビルド環境)で実行中の正確な問題が発生しました。コンテナにsshした後、テストを手動で実行しようとしましたが、まだ遭遇しました

(unknown error: DevToolsActivePort file doesn't exist)
     (The process started from chrome location /usr/bin/google-chrome-stable is 
      no longer running, so ChromeDriver is assuming that Chrome has crashed.)

chromeローカルで/usr/bin/google-chrome-stableを実行しようとしたとき、エラーメッセージ

Running as root without --no-sandbox is not supported

ChromeOptionsを確認しましたが、--no-sandboxが欠落していたため、クロムを生成できませんでした。

capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
  chromeOptions: { args: %w(headless --no-sandbox disable-gpu window-size=1920,1080) }
)
4
ibaralf

これが誰かを助けることを願っています。これはUbuntu 18.10で私のために働いた

from Selenium import webdriver
from Selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument('--no-sandbox')
driver = webdriver.Chrome('/usr/lib/chromium-browser/chromedriver', options=chrome_options)
driver.get('http://www.google.com')
print('test')
driver.close()
4
dataviews

私の場合、エラーはwww-dataユーザーにありましたが、開発中の通常のユーザーにはありませんでした。このエラーは、このユーザーのxディスプレイを初期化する問題でした。そのため、ブラウザウィンドウを開かずにSeleniumテストを実行すると、問題は解決されました。

opts.set_headless(True)
4
Rogelio

既にchromeDriverをダウンロードしていると仮定すると、すでに複数のchromeタブが開いている場合にもこのエラーが発生します。

すべてのタブを閉じて再度実行すると、エラーは解消されます。

2

このエラーは、過去6か月間のテスト実行中にランダムに発生し(Chrome 76およびChromedriver 76でも発生します)、Linuxでのみ発生します。平均して、数百のテストごとに1つが失敗し、次のテストが正常に実行されます。

この問題を解決できませんでした。Pythonで、すべてのテストの派生元であるテストケースクラスのsetUp()のtry..exceptブロックでdriver = webdriver.Chrome()をラップしました。 Webdriver例外が発生した場合、10秒待機してから再試行します。

私が抱えていた問題を解決しました。エレガントではありませんが、動作します。

from Selenium import webdriver
from Selenium.common.exceptions import WebDriverException

try:
    self.driver = webdriver.Chrome(chrome_options=chrome_options, desired_capabilities=capabilities)
except WebDriverException as e:
    print("\nChrome crashed on launch:")
    print(e)
    print("Trying again in 10 seconds..")
    sleep(10)
    self.driver = webdriver.Chrome(chrome_options=chrome_options, desired_capabilities=capabilities)
    print("Success!\n")
except Exception as e:
    raise Exception(e)
0
The Stevie T