2012-06-22 3 views
6

私はSelenium RCを使用するとき、setSpeedメソッドがあります。JavaのWebDriverにブラウザの速度を制御する方法はありますか?

selenium.setSpeed( "500");

Selenium WebDriverでブラウザの速度を制御する方法は何ですか?

+1

[Implicit Wait](http://seleniumhq.org/docs/04_webdriver_advanced.html)をご存知ですか? WebDriverBackedSeleniumとsetSpeet(推奨しません)を使用することもできます –

答えて

3

Thread.Sleep(500)(または同等のもの)をwebdriverの実行に使用している言語で使用できます。これにより、正確なミリ秒数の間、スレッドが一時停止します。

別の方法としては、hereを説明明示または暗黙の待機を使用することができます。

  • 明示的な待機では、ExpectedConditionを定義できます。 Webdriverは、trueを返すまで500ミリ秒ごとに条件をチェックします(実行が直ちに再開します)。

  • 暗黙の待機により、webdriverはDOM内の何かの検索を再試行します。要素が見つかるとすぐに実行が再開されます。

暗黙的または明示的な待機によって500ミリ秒の休止が保証されないことに注意してください。

11

Selenium WebDriverの各「ステップ」の速度を制御する方法はもはやありません。ある時点では、OptionsインタフェースにはsetSpeed()メソッドがありました(Javaバインディングでは、他のバインディングは適切な名前のオブジェクトに類似の構造を持っていました)が、これはずっと前から廃止されていました。この背後にある理論では、先験的にを入力する必要はありません。 WebDriverコードを1ステップずつスローダウンする必要があります。自動化するアプリケーションで何かが起きるのを待つ必要がある場合は、暗黙的または明示的な待機ルーチンを使用する必要があります。

+0

Selenium WebDriverの暗黙的および明示的な待機のJavaコードは何ですか? –

+4

'setSpeed'の最も一般的な必要性は、自動テストの開発にあると思います。私は2つのテストが合格する状況に遭遇していますが、スイートとして実行すると、2番目のテストは失敗します。私は何が起こっているのかデバッグしようとしていますが、画面が非常に速く動くので、実際に何が起こっているのかわかりません。 – Snekse

+0

これは、IDE(静的言語の場合)またはREPL(動的言語の場合)のブレークポイントを対象としています。 – JimEvans

4

まっすぐ進む方法はありません。しかし、あなたが使うことができるハックがあります、あなたはwebdriverのメソッドをオーバーライドし、明示的な睡眠を導入してテストを遅くすることができます。 findElementメソッドをオーバーライドする

public class _WebDriver extends FirefoxDriver { 

@Override 
public WebElement findElement(By by) { 
    try { 
     Thread.sleep(500); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return by.findElement((SearchContext) this); 
} 

} 
関連する問題