【问题标题】:Mac + Selenium + Chrome = cannot find Chrome binaryMac + Selenium + Chrome = 找不到 Chrome 二进制文件
【发布时间】:2016-09-19 04:03:33
【问题描述】:

您好,我正在尝试在 Mac 电脑上使用 Eclipse 设置 selenium。 当我下载 ChromeDriver 并将其放在以下文件夹中时:

System.setProperty("webdriver.chrome.driver","/Users/george/Downloads/chromedriver");
WebDriver driver = new ChromeDriver();

我运行代码。 然后我得到以下异常:

启动 ChromeDriver 2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4) 在端口 33424 上仅限本地 允许连接。线程“主”中的异常 org.openqa.selenium.WebDriverException:未知错误:找不到 Chrome 二进制文件(驱动程序信息:chromedriver=2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4),平台=Mac OS X 10.10.5 x86_64) (警告:服务器未提供任何堆栈跟踪 信息)命令持续时间或超时:312 毫秒构建信息: 版本:'2.53.0',修订:'35ae25b',时间:'2016-03-15 17:00:58' 系统信息:主机:'Georges-Mac-mini.local',ip:'192.168.1.2', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.10.5', java.version: '1.7.0_25' 驱动信息: org.openqa.selenium.chrome.ChromeDriver

所以我假设缺少一些二进制文件?请注意,我经常使用 Chrome 作为我的浏览器。我不知道这是否相关。 我的电脑是mac。我已经阅读了 ChromeDriver 网站,但我不明白该怎么做。我在导航到有点奇怪的路径时遇到问题:“Google Drive”而不是“Google/Drive”或类似的路径 “cd Chrome\ Apps.localized/”或“/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome”。我的意思是,重量??那些来回的斜线???我现在在 linux 上做了一些事情,但在这里.. 我被困住了,很困惑 在 Windows 上,事情要容易得多..您只需在本地下载一个 .exe 文件,将带有选项的驱动程序指向该文件,一切都很顺利。我找不到有关 mac 特定的信息。

谁能帮忙?

谢谢

【问题讨论】:

  • 你从这里下载了正确的二进制文件 (chromedriver_mac32.zip) chromedriver.storage.googleapis.com/index.html?path=2.21
  • 这可能会有所帮助:stackoverflow.com/questions/23978464/…
  • 关于第一条评论。那正是我下载的二进制文件。关于第二条评论,这正是我需要帮助的地方,因为我不知道 Mac 对二进制文件的内部保存以及对 Mac 应用程序、文件等的基本导航的不耐烦。这与 linux 完全不同。只是为了记录,我在几分钟前尝试了operadriver,并且像魅力一样工作,没有任何挖掘二进制文件等。
  • 也试过firefox,这个甚至不需要firefox驱动文件..
  • MAC没有问题,你可能没有为chrome驱动提供正确的路径。请检查您是否下载了适用于 linux 或 Mac 的 chrome 二进制文件

标签: java macos selenium-webdriver


【解决方案1】:

“找不到 Chrome 二进制文件”只是意味着操作系统找不到 chrome 应用程序。只需检查 chrome 安装目录。正确的目录应该是“/Applications/Google Chrome.app”。如果你从第三方平台下载你的 chrome,目录可能是“/Applications/Chrome.app”。它使操作系统无法找到您的 chrome。

【讨论】:

    【解决方案2】:

    堆栈跟踪表明它找不到 chrome webdrive 的二进制文件。如果您还没有,则需要下载它。下载chrome webdriver 后,将应用程序指向二进制文件。

    如果你有带空格的路径,比如

    /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

    你需要像这样使用反斜杠来转义空格

    /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome

    后跟一个空格的反斜杠\ 告诉参数解析器不要将该空格用作分隔符,而是将其作为路径的一部分。

    【讨论】:

      【解决方案3】:

      除了尝试带和不带斜杠的路径(ruby 驱动程序希望空格不会被转义)之外,这个问题也可能是由于 Chrome 和 Chromedriver 之间的版本不匹配造成的。

      具体来说,Chrome Canary 通常不受当前稳定的 Chromedriver 版本的支持。在https://sites.google.com/a/chromium.org/chromedriver/chromedriver-canary 链接了每晚构建。在 Mac 版本的搜索框中输入正确的前缀,然后滚动到最新版本——是的,界面很糟糕。

      这也很有可能不起作用。安装稳定的 Chrome 版本是最好的选择。

      【讨论】:

        【解决方案4】:

        我发现将 selenium-webdriver 升级到 3.142.3 并将 Capybara 升级到 3.20.2 为我解决了这个问题。这需要对我的 webdriver 配置进行一些更改:

        capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
          'goog:chromeOptions': {
             args: %w(--disable-gpu --headless --no-sandbox --window-size=1024,768)
          }
        )
        
        driver = Capybara::Selenium::Driver.new app, {
          browser: :chrome,
          desired_capabilities: capabilities,
          http_client: client,
        }
        

        【讨论】:

          【解决方案5】:

          当我意识到我之前没有安装 Chrome 浏览器来尝试使用它时,我遇到了这个"cannot find Chrome binary"。

          不要在家里这样做,伙计们......

          【讨论】:

            【解决方案6】:

            在路径中使用双斜杠,如下所示:

            //Test Data//Drivers//chromedriver
            

            并将 chrome 驱动程序 exe 复制并粘贴到其他位置。

            【讨论】:

            • windows操作系统使用Chrome驱动exe,windows也需要双斜线,Mac不需要它们
            猜你喜欢
            • 1970-01-01
            • 2012-07-15
            • 1970-01-01
            • 2017-04-09
            • 1970-01-01
            • 2020-09-25
            • 2021-11-17
            • 2021-05-22
            • 2021-06-13
            相关资源
            最近更新 更多