2016-04-05 3 views
1

Wie kann ich den aktuellen Browser-Namen bekommen verwendet? Ich verwende Chrome und Firefox mit meinen Feature-Tests unter Features -> Chrome, Features -> Firefox. Ich möchte Screenshots machen, wenn ein Test fehlschlägt, wodurch ich einen Screenshot erstellen kann, der nur in meinem Root-Verzeichnis gespeichert wird. Ich möchte, dass die Datei unter dem entsprechenden Browser gespeichert wird. WennBehat + Nerz + Selenium2 Get Aktuelle Browser-Name

tun

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

ich, dass es eine private Variable von browser hat, aber wie kann ich darauf zugreifen?

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

Antwort

1

Dies ist, was für mich gearbeitet.

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

Haben Sie versucht driver.executeScript ("return navigator.userAgent;") Ausführung

und den User-Agent-String analysieren diese Informationen zu erhalten? Dies sollten Sie den Browser-Namen, seine Version, die OS Informationen etc. helfen zu erhalten,

+0

Ich musste evaluateScript anstelle von executeScript verwenden, da execute keine Daten zurückgibt, sondern evaluate. –