Webdriver/Javaを使用してサイトページをテストしていますが、これには多くのフィールドが含まれています。フィールドの1つはドロップダウンボックス(または選択ボックス)であり、フォーカスを失うと検証が行われます(タブアウトなど)。したがって、ドロップダウンで特定のオプションを選択して次のフィールドに移動すると、「あなたは選択できません!」というアラートボックスが表示されます。Selenium警告はデバッグモードでのみ表示されます
今、私は警告ボックスの存在をチェックし、それを受け入れるコードを実行していますが、これはDEBUGモードでのみ動作します。テストを実行すると(つまり、デバッグではない)、「アラートが存在するのを待ってから10秒後にタイムアウトします。ビルド情報:バージョン: '2.53.0'」。
これはおそらくタイミング問題ですが、DEBUGモードで動作するためですが、なぜExpectedConditions.alertIsPresent()を使用しているのかわかりません。これが失敗しているコードはここにあります:
WebElement currentElement = driver.findElement(By.id("selectbox"));
Select currentSelect = new Select(currentElement);
currentSelect.selectByVisibleText(updatedValue);
currentElement.sendKeys(Keys.TAB);
System.out.println("milestoneA");
if ((exceptionExpected()) {
System.out.println("milestoneB");
wait.until(ExpectedConditions.alertIsPresent());
System.out.println("milestoneC");
checkAlertBox(getExpectedResultFromExcel());
}
コードはうまくいっていて、すべて正常です。私のログのRUNモードでは、私はマイルストーンBに達し、上記のエラーがスローされます。
さらに、タブ移動前にThread.sleep(1000)を追加すると、すべて正常に動作します。
どのようなアイデアをお願いしますか?
は、タイムアウトが発生したときに選択ボックスが集中しますか? –
実際には、フォーカスは次の要素に移動します。だから私がしたことは、sendKeys(Keys.TAB)の直前にthread.sleep(3000)を実行したことです!だから私は今何をすべきか分からない。 ExpectedConditionsで理にかなったオプションは実際には見られません。どんな考えですか? – Dragonfly