Search code examples
phpseleniumselenium-gridbehatmink

Behat + mink + Selenium2 Get Current Browser Name


How can I get the current browser name being used? I'm using Chrome and Firefox with my feature tests going under features -> chrome, features -> firefox. I want to take screenshots when a test fails. When I generate a screenshot, it just saves in my root dir. I want the file to be saved under the appropriate browser when I do this:

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

I get that it has a private variable of browserName, but how do I access it?

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

Solution

  • This is what worked for me.

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