1

どういうわけか次のことが可能かどうか疑問に思っています:

@wait = Selenium::WebDriver::Wait.new timeout: 10
# ...do stuff...

# Stuff gets really slow here. Better increase the timeout.
def janky_method()
    old_timeout = @wait.timeout
    @wait.timeout += 50
    e = @wait.until { @selenium.find_element :css, 'div#page-loads-rock' }
    @wait.timeout = old_timeout
    e
end

これまでのところ、私が見た唯一の解決策は、新しいWaitドライバーを起動することです。代わりに、既存のもののタイムアウトを変更できますか?

4

1 に答える 1

1

@timeoutSelenium::WebDriver::Wait クラスは、タイムアウト (つまり変数)を変更するためのメソッドを提供しません。

変更できるようにしたい場合は、Selenium::WebDriver::Wait クラスにモンキー パッチを適用する必要があります。

require 'selenium-webdriver'
class Selenium::WebDriver::Wait
  attr_accessor :timeout
end

これにより、 で@timeout行ったように変数を操作できるようになりますjanky_method

注: 特定のシナリオの新しい待機を作成するだけで、このアプローチの利点があるかどうかはわかりません。

于 2013-07-15T16:13:01.533 に答える