私はこの質問に関していくつかの答えがあることを知っていますが、これまでのところ何も役に立たなかったので、新しい質問を投稿しています。
最近、コンピューターを切り替えて以来、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)
こちらからダウンロードして、この最新の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/')
このエラーメッセージ...
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がデフォルトの場所は以下の画像のように各システムごとに:
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解決策:
同様の問題があり、オプション引数は特定の順序でなければならないであることを発見しました。私は、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/')
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) }
)
これが誰かを助けることを願っています。これは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()
私の場合、エラーはwww-dataユーザーにありましたが、開発中の通常のユーザーにはありませんでした。このエラーは、このユーザーのxディスプレイを初期化する問題でした。そのため、ブラウザウィンドウを開かずにSeleniumテストを実行すると、問題は解決されました。
opts.set_headless(True)
既にchromeDriverをダウンロードしていると仮定すると、すでに複数のchromeタブが開いている場合にもこのエラーが発生します。
すべてのタブを閉じて再度実行すると、エラーは解消されます。
このエラーは、過去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)