我有自动化场景,有时系统会返回JavaScript警报,有时根本不会。我不知道这是什么原因,可能是网络问题。我已经创建了警报处理程序是:如何在Selenium WebDriver中处理间歇性警报?
public boolean isAlertPresent() {
WebDriverWait wait = new WebDriverWait(driver, 5);
wait.until(ExpectedConditions.alertIsPresent());
return true;
}
我在一步一个有时会出现调用此警报:
public WSSPage enterAndSearchContent(String title) throws InterruptedException {
waitForElementTextWithEnter(searchTextField, title);
while (isAlertPresent()){
Alert alert = driver.switchTo().alert();
alert.dismiss();
break;
}
return PageFactory.initElements(driver, WSSPage.class);
}
问题是,当警报显示不出来,它会给我NoAlertPresentException,并且自动化结果将失败。如果通过移动到下一行不发生警报,我希望代码继续前进,在这种情况下,它只会返回PageFactory.initElements(driver, WSSPage.class);
您能帮我从中提供更好的代码吗? 非常感谢。
你能考虑改变'而(isAlertPresent( ))'to'if(isAlertPresent())'?谢谢 – DebanjanB
@DebanjanB我做到了。当没有警报时,它仍然会产生NoAlertException。 – ajsapr
为什么你总是'返回true;'从'public boolean isAlertPresent()'?如果没有警报存在,我们可以返回'假'吗?尝试从'public boolean isAlertPresent()'返回'boolean'值。基于返回类型,我们将处理'enterAndSearchContent()'中的情况。谢谢 – DebanjanB