web-dev-qa-db-ja.com

Seleniumは、UbuntuでChromeドライバーを実行すると「不明なエラー:chrome binaryが見つかりません

chrome最新のubuntuでドライバーを使用してSelenium [Java]テストを実行しようとしています。[16.04]

次のエラー/例外が発生します。実験として、ChromeDriverバイナリをネイティブの「helloworldApp」に置き換えました。 Seleniumがバイナリを実行していることがわかりました。

ポート15306でChromeDriver 2.27.440175(9bc1d90b8bfa4dd181fbbf769a5eb5e575574320)を開始」がchrome binaryから来ています。しかし、バイナリ?

Windowsではすべて正常に動作します。

ご意見をお聞かせください。

     [Java] Starting ChromeDriver 2.27.440175 (9bc1d90b8bfa4dd181fbbf769a5eb5e575574320) on port 15306
     [Java] Only local connections are allowed.
     [Java] Exception in thread "main" org.openqa.Selenium.WebDriverException: unknown error: cannot find Chrome binary
     [Java]   (Driver info: chromedriver=2.27.440175 (9bc1d90b8bfa4dd181fbbf769a5eb5e575574320),platform=Linux 4.8.0-46-generic x86_64) (WARNING: The server did not provide any stacktrace information)
     [Java] Command duration or timeout: 328 milliseconds
     [Java] Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
     [Java] System info: Host: 'geo-VirtualBox', ip: '127.0.1.1', os.name: 'Linux', os.Arch: 'AMD64', os.version: '4.8.0-46-generic', Java.version: '9-internal'
     [Java] Driver info: org.openqa.Selenium.chrome.ChromeDriver
     [Java]     at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Java.base@9-internal/Native Method)
     [Java]     at Sun.reflect.NativeConstructorAccessorImpl.newInstance(Java.base@9-internal/NativeConstructorAccessorImpl.Java:62)
     [Java]     at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Java.base@9-internal/DelegatingConstructorAccessorImpl.Java:45)
     [Java]     at Java.lang.reflect.Constructor.newInstance(Java.base@9-internal/Constructor.Java:453)
     [Java]     at org.openqa.Selenium.remote.ErrorHandler.createThrowable(ErrorHandler.Java:206)
     [Java]     at org.openqa.Selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.Java:158)
     [Java]     at org.openqa.Selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.Java:678)
     [Java]     at org.openqa.Selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.Java:249)
     [Java]     at org.openqa.Selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.Java:131)
     [Java]     at org.openqa.Selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.Java:144)
     [Java]     at org.openqa.Selenium.chrome.ChromeDriver.<init>(ChromeDriver.Java:170)
     [Java]     at org.openqa.Selenium.chrome.ChromeDriver.<init>(ChromeDriver.Java:138)
9
George

問題が見つかりました。私のLinuxシステムでは、Google Chromeブラウザがインストールされていません。

ChromeDriverバイナリにはブラウザの実装が含まれているという印象を受けました。これが間違っていることに気付きました。ChromeDriverバイナリは、Google Chromeを呼び出すSeleniumラッパーです。

例外メッセージ「Selenium.WebDriverException:unknown error:cannot find Chrome binary」は紛らわしい。「Chromeブラウザがインストールされていない」などと言っていたら、もっと簡単だっただろう。

ありがとうジョージ

31
George

バイナリの場所を指して、問題を修正するのに役立ちました。

変更後:

capabilities: {
    'browserName': 'chrome'
}

に:

capabilities: {
    'browserName': 'chrome',
    "chromeOptions": {
      'binary': "C:\\Program Files (x86)\\Google\\Chrome Beta\\Application\\chrome.exe",
      args: [],
      extensions: [],
  }
1
Di V

NPMからChromeをインストールできます。

https://www.npmjs.com/package/chromium

npmインストールクロム

次に、chrome binary:

const chromium = require('chromium');

capabilities: [
    {
        browserName: 'chrome',
        'goog:chromeOptions': {
            binary: chromium.path
        },
    },
],
0
alansiqueira27