测试时,我得到一个javascript警报框,我尝试关闭它,但我得到错误意外警报打开:{警告文本:是否可以删除此排除?}
我正在尝试使用:
$this->driver = new Selenium2Driver('chrome');
$this->driver->getWebDriverSession()->accept_alert();
使用PHP behat/mink selenium2 chrome webdriver关闭警告框的正确方法是什么?
Using Behat 3.2.0 mink 1.7.1
你能检查一下这个吗
$this->getSession()->getDriver()->getWebDriverSession()->accept_alert();
或
你可以尝试更新ConfirmPopup函数在featureContext.php文件如下
public function iConfirmPopup()
{
$this->getMainContext()->getSession()->getDriver()->getWebDriverSession()->accept_alert();
}
将此添加到featureContext.php文件
在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 WebDriverExceptionNoAlertOpenError;
你可以根据你的需要定制方法,如果你不需要,你可以删除while和try-catch。
UPD: code formatting fixed
我发现这个函数真的很适合我:
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++;
}
}
}
}