如何使用PHP behat/mink selenium2 chrome webdriver处理javascript警报窗



测试时,我得到一个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

中使用alert()、confirm()和prompt()的参考链接解决方案

您不需要为此方法创建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++;
            }
        }
    }
}

最新更新