我正在Firefox上编写Selenium测试来处理警报。运行测试时,警报会显示几分之一秒,但手动完成后警报仍然存在。谁能说出为什么会这样呢?
我尝试在Firefox上设置此配置文件,但这也无济于事:
profile.setPreference("alerts.disableSlidingEffect", true);
任何人都可以告诉我如何让警报停留在页面上吗?
在代码中,我正在检查是否存在警报,由于警报消失得太快,显然从未受到警示:
WebDriverWait wait = new WebDriverWait(webDriver, Long.parseLong(parameters[0]));
wait.until(ExpectedConditions.alertIsPresent());
答案 0 :(得分:1)
UnexpectedAlertBehaviour
有3种状态:
ACCEPT
- 接受提醒DISMISS
- 关闭/取消提醒IGNORE
- 既不接受也不关闭提醒DesiredCapabilities dc = new DesiredCapabilities(); dc.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.IGNORE); driver = new FirefoxDriver(dc);
然后,您可以通过执行触发警报并将其作为预期异常捕获的操作来处理警报:
try { click(myButton); } catch (UnhandledAlertException f) { try { Alert alert = driver.switchTo().alert(); String alertText = alert.getText(); System.out.println("Alert data: " + alertText); alert.accept(); } catch (NoAlertPresentException e) { e.printStackTrace(); } }
答案 1 :(得分:0)
选择的答案对我有用,但是似乎不推荐使用FirefoxDriver(org.openqa.selenium.Capabilities)。可行的替代方法是:
FirefoxOptions firefoxOptions = new FirefoxOptions();
firefoxOptions.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.IGNORE);
driver = new FirefoxDriver(firefoxOptions);