【问题标题】:How do I fix the browser window size in Behat 3 / Mink?如何修复 Behat 3 / Mink 中的浏览器窗口大小?
【发布时间】:2020-10-27 05:54:50
【问题描述】:

我想以移动显示分辨率运行我的所有 Behat/mink 测试。真正好的是在开发工具模式下使用 Chrome 运行所有测试,您可以在其中选择“iPhone 5/SE”等以模拟在该设备上运行。

所以,我尝试通过在 FeatureContext 中设置显示分辨率来自己实现类似的功能。

这是SO question on how to resize browser windows with Behat 2。还有sample code for setting the window resolution in Behat/Mink/Drupal

基于这些示例,我在我的 FeatureContext 中添加了以下代码:

  /**
   * @BeforeScenario
   */
  public function resizeWindow()
  {
    $this->getSession()->resizeWindow(100, 500, 'current');
  }

但是,我收到了这个错误:

致命错误:在 null 上调用成员函数 window() (Behat\Testwork\Call\Exception\FatalThrowableError)

我也试过了:

  • 使用BeforeStep 而不是BeforeScenario(结果:同样的错误)
  • 添加一个步骤“我将分辨率设置为 A x B”(结果:我可以通过这种方式在测试中调整窗口大小,但是当我在测试中提交表单时,屏幕分辨率会被重置;为了解决这个问题,我可以在每个步骤之后添加设置分辨率的步骤,但效率非常低)
  • 我在 behat.yml 中尝试了 setting the window size as a chrome switch,但我也无法让它工作(窗口大小没有改变)

我的目标:强制所有测试在 Chrome 下以固定窗口大小执行

【问题讨论】:

    标签: behat google-chrome-headless mink


    【解决方案1】:

    @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');
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-07
      • 1970-01-01
      • 1970-01-01
      • 2017-04-15
      • 2018-10-13
      • 2015-04-20
      • 1970-01-01
      • 2010-11-13
      相关资源
      最近更新 更多