Behat + mink + Selenium2 获取当前浏览器名称

Behat + mink + Selenium2 Get Current Browser Name

如何获取当前使用的浏览器名称?我正在使用 Chrome 和 Firefox,我的功能测试在功能 -> chrome、功能 -> 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

你试过执行吗 driver.executeScript("return navigator.userAgent;")

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

这对我有用。

$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';
}

试试这个

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