capybara-webkit在无头工作时使用哪个端口和域?

时间:2012-02-17 11:16:41

标签: ruby-on-rails webkit cucumber capybara headless

我有一个应用程序,它使用存储在表中的域来确定网站的某些方面。如果在db中找不到域,则会生成错误。

当我正常使用黄瓜测试时,我使用域localhost,一切都按预期工作。当我尝试使用capybara-webkit和无头测试(用于测试网站的javascript部分)时,我发现localhost没有找到域名错误。

任何人都可以告诉我如何确定capybara-webkit和headless正在使用的域和端口,以便我可以确保我可以提前插入表中的信息。或者,也可以提前设置Capybara。

我尝试了以下但没有成功(虽然这一切都适用于我的无js /无头测试)。

Capybara.app_host = "http://localhost"
Capybara.javascript_driver = :webkit

if Capybara.current_driver == :webkit
  require 'headless'

  headless = Headless.new
  headless.start
end

1 个答案:

答案 0 :(得分:1)

经过一些反复试验,我发现了一些有效的方法。我停止使用localhost作为数据库中的引用,而是使用127.0.0.1。然后,我修改了env.rb中的代码,如下所示。

Capybara.javascript_driver = :webkit

if Capybara.current_driver == :webkit
  require 'headless'

  @headless = Headless.new
  @headless.start
end

Before('@javascript') do
  @javascript = true
end

Capybara.app_host = @javascript.present? ? nil : "http://127.0.0.1"

我意识到@javascript变量在这里是过剩的,但我在其他地方使用它。我不确定它为什么会起作用,但确实如此!