WebElementとが存在するのを待つと便利WebDriverWaitですExpectedConditions。
問題は、ID、名前、一意のクラスがないため、要素を見つける唯一の方法だったとしたらどうでしょうか?WebElement.findElment
WebDriverWaitWebDriverのコンストラクターは引数としてのみ受け入れ、 ではありませんWebElement。
時間を設定したimplicitlyWaitので、 を使用するのは得策ではないようtry{} catch(NoSuchElementException e){}です。なぜなら、この要素をそれほど長く待ちたくないからです。
シナリオは次のとおりです。
多くのinputタグを含むフォームを持つ 1 つの Web ページがあります。各inputタグにはフォーマット要件があります。
フォーマット要件が満たされない場合、このタグの後に動的divタグが存在します。input
inputタグが非常に多いため、次のような一般的なメソッドを作成します。
public WebElement txtBox(String name) {
return driver.findElement(By.name(name));
}
input各タグのデータ メンバーを作成する代わりに。
次にisValid、一部のユーザー入力inputが有効かどうかを確認するメソッドを作成します。で行う必要があるのは、次のようなコードを使用して、 の後にタグが存在isValidするかどうかを確認することだけです。divinputboxToCheck
public boolean isValid(WebElement inputboxToCheck) {
WebElementWait wait = new WebElementWait(inputboxToCheck, 1);
try {
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("./following-sibling::div")));
return false;
} catch (TimeOutException e) {
return true;
}
}
WebElementWaitと同じように機能する架空の (存在しない) クラスWebDriverWaitです。