私のJenkinsではChromeが安定していません。ビルドを5回実行すると、1〜2回成功し、残りの3回は上記のエラーが発生します。
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");
私がすでに取ったいくつかのステップ:
このエラーメッセージ...
...ChromeDriverが新しいBrowsing Context、つまりChrome Browserセッションを開始または起動できなかったことを意味します。
提供したエラースタックトレースのスナップショットを確認しましたが、ChromeDriver 81.0.4044.69とGoogle 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がデフォルトの場所にインストールされていることを想定しています。
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();
_
その他の考慮事項-次のことを確認してください。
@Test
_をnon-rootユーザーとして実行します。driver.quit()
メソッド内でtearDown(){}
を呼び出します。あなたはいくつかの関連する議論を見つけることができます: