アプリケーションワークフローの1つには、10ページ以上のページがあります。WebDriverがこの要素またはその要素が見つかるまで待ちます
「次へ」ボタンを続けてクリックする必要があります。新しいコンテンツを再読み込みするAJAX呼び出しが行われ、「次へ」ボタンも再読み込みされます。 移動するページ数は、常に10ではありません。10〜100の範囲で設定できます。
「testcomplete」というIDのWeb要素が見つかるたびに、テストが完了します。
だから、現在、私は(ExpectedConditionsを使用)
WebDriverWait wait = new WebDriverWait(driver, 30);
//Keep clicking next
while(isNextPresent()){
NextButton.click();
}
//testcomplete reached here
System.out.println("test complete");
private boolean isNextPresent(){
try{
WebElement element = wait.until(ExpectedConditions.visibilityOf(NextButton));
return true;
}catch(Exception e){
//
}
return false;
}
現在、私のコードは正常に動作します。しかし、私はそれを改善しようとしています。 idが 'testcomplete'の要素が存在する場合、30秒間の不必要な待機が嫌いです。その時間 'NextButton'は存在しないためです。
isNextPresent
の機能を改善するにはどうすればよいですか?つまり、30秒間待つのではなく、「testcomplete」があると即座にfalseに戻りますか?
注:分度器にも同様の要件があるため、分度器も付けました。
「30秒の不必要な待機」とはどういう意味ですか?この関数は、 'visibilityOf'がtrueを返した後すぐに実行されません。最大タイムアウトは30秒ですか? – Gunderson
@Gunderson、私が言及したように、それは正常に動作します。しかし、結局、ある時点で、次のボタンはそこにはありません。代わりにtestcompleteという別の要素があります。その時、それは30秒待つ。 – KitKarson