WebdriverCurlException с php, селеном и хромедрайвером

Я провел серию тестов, используя PHP WebDriver и Selenium. Я запускаю их с phpunit на Chrome. Тесты выполняются на компьютере с Windows, а загруженные страницы — с виртуальной машины Ubuntu.

В большинстве случаев все работает отлично. Тем не менее, время от времени тесты будут впечатляюще давать сбой, когда несколько проваливаются в самом начале. Откроется окно 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

Это также иногда будет публиковать это:

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

Использование Phpunit 5.5.4, Php 7.0.10, Selenium server 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);
}

Запуск сервера селена с правой кнопкой мыши -> открыть с помощью -> Java вместо команды java -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();

Я потерян на том, что делать. Я не могу использовать тест, который не проходит случайно.

Я также пытался

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

ОБНОВИТЬ:
Ну, у меня та же проблема с Firefox, но не с PhantomJS. Я предполагаю, что что-то не так с Selenium Server 2.53 …

2

Решение

Вы можете установить $ request_timeout_in_ms в качестве 4-го параметра при создании клиента с помощью Driver :: create.
Например.:

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

установит соединение и время ожидания запроса до 60 секунд.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]