【问题标题】:How to handle a javascript alert window using PHP behat/mink selenium2 chrome webdriver如何使用 PHP behat/mink selenium2 chrome webdriver 处理 javascript 警报窗口
【发布时间】:2017-01-31 11:14:32
【问题描述】:

在测试时,我得到一个 javascript 警报框,我尝试关闭它,但我得到错误意外警报打开: {提示文字:可以删除此排除项吗?}

我正在尝试使用:

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

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

使用 Behat 3.2.0 貂 1.7.1

【问题讨论】:

  • 您使用的是什么版本的 Behat?

标签: javascript php google-chrome selenium mink


【解决方案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

【讨论】:

  • 我无法访问 ->getWebDriverSession()。不知道我的设置是错误的还是什么。
  • 我在 Behat\Mink\Driver\DriverInterface 类中找不到方法 getWebDriverSession
【解决方案2】:

您不需要为此方法创建 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:代码格式已修复

【讨论】:

  • 第 3 行不是正确的 PHP 语法...似乎 whiletry 子句破坏了。
【解决方案3】:

我发现这个功能真的很适合我:

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++;
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多