使用capybara / rails运行selenium时,如何配置服务器?

通常我在端口3000使用rails dev服务器。

Capybara / Cucumber使用Capybara.server_port = 31337 。 如果我从默认驱动程序切换到selenium,它看起来像是尝试在端口80上连接。

我想了解:

  • 使用selenium时,是否需要在测试环境中单独实例化测试服务器。
  • 如果上述问题的答案是肯定的,我怎样才能做到这一点,这样我就可以在网络驱动程序之间无缝切换,而无需不断更改内容?

如果有人有一个env.rb配置的例子,请帮助我告诉我!

谢谢!

克里斯。

如果使用selenium,则应在测试环境中启动Web服务器。 您可以在与开发不同的端口上启动它。 然后你应该配置Capybara使用该端口:

  Capybara.run_server = true #Whether start server when testing Capybara.server_port = 8200 Capybara.default_selector = :css #:xpath #default selector , you can change to :css Capybara.default_wait_time = 5 #When we testing AJAX, we can set a default wait time Capybara.ignore_hidden_elements = false #Ignore hidden elements when testing, make helpful when you hide or show elements using javascript Capybara.javascript_driver = :selenium #default driver when you using @javascript tag # Other option is: # Capybara.javascript_driver = :webkit 

如果您不希望每次运行黄瓜场景之前都启动服务器,我建议您使用capybara webkit驱动程序。 所有javascript场景都将在后台运行。 它也适用于持续集成服务器。

如果您使用的是Linux平台,则capybara-webkit需要运行X服务器。 要设置它,你可以使用无头gem。 这是黄瓜的无头配置:

 # place code below in features/support/headless.rb if Capybara.current_driver == :webkit require 'headless' headless = Headless.new headless.start at_exit do headless.destroy end end 

这可能会也可能不会回答您的问题,但这是我的env.rb文件(相关位)。

 Capybara.app_host = "http://0.0.0.0:3000" Capybara.server_port = 3000 

我也有这个:

 Capybara.register_driver :iphone do |app| require 'selenium/webdriver' profile = Selenium::WebDriver::Firefox::Profile.new profile['general.useragent.override'] = "iPhone" Capybara::Selenium::Driver.new(app, :profile => profile) end 

也许你可以在register_driver位中使用Capybara.app_host和.server_port行,并在你的Cucumber脚本中切换驱动程序。 :/