0

29 個のテスト ケースがあるシナリオがあります。すべてのテスト ケースは、新しい Firefox ウィンドウをポップアップ表示し、個別に実行すると完了するまで実行されます。ただし、テスト ケース (29 個すべて) をテスト スイートに結合すると、「要素が見つかりません」というランダムなエラーが発生します。テスト スイートを複数回実行すると、さまざまなテスト ケースがさまざまな場所でランダムに失敗することがわかります。注-すべての要素が表示されるのを約100秒間待ってから、クリックします。コードは次のようになります-

    WebElement myDynamicElement = (new WebDriverWait(driver, 100))
    .until(new ExpectedCondition<WebElement>() {
    @Override
    public WebElement apply(WebDriver driver) {
    return driver.findElement(element);
    }

誰かがアドバイスできますか?小さいテスト スイートが推奨されますか?

4

1 に答える 1

1

これまでのところ、同様の問題タイプに出くわすことはありません。IMHOはもう少し堅牢な待機メカニズムを使用しようとしますfluentWait

public WebElement fluentWait(final By locator){
            Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
                    .withTimeout(30, TimeUnit.SECONDS)
                    .pollingEvery(5, TimeUnit.SECONDS)
                    .ignoring(org.openqa.selenium.NoSuchElementException.class);
            WebElement foo = wait.until(
                    new Function<WebDriver, WebElement>() {
                        public WebElement apply(WebDriver driver) {
                            return driver.findElement(locator);
                        }
                    }
            );
            return  foo;              }     ;

ここに流暢な待機に関するドキュメントがあります

使用方法は次のようになります:

String cssSelectorElement ="blablablab";
String xPathElement = "balblabla";

fluentWait(By.cssSelector(cssSelectorElement)).click()
//fluentWait(By.cssSelector(cssSelectorElement)).getText();

fluentWait(By.xpath(xPathElement)).click()
//fluentWait(By.xpath(xPathElement)).getText();

作業している IDE (IDEA、Eclipse、NetBeans) での段階的なデバッグを忘れないでください。

于 2012-10-23T15:23:56.133 に答える