Я выполняю все тесты, используя PHPUnit.Создаем оболочку, которая запускает экземпляр Apache, затем запускает автономный сервер Selenium, затем создает экземпляр Chrome Remote Webdriver со скоростью http://localhost:4444/wd/hub.. Этот процесс работает 100% времени на наших машинах разработчика и 90% временина тестовом сервере, но время от времени тесты проваливаются следующим образом:
[exec] 1) Intranet\Pages\FinancialReportsSeleniumTest::test_changeMonthYear
[exec] Facebook\WebDriver\Exception\WebDriverCurlException: Curl error thrown for http POST to /session with params: {"desiredCapabilities":{"browserName":"chrome","platform":"ANY","chromeOptions":{"binary":"","args":["--window-size=1400,900","--no-sandbox","--headless"]},"goog:chromeOptions":{"args":["--window-size=1400,900","--no-sandbox","--headless"]}}}
[exec]
[exec] Failed to connect to localhost port 4444: Connection refused
[exec]
[exec] C:\Jenkins\jobs\Intranet-Master\workspace\vendor\facebook\webdriver\lib\Remote\HttpCommandExecutor.php:292
[exec] C:\Jenkins\jobs\Intranet-Master\workspace\vendor\facebook\webdriver\lib\Remote\RemoteWebDriver.php:126
[exec] C:\Jenkins\jobs\Intranet-Master\workspace\phpunit\library\Intranet\Selenium.php:364
[exec] C:\Jenkins\jobs\Intranet-Master\workspace\phpunit\library\Intranet\Selenium.php:51
[exec] C:\Jenkins\jobs\Intranet-Master\workspace\phpunit\library\Intranet\SeleniumTestCase.php:9
Если мы повторно запустим тесты, в следующий раз все будет работать нормально.
Dev Machines:
- Windows 10 Pro (1809) (64 бита)
- Apache 2.4.38 (32 бита)
- PHP 7.2.15 (32 бита)
- Java 1.8.0_192 (64 бита)
- Selenium 3.141.59
- Selenium Chrome Driver 73.0.3683.20
Тестовая машина
- Windows Server 2008 R2 x 64 (64-разрядная версия)
- Apache 2.4.38 (32-разрядная версия)
- PHP 7.2.15 (32-разрядная версия)
- Jenkins 2.1.64
- Java 1.8.0_192 (64 бита)
- Selenium 3.141.59
- Selenium Chrome Driver 73.0.3683.20
Файл журнала показывает, что сервервверх:
10:41:27.392 INFO [GridLauncherV3.launch] - Selenium build info: version: '3.14.0', revision: 'aacccce0'
10:41:27.392 INFO [GridLauncherV3$1.launch] - Launching a standalone Selenium Server on port 4444
10:41:28.562 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 4444
ОБНОВЛЕНИЕ № 1: Теперь мы запускаем автономный сервер Selenium как Службу, но по-прежнему происходит сбой примерно с той же частотой (после каждых 5-10 тестовых прогонов).
ОБНОВЛЕНИЕ № 2: Теперь мы запускаем экземпляр Apacheи удаленный веб-драйвер как часть нашего файла начальной загрузки PHPUnit, прежде чем запускать какие-либо тесты.Мы также теперь проверяем, что веб-драйвер работает (сначала, прежде чем пытаться его запустить), используя fsockopen ().Частота отказов упала до менее чем 5%, но это все еще происходит время от времени.Странно то, что улучшение фактически произошло после того, как мы добавили вызов fsockopen () - может быть, есть проблема с синхронизацией?