所以我总是用perl编写脚本 但是尝试使用Ruby,所以这个问题可能听起来很愚蠢,但生病了。
我正在ruby Test :: Unit中编写Selenium Webdriver脚本 下面是一些示例代码。
def test_runit
@driver.get(@base_url + "/")
@driver.find_element(:id, "gbqfq").clear
@driver.find_element(:id, "gbqfq").send_keys "selenium"
@driver.find_element(:id, "gbqfb").click
@driver.find_element(:link, "Selenium - Web Browser Automation").click
assert(@driver.find_element(:tag_name => "body").text.include?("administration tasks"),"the assert works")
@driver.find_element(:link, "Support").click
end
输出
ruby runit.rb
Loaded suite runit
Started
.
Finished in 9.732149 seconds.
1 tests, 2 assertions, 0 failures, 0 errors
测试时我需要检查页面上是否有文字。
使用assert
工作正常。
但是如果它失败了,测试就会在那里和那里结束,并且不会继续进行。
在perl中,我可以使用像verify
这样的东西,它基本上标记为失败并继续前进。
我希望得到像这样的结果
ruby runit.rb
Loaded suite runit
Started
.
Finished in 9.732149 seconds.
1 tests, 1 assertion, 1 failure, 0 errors
但是验证对于ruby测试单元不起作用,或者可能是我做错了。
有人可以指点一些示例代码吗? 感谢
答案 0 :(得分:0)
我没有听说Ruby有“验证”功能,类似于perl,因为“assert”意味着,如果为false,程序会立即停止。
我建议你重新实现你的代码并给它一个“无保护”:
body_element = @driver.find_element(:tag_name => "body")
if body_element
assert(body_element.text.include?("administration tasks"),"the assert works")
end
答案 1 :(得分:0)
得到了!! 人们需要使用救援。 谢谢回复。
begin
assert(@driver.find_element(:tag_name => "body").text.include?("text to check"),"the assert works")
rescue Test::Unit::AssertionFailedError
@verification_errors << $!
end
答案 2 :(得分:0)
是的,的确如此。你需要救援命令。
但是,您可以在测试助手中轻松创建与此类似的验证方法
def verify
$verification_errors = [] if $verification_errors.nil?
assert yield
rescue Test::Unit::AssertionFailedError => afe
$verification_errors << afe
puts "ERROR: #{afe.message}"
end
然后你可以称之为:
verify{ @driver.find_element(:tag_name => "body").text.include?("foobar") }
在测试结束时,在拆解过程中,您需要检查是否存在任何验证错误:
assert $verification_errors.empty? or $verification_errors.nil?