0

以下のコードに従ってください。

driver.get "https://example.com/"
driver.find_element(:class, "button").submit
driver.navigate.refresh
wait = Selenium::WebDriver::Wait.new(:timeout => 10) # seconds
element = wait.until { driver.find_element(:name => "username") }

element : usernameを含むページが来るまで、前のページを更新し続けることを念頭に置いてコードを書きました。しかし、私のコードはその要件を満たしていないようです。したがって、スクリプトは次のようにエラーをスローします」

エラー

C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.27.2/lib/selenium/webdr
iver/common/wait.rb:57:in `until': timed out after 10 seconds (Unable to locate
element: {"method":"name","selector":"username"})} (Selenium::WebDriver::Error::
TimeOutError)

私の要件を満たす良いアイデアはありますか?

ありがとう、

4

1 に答える 1

2

selenium-webdriver でこれを行うための組み込みの方法に出くわしていないので、次のようにします。

#Submit your first page
driver.get "https://example.com/"
driver.find_element(:class, "button").submit

#Refresh page until your element appears
end_time = Time.now + 10 #seconds
begin
    element = driver.find_element(:name => "username")
rescue Selenium::WebDriver::Error::NoSuchElementError
    if Time.now < end_time
        driver.navigate.refresh
        retry
    end
end

基本的に、これは要素を見つけようとしています。見つからない場合は、例外をキャッチし、ページを更新して再試行します。これは制限時間に達するまで繰り返されます。

于 2013-01-25T18:06:42.713 に答える