2

Ich führe eine Reihe von Tests mit Facebook PHP WebDriver und Selenium. Ich führe sie mit phpunit in Chrome. Die Tests werden auf einem Windows-Computer ausgeführt und die geladenen Seiten stammen von einer Ubuntu-VM.WebdriverCurlException mit php, selen und chromedriver

Die meiste Zeit läuft alles super. Hin und wieder werden die Tests jedoch spektakulär ausfallen, wobei mehrere Fehler gleich zu Beginn auftreten. Das Chrome-Fenster öffnet sich, gibt die gewünschte URL ein und nichts. Es lädt 'für ca. 30 Sekunden und druckt dann das folgende:

Facebook\WebDriver\Exception\WebDriverCurlException: Curl error thrown for http GET to /session/d86523c4-6b25-4e61-bc2c-bc0cd3e615f4/title 

Operation timed out after 30000 milliseconds with 0 bytes received 

E:\dev\foldername\vendor\facebook\webdriver\lib\Exception\WebDriverException.php:92 
E:\dev\foldername\vendor\facebook\webdriver\lib\Remote\HttpCommandExecutor.php:320 
E:\dev\foldername\vendor\facebook\webdriver\lib\Remote\RemoteWebDriver.php:547 
E:\dev\foldername\vendor\facebook\webdriver\lib\Remote\RemoteWebDriver.php:227 
E:\dev\foldername\vendor\facebook\webdriver\lib\WebDriverExpectedCondition.php:60 
E:\dev\foldername\vendor\facebook\webdriver\lib\WebDriverWait.php:60 
E:\dev\foldername\tests\FunctionalTestBase.php:44 
E:\dev\foldername\tests\ReorderQuestionsTest.php:18 

Es wird auch dies manchmal schreiben:

Facebook\WebDriver\Exception\WebDriverCurlException: Curl error thrown for http POST to /session/be8e5886-7d05-4eb5-a798-143fb7ed3b30/url with params: {"url":"http:\/\/app.name.test"} 

Operation timed out after 30000 milliseconds with 0 bytes received 

E:\dev\foldername\vendor\facebook\webdriver\lib\Exception\WebDriverException.php:92 
E:\dev\foldername\vendor\facebook\webdriver\lib\Remote\HttpCommandExecutor.php:320 
E:\dev\foldername\vendor\facebook\webdriver\lib\Remote\RemoteWebDriver.php:547 
E:\dev\foldername\vendor\facebook\webdriver\lib\Remote\RemoteWebDriver.php:195 
E:\dev\foldername\tests\FunctionalTestBase.php:40 
E:\dev\foldername\tests\TypeChangeWithRoute2Test.php:18 

Mit PHPUnit 5.5.4, PHP 7.0.10, Selenium-Server 2.53. 1, Chromtreiber 2.23, Chrom 53.0.2785.89.

Dinge, die ich ausprobiert habe: ChromeDriver auf 2,9 (führt ein anderes Problem, behebt dieses Problem nicht). Hinzufügen eines Timeouts nach dem Aufruf von $ webDriver-> get ($ this-> url). Addiert man diese:

try{ 
    $this->webDriver->wait(5)->until(Condition::titleIs('Login')); 
}catch(TimeOutException $e){ 
    $this->webDriver->get($this->url); 
} 

Starten des Selen-Server mit Rechtsklick-> offen mit-> java statt Befehl java -jar

ich eine Erwähnung der Einstellung DBUS_SESSION_BUS_ADDRESS =/dev/null gefunden habe, aber Ich kann nicht herausfinden, wo ich das hinzufügen kann.

Mein Setup-Funktion:

$capabilities = Capabilities::chrome(); 
     $this->webDriver = Driver::create('http://localhost:4444/wd/hub', $capabilities); 
     $this->webDriver->manage()->window()->maximize(); 
     $this->webDriver->get($this->url); 

     try{ 
      $this->webDriver->wait(2)->until(Condition::titleIs('Login')); 
     }catch(TimeOutException $e){ 
      $this->webDriver->get($this->url); 
     } 

Meine Teardown-Funktion:

$this->webDriver->quit(); 

Ich bin auf das, was verloren zu tun. Ich kann keinen Test verwenden, der zufällig fehlschlägt.

Ich habe auch versucht

try { 
    $this->webDriver->get($this->url); 
} catch (WebDriverCurlException $e) { 
    $this->tearDown(); 
    $this->setUp(); 
} 

UPDATE: Nun, ich habe das gleiche Problem mit Firefox bekam, aber nicht PhantomJS. Ich vermute, mit Selenium Server 2.53 stimmt etwas nicht ...

+0

Ich habe festgestellt, dass travis so ausfällt, wenn das Netzwerk unter starker Belastung scheint. Starten Sie den Build einfach neu, und er wird schließlich ausgeführt, wenn der Datenverkehr langsamer wird und Ressourcen frei werden. –

Antwort

0

Sie können $ request_timeout_in_ms als vierten Parameter festlegen, wenn Sie den Client mit Driver :: create erstellen. z.B .:

Driver::create('http://localhost:4444/wd/hub', $capabilities, 60000, 60000); 

wird die Verbindung und die Anfrage-Timeout auf 60 Sekunden eingestellt.

Verwandte Themen