如何使用 Behat 和 Mink PHP 处理浏览器 window 或选项卡

How to handle browser window or tab using Behat and Mink PHP

我进行了测试,点击 link,然后打开新浏览器 window,在新浏览器中 window 我需要检查一些元素是否存在。如何切换到使用 BEHAT/MINK 打开的新浏览器 window?

您可以使用switchToWindow($windowName)方法。

$this->getSession()->switchToWindow($windowName);

方法声明是here

您可以从当前会话中获取所有 windows,然后切换到第二个会话

$windowNames = $this->getSession()->getWindowNames();
if(count($windowNames) > 1) {
    $this->getSession()->switchToWindow($windowNames[1]);
}

为了以防万一这对任何人都有帮助,window 名称是一个数组。因此,使用 Igor 的回答,$windowNames[1] 是第二个选项卡,[2] 是第三个选项卡,依此类推。如果您想知道如何在此之后返回到第一个选项卡,只需从 Igor 的答案中删除 'if' 块(或检查是否至少存在 1 window 块)并创建一个新函数,如下所示:

  /**
  * @Given I go to the first tab
  */
  public function goToFirstTab()
  {
    $windowNames = $this->getSession()->getWindowNames();
    $this->getSession()->switchToWindow($windowNames[0]);
  }