0

ボタンを押すと、webdriver テスト ケースの実行を一時停止/再開したいと考えています。

私が思いつく方法は、Thread クラスの中断および再開メソッドを使用することです。しかし、webdriver がテキストなどを入力している間は一時停止しないようにしたいと考えています。あたかもそうするかのように、ブラウザはその時点からフォーカスを失う可能性があります。だから私は element.sendKeys または element.click のアトミックな実行を保証したい。

何かアイデアを提案してください???

4

2 に答える 2

2

テストをデバッグモードで実行するだけです。次に、JVM全体を一時停止できます。これは、WebDriverを一時停止する効果があります。

于 2012-10-29T10:46:25.147 に答える
1

ここでの最良のオプションは、独自の同期を実装し、Selenium を開始/停止することだと思います。これを実現する 1 つの方法は、WebDriver API メソッドへのすべての呼び出しをモニターとブール値フラグで保護して、他のインスタンスがテストの実行を中断したいことを示すことです。

private boolean suspend = false;

private Object monitor = new Object();

各 API 呼び出しの前のコードは次のようになります。

synchronized (monitor) {
    if (suspend) {
        try {
            monitor.wait();
        } catch (InterruptedException ex) {
            // thrown if someonelse calls notify
        }
    }
}

テストの実行を一時停止したい場合は、誰か (つまり、別のスレッド) に次のコードを実行させる必要があります。

synchronized (monitor) {
    suspend = true;
}

もう一度続行するには、次のコードを実行する必要があります。

synchronized (monitor) {
    monitor.notifyAll();
}

それは非常に単純な解決策です。より洗練された同期スタイルもありますが、これで十分です。

于 2012-10-29T10:39:34.237 に答える