【问题标题】:Behat + mink + Selenium2 Get Current Browser NameBehat + mink + Selenium2 获取当前浏览器名称
【发布时间】:2020-10-07 18:03:43
【问题描述】:

如何获取当前正在使用的浏览器名称?我正在使用 Chrome 和 Firefox,我的功能测试在 features -> chrome, features -> firefox 下进行。我想在测试失败时截屏。当我生成屏幕截图时,它只是保存在我的根目录中。我希望在执行此操作时将文件保存在适当的浏览器下:

print_r($this->getSession()->getDriver())

我知道它有一个私有变量 browserName,但是我该如何访问它呢?

[browserName:Behat\Mink\Driver\Selenium2Driver:private] => chrome
    [desiredCapabilities:Behat\Mink\Driver\Selenium2Driver:private] => Array
        (
            [browserName] => chrome
            [browser] => chrome
            [version] => 25
            [platform] => ANY

【问题讨论】:

    标签: php selenium selenium-grid behat mink


    【解决方案1】:

    这对我有用。

    $session = $this->getSession();
    $driver = $session->getDriver();
    $userAgent = $driver->evaluateScript('return navigator.userAgent');
    $provider = $driver->evaluateScript('return navigator.vendor');
    $browser = null;
    if (preg_match('/google/i', $provider)) {
        //using chrome
        $browser = 'chrome';
    } elseif (preg_match('/firefox/i',$userAgent)) {
        $browser = 'firefox';
    }
    

    【讨论】:

      【解决方案2】:

      您是否尝试过执行 driver.executeScript("return navigator.userAgent;")

      并解析用户代理字符串以获取此信息? 这应该可以帮助您获取浏览器名称、版本、操作系统信息等,

      【讨论】:

      • 我不得不使用evaluateScript 而不是executeScript,因为execute 不返回数据,但evaluate 会。
      【解决方案3】:

      试试这个

      /**
       * Returns current browser name.
       *
       * @return string Browser name.
       */
      function getBrowserName(): string
      {
          return $this->getCapabilities()['browserName'];
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-04
        • 1970-01-01
        相关资源
        最近更新 更多