我正在Rails项目中设置Cucumber测试。使用默认驱动程序时,一切正常。但是,当我尝试使用:selenium_chrome
驱动程序时,浏览器尝试加载example.com
而不是本地Rails服务器。知道我缺少什么吗?
我的步骤如下:
Before do |scenario|
Capybara.current_driver = :selenium_chrome
end
When(/^I visit the posts page$/) do
visit posts_url
end
运行功能时,可以看到Rails服务器已启动:
Using the default profile...
Feature: Posts
Capybara starting Puma...
* Version 3.12.0 , codename: Llamas in Pajamas
* Min threads: 0, max threads: 4
* Listening on tcp://127.0.0.1:62056
但是,弹出的Chrome窗口正在尝试访问http://www.example.com/posts
而不是http://127.0.0.1:62056/posts
我在某处缺少配置步骤吗?
相关说明:如果要使用Selenium运行所有测试,是否应该将Capybara.current_driver
行放在Before
块中?我尝试将其添加到features/support/env.rb
中,但似乎没有任何效果。
我在MacOS 10.14.4上运行了Chrome 73.0.3683.86和Rails 5.2.2。
答案 0 :(得分:1)
如果要使用:selenium_chrome
作为默认驱动程序,则可以设置Capybara.default_driver = :selenium_chrome
。
关于example.com
的问题,这是因为您正在访问posts_url
,并且在测试环境中将Rails的默认主机名设置为example.com
。您可以访问posts_path
,这将允许Capybara将主机名默认为localhost,或更新测试环境配置,以便url帮助器生成您期望的url。
答案 1 :(得分:0)
您需要设置水豚app_host
配置,例如Capybara.app_host = ...
。查看完整文档here
通常,您在spec_helper.rb
内设置Capybara配置,以便在所有规格中都启用它,例如:
Capybara.configure do |config|
config.current_driver = :selenium_chrome
config.app_host = ...
end
希望能回答您的问题吗?