0

我正在为 Ruby 使用 Selenium-WebDriver,并且我正在尝试验证页面上是否存在文本。我已经做了很多搜索并尝试了很多东西,我发现最好的答案是使用类似的东西

  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 的值,则将失败。实际发生的情况是,如果 :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 测试

4

1 回答 1

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

更新


在评论部分回答您的问题。

有两种“等待”,隐式等待和显式等待。你可以在这里阅读更多关于它的信息。您的代码失败的原因是您搜索的是“id”=>“body”而不是“tag_name”=>“body”。通常,所有文本都包含在 DOM 中的“body”HTML 标记中。

于 2012-10-16T20:51:50.980 回答