2

나는 Facebook의 PHP WebDriver 및 Selenium을 사용하여 일련의 테스트를 실행합니다. Chrome에서 phpunit으로 실행합니다. 테스트는 Windows 시스템에서 실행되며로드 된 페이지는 Ubuntu VM에서 가져온 것입니다.PHP, 셀렌 및 chromedriver가있는 WebdriverCurlException

대부분의 경우 모든 것이 훌륭합니다. 그러나 때때로, 테스트는 시작시 몇 가지 실패한 권리로 극적으로 오류를 범할 것입니다. Chrome 창이 열리 며 원하는 URL을 입력하고 아무 것도 입력하지 않습니다. 그것은 약 30 초 동안 '로드'하고 다음을 인쇄 :

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 

그것은 또한 때때로이를 게시 할 예정입니다 : phpunit을 5.5.4 사용

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 

, PHP는 7.0.10, 셀레늄 서버 2.53. 1, Chromedriver 2.23, Chrome 53.0.2785.89.

내가 시도한 것 : ChromeDriver를 2.9로 업데이트 (다른 ​​문제가 발생 함,이 문제를 해결하지 않음). $ webDriver-> get ($ this-> url) 호출 후 시간 초과 추가. 추가이 :

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

내가 설정하는 언급을 발견했습니다 -jar 우측 클릭 -> 열기 뿐인데> 대신 명령 자바의 자바와 셀레늄 서버를 시작 DBUS_SESSION_BUS_ADDRESS =는/dev/null로하지만, 나는 그것을 추가 할 곳을 찾을 수없는 것처럼 보입니다.

내 설정 기능 :

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

내 분해 기능 :

$this->webDriver->quit(); 

나는 무엇을해야하는지에 잃었어요. 무작위로 실패한 테스트는 사용할 수 없습니다. 글쎄, 난 파이어 폭스와 같은 문제를 가지고 있지만 한 PhantomJS :

또한

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

UPDATE를 시도했습니다. 추측 컨데 Selenium Server 2.53에 문제가있는 것 같습니다 ...

+0

네트워크가 과부하 상태 인 것처럼 트래비스가 실패한 것으로 나타났습니다. 빌드를 계속 다시 시작하면 결국 트래픽이 줄어들고 리소스가 비어나면 결국 문제가 해결됩니다. –

답변

0

Driver :: create로 클라이언트를 생성 할 때 $ request_timeout_in_ms를 4 번째 매개 변수로 설정할 수 있습니다. 예컨대 :

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

연결 및 60 초의 요구 타임 아웃 시간을 설정합니다.