Исключение WebDriver: невозможно найти обработчик для (POST) /wd/hub/session

Google Chrome 79.0.3945.130
ChromeDriver 79.0.3945.36
selenium-server-4.0.0-alpha-4.jar Самый
новый код из php-webdriver GitHub по состоянию на 22.01.2020

Я запускаю сервер Selenium в автономном режиме на локальном хосте, используя Xfvb как таковой:

$ Xvfb :99 -screen 5 1920x1080x8 &
$ export DISPLAY=:99
$ java -Dwebdriver.chrome.driver="./chromedriver" -jar selenium-server-4.0.0-alpha-4.jar standalone

Затем у меня есть тестовый вспомогательный класс, который запускает вещи в коде PHP:

    1 final public static function createWebDriver() {
    2   $options = new ChromeOptions();
    3   $options->addArguments(array('--window-size=1920,1080'));
    4   $caps= DesiredCapabilities::chrome();
    5   $caps->setCapability(ChromeOptions::CAPABILITY, $options);
    6   $driver = RemoteWebDriver::create('http://localhost:4444/wd/hub', $caps);
    7   $driver->manage()->window()->maximize();
    8   return $driver;
    9}

Когда я запускаю тест и вызываю функцию RemoteWebDriver::create(), она выдает исключение:

Facebook\WebDriver\Exception\UnknownCommandException: невозможно найти обработчик для (POST) /wd/hub/session /home/me/UnitTest/vendor/facebook/webdriver/lib/Exception/WebDriverException.php:137 /home/me/UnitTest/vendor/facebook/webdriver/lib/Remote/HttpCommandExecutor.php:380 /home/me/UnitTest/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php:136 /var/www/html/project/core/functions/SeleniumTestHelper.php:6

Строка, в которой возникает проблема:
$driver = RemoteWebDriver:: create ('http://localhost:4444/wd/hub', $caps);

Я подтверждаю с помощью netstat, что я прослушиваю все адреса порта 4444. Я не могу найти на своем компьютере каталог с именем "hub". Я не уверен, почему это не работает, и, похоже, мне не нужно больше информации, кроме этого исключения.

1 ответ

Andrewnichols помог мне на GitHub! Вот его ответ. Большое ему спасибо. Я поделюсь ответом здесь для всех, кто столкнется с этим вопросом.

Привет @JoeyofBladez!

Selenium 4 меняет URL. Он больше не отстает от /wd/hub. Ошибка правильная. Он не знает, что означает /wd/hub / session. Новый URL-адрес - http://localhost:4444/, что сделает новый URL-адрес сеанса http://localhost:4444/session.

Вы можете просмотреть статус на http://localhost:4444/status

Мы расширили README php-webdriver, чтобы было понятно, какой URL-адрес сервера Selenium следует использовать для какой версии.

ChromeDriver

Если вы запустите Chromedriver из командной строки без параметров:

$ chromedriver

Затем вы используете:

$serverUrl = 'http://localhost:9515';

$driver = RemoteWebDriver::create($serverUrl, DesiredCapabilities::chrome());

Однако вы можете указать порт самостоятельно:

$ chromedriver --port=4444

Затем вы используете:

$serverUrl = 'http://localhost:4444';

GeckoDriver

$ geckodriver

Используйте в своем скрипте:

$serverUrl = 'http://localhost:4444';
$driver = RemoteWebDriver::create($serverUrl, DesiredCapabilities::firefox());

Автономный сервер Selenium

// selenium-server-standalone-#.jar (version 2.x or 3.x)
$serverUrl = 'http://localhost:4444/wd/hub';

// selenium-server-standalone-#.jar (version 4.x)
$serverUrl = 'http://localhost:4444';

$driver = RemoteWebDriver::create($serverUrl, DesiredCapabilities::chrome()); // or other browser
Другие вопросы по тегам