在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驱动程序呢?
答案 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人?)。我只是在这里猜测。