0

在一个 Ruby on Rails 项目中,我发现了这个方法,其目标是根据环境检索 Selenium 驱动程序。(开发、测试或生产)

def driver
    @driver ||= begin
      if Rails.env.production?
        driver = Selenium::WebDriver.for :remote, url: 'http://localhost:4444/wd/hub'
      else
        driver = Selenium::WebDriver.for :firefox
      end
      driver.manage.timeouts.implicit_wait = 1
      driver
    end
  end

当然,我阅读了官方文档,但仍然不是很清楚:

http://code.google.com/p/selenium/wiki/RemoteWebDriver - http://code.google.com/p/selenium/wiki/FirefoxDriver

这两种方式(远程和Firefox)有什么区别?

特别是,对于删除的方式,为什么将指向的主机设置为 localhost...确实,如果选择了 localhost,为什么不选择 firefox 驱动程序呢?

4

1 回答 1

2

:remote 意味着您将使用在 :url 上运行 Selenium Server 的远程服务器。在这种情况下,硒服务器在本地主机上运行。因为没有识别浏览器,它将使用服务器设置的任何默认浏览器。

:firefox 意味着它将尝试在脚本运行的同一个盒子上使用 firefox。

您可以在 ruby​​bindings 的介绍页面上看到这两个示例。 http://code.google.com/p/selenium/wiki/RubyBindings

对于更一般的文档资料,这可能是一个好地方... http://selenium.googlecode.com/svn/trunk/docs/api/rb/index.html

至于为什么有人会这样?也许在 prod 环境中,除了开发此代码的人之外,其他人根据它所在的平台(chrome,即 ff 等)控制 selenium 服务器(就像一些无法访问代码的 prod 人?)。我只是在这里猜测。

于 2012-10-28T01:43:50.150 回答