Python 未定义,当它';硒引发的硒中毒

Python 未定义,当它';硒引发的硒中毒,python,angularjs,automation,cucumber,behat,Python,Angularjs,Automation,Cucumber,Behat,我正在致力于自动化一个用Python编写的网站,并在有很多确认通知的地方使用Angular。我的问题是Behat似乎无法识别这些通知,更不用说允许我与它们交互了 我附上了通知的屏幕截图以及Behat生成的未定义-未定义错误消息 我的场景: Then I select the Delete the Media Plan Line Checkbox And I delete the Media Plan Line And I select Yes to confirm the deletion An

我正在致力于自动化一个用Python编写的网站,并在有很多确认通知的地方使用Angular。我的问题是Behat似乎无法识别这些通知,更不用说允许我与它们交互了

我附上了通知的屏幕截图以及Behat生成的未定义-未定义错误消息

我的场景:

Then I select the Delete the Media Plan Line Checkbox
And I delete the Media Plan Line
And I select Yes to confirm the deletion
And I select No to confirm the deletion
/**
 * @Then /^I select the Delete the Media Plan Line Checkbox$/
 */
public function iDeleteMediaPlanLineCheckbox()
{
    /**
     * @var AddMediaPlan $addMediaPlan
     */
    $addMediaPlan= $this->getPage('AddMediaPlan');
    $addMediaPlan->deleteMediaPlanLineCheckbox();
}

/**
 * @Given /^I delete the Media Plan Line$/
 */
public function iDeleteTheMediaPlanLine()
{
    /**
     * @var AddMediaPlan $addMediaPlan
     */
    $addMediaPlan= $this->getPage('AddMediaPlan');
    $addMediaPlan->deleteMediaPlanLines();
}

public function deleteMediaPlanLineCheckbox ()
{
    $this->getElement('deleteMediaPlanLineArea')->click();
    $this->getSession()->wait(2000);
    $element = $this->getElement('deleteMediaPlanLineCheckbox');
    $this->scrollWindowToElement($element);
    $element->click();
    $this->getSession()->wait(4000);
}

public function deleteMediaPlanLines ()
{
    $this->getSession()->wait(2000);
    $this->getElement('deleteMediaPlanLines')->click();
    $this->getSession()->wait(800000);
}

public function deletePopUpYes ()
{
    $this->getElement('deletePopUpYes')->click();
    $this->getSession()->wait(2000);
}

public function deletePopUpNo ()
{
    $this->getElement('deletePopUpNo')->click();
    $this->getSession()->wait(2000);
}
和我的背景:

Then I select the Delete the Media Plan Line Checkbox
And I delete the Media Plan Line
And I select Yes to confirm the deletion
And I select No to confirm the deletion
/**
 * @Then /^I select the Delete the Media Plan Line Checkbox$/
 */
public function iDeleteMediaPlanLineCheckbox()
{
    /**
     * @var AddMediaPlan $addMediaPlan
     */
    $addMediaPlan= $this->getPage('AddMediaPlan');
    $addMediaPlan->deleteMediaPlanLineCheckbox();
}

/**
 * @Given /^I delete the Media Plan Line$/
 */
public function iDeleteTheMediaPlanLine()
{
    /**
     * @var AddMediaPlan $addMediaPlan
     */
    $addMediaPlan= $this->getPage('AddMediaPlan');
    $addMediaPlan->deleteMediaPlanLines();
}

public function deleteMediaPlanLineCheckbox ()
{
    $this->getElement('deleteMediaPlanLineArea')->click();
    $this->getSession()->wait(2000);
    $element = $this->getElement('deleteMediaPlanLineCheckbox');
    $this->scrollWindowToElement($element);
    $element->click();
    $this->getSession()->wait(4000);
}

public function deleteMediaPlanLines ()
{
    $this->getSession()->wait(2000);
    $this->getElement('deleteMediaPlanLines')->click();
    $this->getSession()->wait(800000);
}

public function deletePopUpYes ()
{
    $this->getElement('deletePopUpYes')->click();
    $this->getSession()->wait(2000);
}

public function deletePopUpNo ()
{
    $this->getElement('deletePopUpNo')->click();
    $this->getSession()->wait(2000);
}
工作通知

中断通知


这就是视频。

如果我理解正确的话,你说的是通知,而不是弹出窗口。到目前为止,通知仍然是实验性的功能,一些浏览器不支持它们。我还假设支持它们的浏览器有不同的API来调用它们,这些API都不是Behat使用的API的一部分

我相信您可以找到一种方法使通知显示适当的详细信息,但您肯定无法与它交互。下面是另一个支持我想法的例子

我可以看到视频中的Chrome抱怨安全问题,这可能是您获取未定义值的原因,解决方法是将此配置传递给selenium会话(这是Behat 3配置示例):


这个问题很好,不应该被否决。

我看不出它应该是什么样子。您提供的信息非常有限,无法理解问题所在。提供代码。另外,如果它在没有Behat的情况下正常运行,那么它在Behat的情况下应该也能正常运行(使用与Behat相同的浏览器)。我已经更新了问题,这些问题称为通知,而不是弹出窗口,这会让大多数阅读本文的人感到困惑。感谢您在格式化和回答问题方面提供的帮助。我在behat.yml中尝试了上述代码,但未识别额外功能[Symfony\Component\Config\Definition\Exception\InvalidConfigurationException]未识别的选项“behat.extensions.behat\u minkextension\u extension.selenium2.capabilities”下的“额外功能”你有一个有效的例子吗?这是一个有效的例子。如果您使用的是Behat 2,那么语法可能会有所不同(如果支持的话)。谷歌搜索没有得到任何有希望的结果,我认为你运气不好。如果你想最大限度地利用它,你应该升级。