所以我注意到Java能够使用Selenium 2.25.0提供的UnexpectedAlertBehaviour功能处理意外警报。你可以看到CHANGELOG。总是接受警报并继续脚本对我有帮助,因为我无法总是预测它们何时会弹出。
如果您使用Drupal的ctools进行任何编码并且它是ajax框架,您将理解为什么...... Selenium有时会因为ajax调用完成而过快,而ctools会抛出一个对话框,解释为什么ajax调用没有错误完成。
最后,甚至可以使用webdriver的rest API(mink的webdriver来自哪个)来执行此功能?有没有人知道如何通过mink或behat使用mink(通过yaml或php代码)进行设置?
答案 0 :(得分:2)
您可以添加一些js,以便在使用此步骤def
运行功能时禁用警报/**
* @When /^I disable the alerts$/
*/
public function iDisableTheAlerts()
{
$javascript = <<<JS
window.alert = function() {};
JS;
$this->getSession()->executeScript($javascript);
}
这实际上只是覆盖alert函数并执行null返回,以便任何js继续运行。
根据您的浏览器,如果不起作用,您可能需要尝试不同的覆盖方式。
你可以在你的应用程序中完全禁用警报,而不是通过behat注入它,但这仍然可以保留警报,因为某种......咳嗽......“设计所需的功能”。
答案 1 :(得分:0)
我正在使用Selenium for PHP,这是我的工作解决方案:
try {
// actions to open alert
} catch (UnexpectedAlertOpenException $e) {
if ($i->isWebDriver()) {
$i->executeInSelenium(function (\RemoteWebDriver $webDriver) {
$webDriver->switchTo()->alert()->dismiss();
});
}
}