Selenium-Webdriver を使用して Ruby でスクリプトを作成しており、特定の要素 ID が存在するまで現在のページを更新するループを作成しようとしています。私の現在のコードは次のようになります。
until driver.find_element(:id => "test").displayed?
puts "#{driver.title} not live - reloading..."
driver.navigate.refresh
end
ただし、実行すると、ページを更新せずにスクリプト全体が停止します (ただし、エラーは発生しません)。を に置き換えてみましたdriver.navigate.refresh
がdriver.get "http://website"
、同じ結果が得られます。
問題を診断するために、最初の行が何を返しているかを確認しようとしました。ID「test」の要素が見つかるとputs driver.find_element(:id => "test").displayed?
、コンソールに「true」が返されます。要素「test」が見つからない場合、コンソールは何も返さずにハングします。スクリプトに要素の検索を強制的に中止させるには、ある種のタイマーを実装する必要があると思いますが、これを動的に把握することを望んでいました (ページの解釈にかかった時間によって異なります)。
このループを機能させるための助けをいただければ幸いです。