3

T は、UiBinder 自体で GWT ウィジェットの「id」を設定します。

たとえば。

また追加*.gwt.xml で

次に、Seleniumテストケースでこれを試します

WebElement element = driver.findElement(By.id("gwt-debug-loginButton"));

正しく動作する場合もあります。ただし、次の例外がスローされる場合があります。

要素が見つかりません: {"method":"id","selector":"gwt-debug-loginButton"} コマンドの実行時間またはタイムアウト: 62 ミリ秒

何を更新する必要がありますか? 誰でも私を助けることができますか?

4

2 に答える 2

6

WebDriverWait を使用して、一定時間後の要素を検索します。このようなもの。

try {
        (new WebDriverWait(driver, seconds, delay)).until(new ExpectedCondition<Boolean>() {
            public Boolean apply(WebDriver d) {
                try {
                    WebElement el = d.findElement(By.id("gwt-debug-loginButton"));
                    return true;
                } catch (Exception e) {
                    return false;
                }
            }
        });
    } catch (TimeoutException t) {
        //Element not found during the period of time
    }
于 2012-08-08T10:56:24.863 に答える
3

を使用して Web ページ上の要素を検索しようとしている場合selenium WebDriverImplicit WaitまたはExplicit Waitdriverを使用して、ページが完全に読み込まれるまで待機させることができます。

暗黙の待機の例(このコードは通常、ドライバーを初期化した後に使用されます) -

WebDriver driver = new FirefoxDriver();   
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

上記のステートメントは、ドライバーが探している要素を見つけられない場合、ドライバーを 10 秒間待機させます。ドライバーが 10 秒経過しても見つからない場合、ドライバーは例外をスローします。

明示的な待機の例- これはWebElement、あなたの状況では、単一の場合に特に使用されます -

new WebDriverWait(driver, 20).until(ExpectedConditions.presenceOfElementLocated(By.id("gwt-debug-loginButton")));

上記のコードは、要素が見つかるまでドライバーを 20 秒間待機させます。20 秒経過しても要素が見つからない場合は、TimeoutException がスローされます。ここで ExpectedCondition の API を確認できます(このクラスで使用できる多くの興味深いバリエーションがあります)。

(ドライバーは、コードが探している要素が見つからない場合にのみ、指定された期間待機することに注意してください。ドライバーが要素を見つけた場合は、単に実行を続行します)

于 2012-08-08T17:23:35.517 に答える