我正在使用Selenium-WebDriver for Ruby,我正在尝试验证页面上是否存在文本。我做了很多搜索并尝试了很多东西,我找到的最佳答案是使用像
这样的东西 def check_page(textcheck)
if verify {@driver.find_element(:id=>"body").text.include?(textcheck)}
yield it_to "fail"
else
yield it_to "pass"
end
end
如果正文中存在textcheck的值,则预期结果将被传递,如果textcheck的值不存在于正文中则会失败。实际发生的是if:id =>“body”存在然后传递,如果它不存在则无论是.text.include都会失败?(textcheck)
如果有人能指出我如何使用Ruby中的Selenium-WebDriver验证文本是否出现在正确的方向,我们将不胜感激。我找到了某些我可以做的事情的解决方法
verify {@driver.find_element(:tag_name, 'h1').text!=(textcheck)}
但是我试图验证的元素我不能轻易搞定。我查看了css定位器,并对如何简化标签非常困惑,所以我可以使用它。任何帮助将不胜感激。非常感谢你。如果您需要我的更多信息,请告诉我,我会尽快提供。
我在Firefox 14.0.1中使用Ruby 1.93和Selenium-WebDriver 2.25测试
答案 0 :(得分:4)
我是这样做的
@wait = Selenium::WebDriver::Wait.new(:timeout => 30)
begin
@wait.until { @driver.find_element(:tag_name => "body").text.include?("your text")}
rescue
puts "Failure! text is not present on the page"
#Or do one of the options below
#raise
#assert_match "true","false", "The text is not present"
end
更新
在评论部分回答您的问题。
有两种“等待”,隐式等待和显式等待。您可以阅读更多相关信息here。您的代码失败的原因是您通过“id”=>“body”而不是“tag_name”=>“body”进行搜索。通常,所有文本都包含在DOM中的“body”HTML标记中。