好的,我在 Rails 2 应用程序的黄瓜场景中遇到了一个奇怪的错误。
我们在 Capybara Webkit 下运行我们的 Cucumber 套件。这在大多数情况下工作正常,但我有一个在 ajax 事务期间失败的测试,因为它看不到应该出现在页面上的元素。
我最初虽然这是一个竞争条件并提高了最大超时时间,但无论我们等待多长时间,都找不到该元素。
所以我想看看它的实际效果,所以我尝试切换到 Selenium,这样我就可以端到端地观看整个测试。
但是,每当我尝试通过 selenium 运行它时,它会在第一个设置步骤中直接失败并出现错误:
Given I am logged in # features/step_definitions/users/authentication_steps.rb:5
HTTP request path is empty (ArgumentError)
/home/dvg/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:1860:in `initialize'
/home/dvg/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:2093:in `initialize'
./features/support/assumption.rb:48:in `login'
./features/step_definitions/users/authentication_steps.rb:7:in `/^I am logged in$/'
features/requests/user_requests_a_thing.feature:4:in `Given I am logged in'
我已经把我能想到的所有设置都搞砸了,试图让它发挥作用。
我试过了:
- 从 Firefox 切换到 ChromeDriver
- 定义应用主机
- 定义一个 NO_PROXY 环境变量以防代理服务器妨碍(我认为这是 Selenium Webdriver 所关注的)
- 重构以使用 path_helpers 而不是访问“/login”样式的步骤
- 更新捆绑包
特别注意事项:
- 我们是一个刚刚从 Ruby 1.8.7 转换为 1.9.3 的 rails 2.3 应用程序
- 我们正在使用最新的 Cucumber/Capybara