Behat + норка + Selenium2 Получить текущее имя браузера

Как я могу получить текущее имя браузера? Я использую Chrome и Firefox с моими тестами функций, идущими под функциями -> chrome, functions -> 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

2 ответа

Решение

Это то, что сработало для меня.

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

Вы пытались выполнить driver.executeScript("return navigator.userAgent;")

и проанализировать строку агента пользователя, чтобы получить эту информацию? Это должно помочь вам получить имя браузера, его версию, информацию об ОС и т. Д.,

Попробуй это

/**
 * Returns current browser name.
 *
 * @return string Browser name.
 */
function getBrowserName(): string
{
    return $this->getCapabilities()['browserName'];
}
Другие вопросы по тегам