0

私はSelenium-WebDriverforRubyを使用しており、テキストがページに存在することを確認しようとしています。私は多くの検索を行い、多くのことを試しましたが、私が見つけた最良の答えは、次のようなものを使用することです。

  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ロケーターを調べましたが、タグを単純化して使用できるようにする方法について非常に混乱していました。どんな助けでも大歓迎です。どうもありがとうございます。私からの情報がさらに必要な場合は、私に知らせてください。できるだけ早く提供します。

Firefox14.0.1でのSelenium-WebDriver2.25テストでRuby1.93を使用しています

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

アップデート


コメント欄であなたの質問に答えてください。

「待機」には、暗黙的待機と明示的待機の 2 種類があります。詳細については、こちらをご覧ください。コードが失敗した理由は、「tag_name」=>「body」ではなく「id」=>「body」で検索していたためです。通常、すべてのテキストは DOM の「body」HTML タグ内に含まれます。

于 2012-10-16T20:51:50.980 に答える