【问题标题】:Cucumber NoMethodError When Running Second Scenario in a Feature在功能中运行第二个场景时 Cucumber NoMethodError
【发布时间】:2011-04-11 23:56:02
【问题描述】:

我有一个简单的 Cucumber 功能,有两个场景。它使用 watir-webdriver 执行基本的登录和注销。第一个场景(登录)运行良好,watir 方法执行没有问题。当第二个场景运行时(通过运行整个功能),我得到:

NoMethodError: 未定义的方法 `wait_until' for nil:NilClass

解决这个问题后发现,在第二种情况下对 watir-webdriver 方法的任何调用都会引发此错误,而在第一种情况下相同的方法可以正常工作。我假设我有范围问题,并且在我的第二个场景的步骤定义中尝试了“需要'watir-webdriver'”但无济于事。我已经包含了这两个场景的步骤定义。我已经更新了我所有的 gem,并在 Ruby 1.9.2 上尝试了 Cucumber 0.10.0 和 0.10.2。

对不起;我对 ruby​​/cucumber/watir 很陌生,并且在发布前几个小时试图解决这个问题。非常感谢您的任何建议!

require "watir-webdriver"

Given /^I have the proper credentials$/ do
  @username = "matt"
  @password = "abc123"
end
When /^I am on the login page$/ do
  @browser = Watir::Browser.new(:firefox)
  @browser.goto ("http://dev.example.net")
end
When /^I enter username and password$/ do
  @browser.text_field(:class, /x-form-field x-form-text/).set @username
  @browser.text_field(:index, 1).set @password
  sleep 1
  @browser.button(:text, 'Login').click
end
Then /^I should should be granted access$/ do
  @browser.wait_until { @browser.text.include? "Global Priorities" }
  fail unless @browser.text.include? 'Global Priorities' 
end

Given /^I am currently logged in$/ do
  @browser.wait_until { @browser.text.include? "Welcome: #{@username}" }
  fail unless @browser.text.include? "Welcome: #{@username}"
end
When /^I click the Log Out button$/ do
  @browser.button(:text, "Log Out").click
end
Then /^I should be logged out$/ do
  pending
end

【问题讨论】:

  • 我通过设置我的 env.rb 文件来启动浏览器实例(对所有场景都通用),然后从步骤本身中删除新的浏览器实例来解决这个问题。谢谢。

标签: ruby cucumber watir


【解决方案1】:

马特,看来你现在明白了。每当您看到有关 nil:NilClass 的未定义方法的错误时 - 这意味着尝试使用该方法的任何东西都不再存在。

这可能意味着您为浏览器对象使用了错误类型的变量(实例/类/全局),或者您在第二次运行期间未访问的某个地方定义了此浏览器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多