如何修复 Behat 3 / Mink 中的浏览器 window 大小?
How do I fix the browser window size in Behat 3 / Mink?
我想 运行 我的所有 Behat/mink 测试都以移动显示分辨率进行。真正好的是 运行 在开发工具模式下使用 Chrome 进行所有测试,您可以在其中 select "iPhone 5/SE" 等等进行模拟该设备上的 运行ning。
所以,我尝试通过在 FeatureContext 中设置显示分辨率来自己实现类似的东西。
这是一个 SO question on how to resize browser windows with Behat 2. And there's sample code for setting the window resolution in Behat/Mink/Drupal。
基于这些示例,我将以下代码添加到我的 FeatureContext 中:
/**
* @BeforeScenario
*/
public function resizeWindow()
{
$this->getSession()->resizeWindow(100, 500, 'current');
}
但是,我收到了这个错误:
Fatal error: Call to a member function window() on null
(Behat\Testwork\Call\Exception\FatalThrowableError)
我也试过:
- 使用
BeforeStep
而不是 BeforeScenario
(结果:同样的错误)
- 添加一个步骤“我将分辨率设置为 A x B”(结果:我可以通过这种方式在测试中调整 window 的大小,但是当我在测试中提交表单时,屏幕分辨率会重置; 要解决这个问题,我可以在每个步骤之后添加设置分辨率的步骤,但效率很低)
- 我在 behat.yml 中尝试了 setting the window size as a chrome switch,但我也无法让它工作(window 大小没有改变)
我的目标:强制所有测试在 Chrome 下以固定的 window 大小
执行
要在 @BeforeScenario
中执行此操作:
/**
* @BeforeScenario
*/
public function resizeWindow()
{
if ($this->getSession()->getDriver() instanceof Selenium2Driver) {
$this->getMink()->getSession()->start();
$this->getSession()->resizeWindow(100, 500, 'current');
}
}
要在 @BeforeStep
中执行此操作:
/**
* @BeforeStep
*/
public function resizeWindowStep()
{
$is_session = $this->getMink()->isSessionStarted();
if (!$is_session) {
$this->getMink()->getSession()->start();
}
$this->getSession()->resizeWindow(100, 500, 'current');
}
我想 运行 我的所有 Behat/mink 测试都以移动显示分辨率进行。真正好的是 运行 在开发工具模式下使用 Chrome 进行所有测试,您可以在其中 select "iPhone 5/SE" 等等进行模拟该设备上的 运行ning。
所以,我尝试通过在 FeatureContext 中设置显示分辨率来自己实现类似的东西。
这是一个 SO question on how to resize browser windows with Behat 2. And there's sample code for setting the window resolution in Behat/Mink/Drupal。
基于这些示例,我将以下代码添加到我的 FeatureContext 中:
/**
* @BeforeScenario
*/
public function resizeWindow()
{
$this->getSession()->resizeWindow(100, 500, 'current');
}
但是,我收到了这个错误:
Fatal error: Call to a member function window() on null (Behat\Testwork\Call\Exception\FatalThrowableError)
我也试过:
- 使用
BeforeStep
而不是BeforeScenario
(结果:同样的错误) - 添加一个步骤“我将分辨率设置为 A x B”(结果:我可以通过这种方式在测试中调整 window 的大小,但是当我在测试中提交表单时,屏幕分辨率会重置; 要解决这个问题,我可以在每个步骤之后添加设置分辨率的步骤,但效率很低)
- 我在 behat.yml 中尝试了 setting the window size as a chrome switch,但我也无法让它工作(window 大小没有改变)
我的目标:强制所有测试在 Chrome 下以固定的 window 大小
执行要在 @BeforeScenario
中执行此操作:
/**
* @BeforeScenario
*/
public function resizeWindow()
{
if ($this->getSession()->getDriver() instanceof Selenium2Driver) {
$this->getMink()->getSession()->start();
$this->getSession()->resizeWindow(100, 500, 'current');
}
}
要在 @BeforeStep
中执行此操作:
/**
* @BeforeStep
*/
public function resizeWindowStep()
{
$is_session = $this->getMink()->isSessionStarted();
if (!$is_session) {
$this->getMink()->getSession()->start();
}
$this->getSession()->resizeWindow(100, 500, 'current');
}