使用.text.include时未定义的方法'应该'?与watir和红宝石

时间:2015-04-10 23:46:35

标签: ruby rspec watir watir-webdriver

我正在尝试验证网页上的文字。 使用的代码行是:@browser.test.include?('Favorites').should==true

当脚本执行此行时,我收到错误:undefined method 'should' for false:FalseClass (NoMethodError)

以下是完整代码:

require 'watir-webdriver'    
require 'rspec'


@browser=Watir::Browser.new :ff
@browser.goto('http://enoteca.demo.episerver.com/en-US/')
@browser.link(:text=>'Register').wait_until_present
@browser.text.include?("Favorites").should==true

2 个答案:

答案 0 :(得分:1)

您需要定义包含一个或多个示例的example group。例如:

require 'watir-webdriver'
require 'rspec'

describe "an example group" do 
  it "is an example" do
    browser = Watir::Browser.new 
    browser.goto('www.example.org')
    browser.text.include?('Domain').should==true
  end
end

如果您将上述内容放在以_spec.rb结尾的文件中(例如foo_spec.rb),则可以在命令行或终端rspec foo_spec.rb运行它。完成后,rspec将返回状态:

Finished in X.XX seconds (files took X.XXXX seconds to load)
1 example, 0 failures

此外,should方法已在rspec3中弃用(尽管它现在仍然有效)。事实上,如果您使用should,rspec3将返回弃用警告。

  

未明确使用来自rspec-expectations'旧should语法的:should   不推荐使用语法。使用新的:expect语法或使用:should明确启用config.expect_with(:rspec) { |c| c.syntax = :should }

以上是与上述相同的规范,但使用expect代替should

describe "an example group" do 
  it "is an example" do
    browser = Watir::Browser.new 
    browser.goto('www.example.org')
    expect(browser.text).to include 'Domain' # expect method instead of should
  end
end

答案 1 :(得分:0)

虽然我认为你应该使用一个示例组(如@orde所提到的),但这在技术上并不是必需的。您可以通过添加RSpec::Expectations

来使用示例组之外的期望
require 'watir-webdriver'    
require 'rspec'

# Include the expectations so that they do not need an example group
include RSpec::Expectations

@browser=Watir::Browser.new :ff
@browser.goto('http://enoteca.demo.episerver.com/en-US/')
@browser.link(:text=>'Register').wait_until_present
@browser.text.include?("Favorites").should==true