RobbieWareham が述べたように、要素が存在しない場合、find_element は例外をスローします。あなたはしたい:
- 要素が見つからないという例外をレスキューし、enter_page メソッドを呼び出します
- これらすべてを wait.until でラップして、無期限に実行されないようにします。
これは次のようになります。
wait = Selenium::WebDriver::Wait.new(:timeout => 5) # seconds
begin
element = wait.until do
begin
@driver.find_element(:id, "ctl00_cp_lblC")
rescue
enter_page
end
end
ensure
@driver.quit
end
Watirでは、それはより簡単になります. それは単に次のようになります。
browser.element(:id => "ctl00_cp_lblC").wait_until_present
または、要素が存在しないときに何かをする必要がある場合:
browser.wait_until(2) do
present = browser.element(:id => "ctl00_cp_lblC").present?
enter_page unless present
present
end