在测试时,我得到一个javascript警告框,我尝试关闭它,但我收到错误意外警报打开:{警告文本:确定删除此排除?}
我正在尝试使用:
$this->driver = new Selenium2Driver('chrome');
$this->driver->getWebDriverSession()->accept_alert();
什么是使用PHP behat / mink selenium2 chrome webdriver关闭警报框的正确方法?
使用Behat 3.2.0 mink 1.7.1
你能检查一下吗?
$this->getSession()->getDriver()->getWebDriverSession()->accept_alert();
要么
您可以尝试更新featureContext.php文件中的ConfirmPopup函数,如下所示
public function iConfirmPopup()
{
$this->getMainContext()->getSession()->getDriver()->getWebDriverSession()->accept_alert();
}
在featureContext.php文件中添加它
参考链接solution to use alert(), confirm() and prompt() in Selenium2Driver
您不需要为此方法创建Selenium2Driver。对于Behat 3,如果将其添加到扩展Page对象的对象中,这应该可行。
public function iConfirmThePopup(){
$i = 0;
while($i < 5) {
try {
$this->getDriver()->getWebDriverSession()->accept_alert();
break;
}
catch(NoAlertOpenError $e) {
sleep(1);
$i++;
}
}
}
并添加到类的开头:
use WebDriver\Exception\NoAlertOpenError;
您可以根据需要自定义方法,如果不需要,可以删除while和try-catch。
UPD:修复了代码格式
我觉得这个功能真的对我有用:
public function acceptAlert()
{
$driver = $this->getDriver();
if ($driver instanceof Selenium2Driver) {
for ($i = 0; $i < 10; $i++) {
try {
$driver->getWebDriverSession()->accept_alert();
break;
}
catch (NoAlertOpenError $e) {
sleep(2);
$i++;
}
}
}
}