我正在使用capybara,capybara-webkit,capybara-screenshot和黄瓜。 (Ruby 1.9.3,Rails 3.1.3)和Capybara.javascript_driver = :webkit
也设置为env.rb
不幸的是,使用@javascript
运行黄瓜规范将永远不会因为某些原因而成功,错误截图只是捕获example.com。
我实际尝试打开的URL是使用我的某个模型的rails路由器结果生成的,例如与visit products_url
那我怎么能避免它最终查询example.com?
非常欢迎任何意见。
仅仅因为评论搞砸了 - 我发现这就是解决方案:
Capybara.run_server = true
Capybara.server_port = 7787
Before '@javascript' do
Capybara.app_host = "http://127.0.0.1:#{Capybara.server_port}"
end
答案 0 :(得分:12)
请尝试使用visit products_path
。他们不建议在README的“陷阱”部分使用绝对URL。
答案 1 :(得分:1)
对我来说,有一个很多运动鞋“陷阱”(我正在使用Capybara和Rspec)。最初是在我的规范中:
visit "foos/5"
这与Rack::Test
一起工作正常但是当我想切换到webkit
驱动程序来测试js交互时,我得到了异常(无法加载URL:file:///产品(Capybara: :驱动::的Webkit :: WebkitInvalidResponseError))
我必须做的是改变我访问的路径,如下:
visit "/foos/5"
SUCCES !!
答案 2 :(得分:1)
这是另一个可能存在此问题的潜在问题。我正在测试动作缓存,关键的Rails生成看起来像“views / www.example.com / products”。即使您使用products_path作为URL,也会发生这种情况。这可能导致需要设置您的服务器名称,以便您可以提前知道预期的缓存键。