0

Selenium webdriver で xpath を使用して、不正なデータ入力 (テキスト ボックスの前のラベル、例: ログイン シナリオ) でのみ有効になる非表示オブジェクトを確認するにはどうすればよいですか。

すべてのラベルにエラー メッセージが表示される場合 (ユーザー名ラベルやパスワード ラベルなど)、テキスト (エラー メッセージ) を確認してキャプチャできます。xpath ユーザー名: .// [@id='loginForm']/p[1]/p/label xpath パスワード: .// [@id='loginForm']/p[2]/p/label

しかし、正しいユーザー名を入力すると、Webdriver はユーザー名 (.//*[@id='loginForm']/p[1]/p/label) の Xpath を検索し続け、応答しません。

HTML は、エラーが発生した場合にのみ表示されます: label class="error" generated="true" for="userName" label class="error" generated="true" for="passwordField

誰でもこれで私を助けることができますか?

4

1 に答える 1

0

WebDriverWaitを使用します。

WebDriverWait waiting = new WebDriverWait(driver, 15, 100);
waiting.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("//*[@id='loginForm']/p[1]/p/label")));

上記は、要素が非表示になるまで最大15秒(100ミリ秒ごとに条件をチェック)待機するWebドライバー待機オブジェクトを作成します。コード行がトリガーされたときに要素がすでに非表示になっている場合、これはすぐに渡されます。

以下のコメントに基づいて編集

要素が存在するかどうかを調べようとしているだけの場合は、次のことができます。

List<WebElement> labelCount = driver.findElements(By.xpath("//*[@id='loginForm']/p[1]/p/label"));

サイズが0の場合、ラベルはありません。そうでない場合は、ラベルがあるので、次のようになります。

if(labelCount.size() == 0){
    //Get tab text
} else {
    //Enter second field data
}
于 2013-02-21T17:11:07.697 に答える