繁体   English   中英

如何使用PHP Behat / Mink Selenium2 Chrome WebDriver处理JavaScript警报窗口

[英]How to handle a javascript alert window using PHP behat/mink selenium2 chrome webdriver

测试时,我收到一个javascript警报框,尝试关闭它,但打开错误意外警报:{Alert text:OK to remove this exclusion?}

我正在尝试使用:

$this->driver = new Selenium2Driver('chrome');
$this->driver->getWebDriverSession()->accept_alert();

使用PHP behat / mink selenium2 chrome webdriver关闭警报框的正确方法是什么?

使用Behat 3.2.0貂皮1.7.1

你能检查一下吗

$this->getSession()->getDriver()->getWebDriverSession()->accept_alert();

要么

您可以尝试如下更新featureContext.php文件中的ConfirmPopup函数吗

public function iConfirmPopup()
{
$this->getMainContext()->getSession()->getDriver()->getWebDriverSession()->accept_alert();
}

将此添加到featureContext.php文件中

参考链接解决方案以在Selenium2Driver中使用alert(),confirm()和hint()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM