因此,我注意到Java能够使用Selenium 2.25.0提供的UnexpectedAlertBehaviour功能来处理意外的警报。您可以看到CHANGELOG。这将有助于我始终接受警报,并让脚本继续运行,因为我不能总是预测它们何时会弹出。
如果您使用过Drupal的ctools和ajax框架进行过任何编码,您就会理解为什么……Selenium有时速度太快,无法完成ajax调用,ctools会弹出一个对话框,解释为什么ajax调用没有完成的错误。
那么最后,是否有可能使用webdriver的rest API (mink的webdriver就是从rest API派生出来的)来执行此功能?有谁知道如何通过mink或behat使用mink设置它(通过yaml或php代码)?
发布于 2013-01-08 12:28:35
您可以添加一些js,以便在使用此步骤定义运行功能时禁用警报
/**
* @When /^I disable the alerts$/
*/
public function iDisableTheAlerts()
{
$javascript = <<<JS
window.alert = function() {};
JS;
$this->getSession()->executeScript($javascript);
}
这实际上只需覆盖alert函数并执行null返回,以便任何js都能继续运行。
根据你的浏览器,你可能想尝试不同的方法来覆盖它,如果这不起作用。
你可以在你的应用程序中完全禁用提醒,而不是通过behat注入它,但这仍然会将提醒保留为某种类型的……咳嗽..。“设计所需的功能”。
发布于 2015-12-30 01:02:54
我正在使用Selenium for PHP,下面是我的工作解决方案:
try {
// actions to open alert
} catch (UnexpectedAlertOpenException $e) {
if ($i->isWebDriver()) {
$i->executeInSelenium(function (\RemoteWebDriver $webDriver) {
$webDriver->switchTo()->alert()->dismiss();
});
}
}
https://stackoverflow.com/questions/12729782
复制相似问题