更新:
我正在运行下面的代码来执行我的示例测试用例:(Windows 7,Watir 3.0.0,Watir-webdriver-0.6.1)
require "watir-webdriver"
require 'test/unit'
class Teste1
$var = Watir::Browser.new :chrome
def met1
$var.goto 'google.com'
$var.text_field(:name, "q").set 'sample'
$var.button(:name =>'btnG').click
end
end
class Teste2 < Test::Unit::TestCase
$test = Teste1.new
def test_gomet1
$test.met1()
end
end
浏览器打开但脚本会引发以下错误:
test_gomet1(Teste2):
Errno::ECONNREFUSED: No connection could be made because the target machine actively refused it. - connect(2)
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:82:in `response_for'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:38:in `request'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:598:in `raw_execute'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:576:in `execute'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:99:in `get'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/common/navigation.rb:14:in `to'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.1/lib/watir-webdriver/browser.rb:63:in `goto'
maisum.rb:11:in `met1'
maisum.rb:21:in `test_gomet1'
任何人都可以帮助我吗?
答案 0 :(得分:4)
我无法为test_closeVar
测试获得该异常,但是我可以为其他两个测试重现它。当您尝试在浏览器关闭后与浏览器进行交互时,您会收到该异常。
使用Test :: Unit时,请记住测试按字母顺序运行。因此,test_closeVar
测试将在test_gomet1
和test_gomet2
运行之前关闭浏览器。 <{1}}和test_gomet1
将抛出该异常,因为浏览器已关闭。
作为快速修复,您可以在测试名称中添加数字,以使其按特定顺序运行。
长期解决方法实际上是让你的测试独立,这样订单无关紧要。
<强>更新强>
有几点意见:
解决方法:看起来Chrome浏览器不喜欢在测试用例之外声明。我不明白为什么,但快速解决方法是在测试用例的设置中声明浏览器。如果您想为每个测试使用相同的浏览器,只要它尚不存在就可以声明它。
以下内容将会运行(尽管我建议将其清理以减少全局变量的使用):
test_gomet2