【问题标题】:Selenium WebDriver can't find Firefox when installed with Homebrew caskSelenium WebDriver 与 Homebrew cask 一起安装时找不到 Firefox
【发布时间】:2015-03-23 16:20:02
【问题描述】:

Homebrew cask 在 Mac OS X 上做了一些应用程序链接魔术。显然这还不够好,因为 Selenium WebDriver 寻找 Firefox 可执行文件找不到它。以下是来自RSpec 测试运行的错误消息,Capybara 驱动 Selenium。

提示 Firefox 可执行文件位置的好方法是什么?

Failure/Error: Unable to find matching line from backtrace
 Selenium::WebDriver::Error::WebDriverError:
   Could not find Firefox binary (os=macosx). Make sure Firefox is installed or set the path manually with Selenium::WebDriver::Firefox::Binary.path=
 # /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/binary.rb:127:in `path'
 # /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/binary.rb:60:in `execute'
 # /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/binary.rb:34:in `start_with'
 # /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/launcher.rb:70:in `start_silent_and_wait'
 # /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/launcher.rb:35:in `block in launch'
 # /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/socket_lock.rb:20:in `locked'
 # /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/launcher.rb:32:in `launch'
 # /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/bridge.rb:24:in `initialize'
 # /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/common/driver.rb:31:in `new'
 # /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/common/driver.rb:31:in `for'
 # /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver.rb:67:in `for'
 # /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/capybara-2.4.4/lib/capybara/selenium/driver.rb:13:in `browser'

【问题讨论】:

  • 正如标题所说,FF 是通过 Homebrew cask 安装的。它作为 Mac 应用程序运行良好,但 Selenium-WebDriver 无法发现它的可执行文件。

标签: selenium selenium-webdriver capybara homebrew homebrew-cask


【解决方案1】:

正如错误消息所说:您必须为自定义应用程序路径指定 Selenium::WebDriver::Firefox::Binary.path

# in spec_helper.rb
require 'selenium/webdriver'

Selenium::WebDriver::Firefox::Binary.path =
  "/opt/homebrew-cask/Caskroom/Firefox/latest/Firefox.app/Contents/MacOS/firefox"

如果你不想接触测试框架,你可以将firefox安装到/Applications(selenium搜索的默认路径)使其工作,而无需设置Binary.path

brew cask install --appdir="/Applications" firefox

【讨论】:

  • 我一直在寻找木桶方面的解决方案,但似乎很快就没有了,所以我会接受这个答案。
  • 我用如何将 firefox 安装到默认目录更新了我的答案(这可能是您正在寻找的“在木桶端”的修复)。
  • 不错!这个答案的隐含基础是,默认情况下,Cask 二进制文件符号链接到 /Users/<You>/Applications,但 selenium 驱动程序正在系统范围内的 /Applications 文件夹中查找,因为它是 GUI 应用程序的常见默认安装路径。
  • 只有第二个(精确二进制的路径)对我有用。还得require 'selenium/webdriver'
【解决方案2】:

我刚刚添加了 Selenium 的代码来专门查找此目录,而无需设置或更改 appdir。它将在 selenium-webdriver gem 2.49+ 中提供

【讨论】:

    猜你喜欢
    • 2014-06-22
    • 1970-01-01
    • 2016-01-16
    • 2023-03-15
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    相关资源
    最近更新 更多