这两种设置Selenium驱动程序的方法有什么区别?

时间:2012-07-12 17:49:52

标签: ruby-on-rails ruby selenium

在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

这两种方式(remote和firefox)之间有什么区别?

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

1 个答案:

答案 0 :(得分:2)

:remote意味着您将在:url使用运行Selenium Server的远程服务器。在这种情况下,selenium服务器在localhost上运行。由于未识别任何浏览器,因此它将使用服务器设置的任何默认浏览器。

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

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

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

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