Watir / MiniTest - 未定义的局部变量或方法'浏览器'

时间:2013-10-31 11:19:14

标签: ruby variables watir minitest

我在过去一周内创建了66个watir脚本,以便在客户网站上自动化测试。

但是我最近发现了一个名为MiniTest的测试框架,我现在正试图实现它。

我将URL设置为变量的原因是因为有5个不同的站点需要运行这些测试,因此当他们希望我在不同的网站上运行我的包时,我只需更新该1个变量而不是在每个单独的测试中。

require 'minitest/autorun'
require "watir-webdriver"

class MPTEST < MiniTest::Unit::TestCase

def setup()
    url = "http://thewebsite.com/"
    $browser = Watir::Browser.new :chrome
    $browser.goto url
end

def test_myTestCase
    $browser.link(:text, "Submit your CV").click
    sleep(2)
    $browser.button(:value,"Submit").click
    assert($browser.label.text.includes?("This field is required"))

def teardown
    $browser.close
end

end

运行时,我收到以下输出:

NameError: undefined local variable or method 'browser' for #<MPTEST:0x4cc72f8>c:/directory stuff...

有什么想法吗?

编辑我有浏览器工作但是现在我的断言存在问题:

新代码:

require 'minitest/autorun'
require "watir-webdriver"

class MPTEST < MiniTest::Unit::TestCase

def setup()
    url ="http://thewebsite.com"
    $browser = Watir::Browser.new :chrome
    $browser.goto url
end

def test_myTestCase
    $browser.link(:text, "Submit your CV").click
    sleep(2)
    $browser.button(:value,"Submit").click
    assert($browser.label.text.includes?("This field is required"))
end

def teardown
    $browser.close
end

end

错误是:

NoMEthodError: undefined method 'includes?' for "":String

2 个答案:

答案 0 :(得分:1)

在我看来,您可以使用@browser代替$browser(但问题可能不在此代码中)

答案 1 :(得分:0)

例外

NoMEthodError: undefined method 'includes?' for "":String

由于字符串,在这种情况下$browser.label.text返回的值没有includes?方法。

您真正想要的方法是include?(无复数):

assert($browser.label.text.include?("This field is required"))