如何确认Behat弹出窗口的确定?

时间:2016-11-04 05:54:49

标签: php popup automated-tests behat mink

我想在出现时确认弹出窗口。 这是功能文件:

And I wait 10 seconds
Then I confirm the popup

和FeatureContext文件:

<?php

    use Behat\Behat\Context\Context;
    use Behat\Behat\Context\SnippetAcceptingContext;
    use Behat\Gherkin\Node\PyStringNode;
    use Behat\Gherkin\Node\TableNode;
    use Behat\MinkExtension\Context\MinkContext;
    use Behat\Mink\Driver\Selenium2Driver;

    class FeatureContext extends MinkContext { 
    /**
     * @when /^(?:|I )confirm the popup$/
     */
        public function confirmPopup()   {
            $this->getSession()->getDriver()->getWebDriverSession()->accept_alert();
        }
    }

但它不起作用。它显示以下错误: Error Image

2 个答案:

答案 0 :(得分:1)

假设您使用的是Behat 3,则可以在扩展Page对象的任何上下文中添加此步骤。

public function iConfirmThePopup()
{
    $this->getDriver()->getWebDriverSession()->accept_alert();
}

如果弹出窗口中有任何延迟,您可以在调用接受警报方法之前在方法中添加sleep(1);

  

此代码适用于警报类型,如果pop-p不是警报,那么您需要定期点击确定/确认按钮。

答案 1 :(得分:-2)

您可以使用:

/**
 * @when /^(?:|I )confirm the popup$/
 */
public function confirmPopup()
{
    $this->getSession()->getDriver()->getWebDriverSession()->accept_alert();
}

我找到了这个文件,非常方便:

https://gist.github.com/blazarecki/2888851

此文件包含如何处理所有弹出窗口