如何使用 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]);
}
我进行了测试,点击 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]);
}