1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeaunamespace Facebook\WebDriver\Firefox; 4*04fd306cSNickeau 5*04fd306cSNickeauuse Facebook\WebDriver\Local\LocalWebDriver; 6*04fd306cSNickeauuse Facebook\WebDriver\Remote\DesiredCapabilities; 7*04fd306cSNickeauuse Facebook\WebDriver\Remote\Service\DriverCommandExecutor; 8*04fd306cSNickeauuse Facebook\WebDriver\Remote\WebDriverCommand; 9*04fd306cSNickeau 10*04fd306cSNickeauclass FirefoxDriver extends LocalWebDriver 11*04fd306cSNickeau{ 12*04fd306cSNickeau const PROFILE = 'firefox_profile'; 13*04fd306cSNickeau 14*04fd306cSNickeau /** 15*04fd306cSNickeau * Creates a new FirefoxDriver using default configuration. 16*04fd306cSNickeau * This includes starting a new geckodriver process each time this method is called. However this may be 17*04fd306cSNickeau * unnecessary overhead - instead, you can start the process once using FirefoxDriverService and pass 18*04fd306cSNickeau * this instance to startUsingDriverService() method. 19*04fd306cSNickeau * 20*04fd306cSNickeau * @return static 21*04fd306cSNickeau */ 22*04fd306cSNickeau public static function start(DesiredCapabilities $capabilities = null) 23*04fd306cSNickeau { 24*04fd306cSNickeau $service = FirefoxDriverService::createDefaultService(); 25*04fd306cSNickeau 26*04fd306cSNickeau return static::startUsingDriverService($service, $capabilities); 27*04fd306cSNickeau } 28*04fd306cSNickeau 29*04fd306cSNickeau /** 30*04fd306cSNickeau * Creates a new FirefoxDriver using given FirefoxDriverService. 31*04fd306cSNickeau * This is usable when you for example don't want to start new geckodriver process for each individual test 32*04fd306cSNickeau * and want to reuse the already started geckodriver, which will lower the overhead associated with spinning up 33*04fd306cSNickeau * a new process. 34*04fd306cSNickeau * 35*04fd306cSNickeau * @return static 36*04fd306cSNickeau */ 37*04fd306cSNickeau public static function startUsingDriverService( 38*04fd306cSNickeau FirefoxDriverService $service, 39*04fd306cSNickeau DesiredCapabilities $capabilities = null 40*04fd306cSNickeau ) { 41*04fd306cSNickeau if ($capabilities === null) { 42*04fd306cSNickeau $capabilities = DesiredCapabilities::firefox(); 43*04fd306cSNickeau } 44*04fd306cSNickeau 45*04fd306cSNickeau $executor = new DriverCommandExecutor($service); 46*04fd306cSNickeau $newSessionCommand = WebDriverCommand::newSession( 47*04fd306cSNickeau [ 48*04fd306cSNickeau 'capabilities' => [ 49*04fd306cSNickeau 'firstMatch' => [(object) $capabilities->toW3cCompatibleArray()], 50*04fd306cSNickeau ], 51*04fd306cSNickeau ] 52*04fd306cSNickeau ); 53*04fd306cSNickeau 54*04fd306cSNickeau $response = $executor->execute($newSessionCommand); 55*04fd306cSNickeau 56*04fd306cSNickeau $returnedCapabilities = DesiredCapabilities::createFromW3cCapabilities($response->getValue()['capabilities']); 57*04fd306cSNickeau $sessionId = $response->getSessionID(); 58*04fd306cSNickeau 59*04fd306cSNickeau return new static($executor, $sessionId, $returnedCapabilities, true); 60*04fd306cSNickeau } 61*04fd306cSNickeau} 62