WebElement
とが存在するのを待つと便利WebDriverWait
ですExpectedConditions
。
問題は、ID、名前、一意のクラスがないため、要素を見つける唯一の方法だったとしたらどうでしょうか?WebElement.findElment
WebDriverWait
WebDriver
のコンストラクターは引数としてのみ受け入れ、 ではありません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
するかどうかを確認することだけです。div
inputboxToCheck
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
です。