2

「begin ..ensure」メソッドを使用して element1 をクリックした後、element2 が Web ページに表示されるのを待機しようとしています。element2 が存在しない場合は、終了してエラーをログに記録します。しかし、element2 は数秒で表示されますが、次のコードは確実にブロックし、ドライバーを終了させます。何が問題なのかわからない。前もって感謝します:

$driver.find_element(:id, "element1").click
wait = Selenium::WebDriver::Wait.new(:timeout => 10) # seconds
begin
  wait.until {$driver.find_element(:id, "element2")}
ensure
  #Logger login error to text error log file
  $driver.quit #---------------------------> always goes to ensure and quits
end   
$driver.find_element(:id, "element2").click -->> never gets here
4

2 に答える 2

0

rescueの代わりに使用したいensure

  • ensure常に実行されます。
  • rescue例外が発生した場合にのみ実行されます (つまり、要素が見つからない場合にのみ終了します)

試す:

begin
  wait.until {$driver.find_element(:id, "element2")}
rescue
  #Logger login error to text error log file
  $driver.quit #---------------------------> always goes to ensure and quits
end  
于 2013-04-11T15:44:08.457 に答える