【问题标题】:How to handle browser window or tab using Behat and Mink PHP如何使用 Behat 和 Mink PHP 处理浏览器窗口或选项卡
【发布时间】:2022-01-26 07:05:24
【问题描述】:

我已经测试点击链接,然后打开新的浏览器窗口,在新的浏览器窗口中我需要检查一些元素是否存在。如何切换到使用 BEHAT/MINK 打开的新浏览器窗口?

【问题讨论】:

    标签: php browser automation behat mink


    【解决方案1】:

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

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

    方法声明为here

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

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

    【讨论】:

    • 谢谢伊戈尔,我知道这种方法,但我不知道如何获取窗口名称
    • 例如,如果您的窗口名称是动态的,则只需使用我上面提到的 getWindowNames() 并切换到第二个名称。也许您还需要添加等待打开第二个窗口的方法。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 2014-01-31
      • 1970-01-01
      • 2020-06-01
      相关资源
      最近更新 更多