2

特定の文字列がページに表示されるのを待つための最もクリーンなコードを見つけようとしています。私が今持っている最高のものは、かなり不格好です

new Wait() {
    @Override
    public boolean until() {
        return !webDriver.findElement(By.tagName("html"))
               .getText().contains("please choose another");
    }
}.wait("wait failed!", 60000);

これを行うよりエレガントな方法はありますか?

4

3 に答える 3

3

これが本当にやりたいことなら、

webDriver.findElement(By.xpath("//*[contains(text(),'please choose another')]"));

Implicit 待機を使用すると、コードが 1 行だけになるため、(「クリーン コード」の観点から) 少しは良いように思えます。

于 2012-04-13T15:00:18.163 に答える
1

明示的に待機するために、Webdriver の組み込みメソッドを使用できます。こちらの例を参照してください。

可能であれば、テキストがどこかではなく特定の要素にあるかどうかを確認することをお勧めします。それがどこかにあることを確認すると、誤検知につながる可能性があります (つまり、誰かが同じ文字列をページの別の場所に追加すると、自分が何をしていたかを確認できなくなります)。

于 2012-04-13T14:36:02.580 に答える
0

WebDriverWait クラス オブジェクトを作成する

WebDriverWait wait = new WebDriverWait(driver, 500);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[contains(text(),'please choose another']")));
于 2012-08-20T07:37:51.937 に答える