web-dev-qa-db-ja.com

org.openqa.Selenium.WebDriverException:不明なエラー:Chrome起動に失敗:Jenkinson Ubuntu 18.04でChromeDriver Seleniumを使用してクラッシュ

私のJenkinsではChromeが安定していません。ビルドを5回実行すると、1〜2回成功し、残りの3回は上記のエラーが発生します。

エラーのスナップショット: enter image description here

Chromeのコード:

ChromeOptions options = new ChromeOptions();
System.setProperty("webdriver.chrome.driver","/usr/local/bin/chromedriver");
options.addArguments("--headless");
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
driver = new ChromeDriver(options);
driver.get("https://mywebsite.com");
     

私がすでに取ったいくつかのステップ:

  1. Google chromeおよびchromeドライバに

  2. 設定:ビルドの前にXvfbを開始し、Jenkinsビルド設定でTrueにした後にシャットダウンします enter image description here

  3. ChromeDriver 81.0.4044.69

  4. Google Chrome 81.0.4044.129

  5. Ubuntu 18.04.4 LTS(GNU/Linux 4.15.0-99-generic x86_64)

5
Helping Hands

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

snapshot

...ChromeDriverが新しいBrowsing Context、つまりChrome Browserセッションを開始または起動できなかったことを意味します。


ディープダイブ

提供したエラースタックトレースのスナップショットを確認しましたが、ChromeDriver 81.0.4044.69Google Chrome 81.0.4044.129の使用について説明しましたが、それでも表示されます使用しているさまざまなバイナリのバージョン間の不一致です。おそらく、Chromeブラウザがシステム内のデフォルトの場所にインストールされていないか、JDKの不一致が原因です。さらに、ChromeDriver 81.0.4044.69(2020-03-17)は少し不安定で、 ChromeDriver 81.0.4044.138(2020-05-05) に置き換えられました

ただし、サーバー、つまりChromeDriverは、以下の画像のように、各システムのChromeデフォルトの場所にインストールされていることを想定しています。

Chrome_binary_expected_location

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

ChromeDriverのデフォルトの場所とWindowsへのChromeのインストールについての詳細な説明は、 にあります。


解決

標準以外の場所でChrome実行可能ファイルを使用している場合は、次のようにChromeバイナリの場所を上書きする必要があります。

  • コードベースのソリューション:

    _System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
    ChromeOptions options = new ChromeOptions();
    options.setBinary('/usr/bin/google-chrome');    //chrome binary location
    options.addArguments("--headless");
    options.addArguments("--no-sandbox");
    options.addArguments("--disable-dev-shm-usage");
    WebDriver driver = new ChromeDriver(options);
    driver.get("https://www.google.com/");
    //execute the remaining steps
    driver.quit();
    _
  • その他の考慮事項-次のことを確認してください。

    • [〜#〜] jdk [〜#〜]は現在のレベルにアップグレードされます JDK 8u251
    • Seleniumは現在のレベル Version 3.141.59 にアップグレードされます。
    • ChromeDriverが現在の ChromeDriver v81.0.4044.138 レベルに更新されます。
    • Chromeは、現在のChromeバージョン81.0.4044.138レベルに更新されます。 ( ChromeDriver v80.0リリースノート に従って)
    • クリーンプロジェクトワークスペースから[〜#〜] ide [〜#〜]および再構築必要な依存関係のみを使用してプロジェクトを作成します。
    • _@Test_をnon-rootユーザーとして実行します。
    • WebDriverおよびWeb Clientインスタンスを正常に閉じて破棄するには、常にdriver.quit()メソッド内でtearDown(){}を呼び出します。

参考文献

あなたはいくつかの関連する議論を見つけることができます:

2
DebanjanB