Не могу запустить php-webdriver

123
Андрей Воробьев
На сайте с 12.11.2018
Offline
22
#11
Всё должно работать, вместо standalone.jar используйте chromedriver для управления chrome/chromium и geckodriver для управления firefox.

В ридми это всё указано - https://github.com/php-webdriver/php-webdriver .

* Установка пхп библиотеки для вебдрайвера - php-webdriver/webdriver.
php7 ./bin/composer.phar require php-webdriver/webdriver

* Установка *driver для указанного браузера, возьмём chromedriver для хрома.
Для разных версий хрома нужны разные версии драйвера, скачать драйвер для своей версии хрома: https://sites.google.com/a/chromium.org/chromedriver/downloads .

* Запустить вручную chromedriver:
bin/chromedriver --port=7010 --whitelisted-ips=127.0.0.1
Можно посмотреть все доступные опции запуска:
bin/chromedriver -h

* Пример скрипта:
$ php example.php
Title: Не могу запустить php-webdriver - Веб-строительство - Сайтостроение - Форум об интернет-маркетинге
Topic views: 181
Ok, will close browser after 10 sec
done.
<?php

use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\WebDriverBy;
use Facebook\WebDriver\WebDriverExpectedCondition;

require 'vendor/autoload.php';

$host = 'http://localhost:7010';

$capabilities = DesiredCapabilities::chrome();

$driver = RemoteWebDriver::create($host, $capabilities);

$driver->get('https://searchengines.guru/ru/forum/1035407');

echo "Title: " . $driver->getTitle() . PHP_EOL;

$el = $driver->findElement(
    WebDriverBy::xpath("//div[contains(@class, 'comment__views')][contains(@title, ':')]")
);
echo "Topic views: " . $el->getText() . PHP_EOL;

$driver->findElement(WebDriverBy::id('searchHeader'))->click();
sleep(3);

$driver->findElement(WebDriverBy::id('searchPanelInput'))
    ->sendKeys('webdriver');
$driver->findElement(WebDriverBy::id('searchPanelButton'))
    ->click();

$driver->wait()->until(
    WebDriverExpectedCondition::visibilityOfElementLocated(WebDriverBy::id('keyword_input'))
);
echo "Ok, will close browser after 10 sec" . PHP_EOL;
sleep(10);

echo "done." . PHP_EOL;
$driver->quit();
exit(0);

upd: поправил форматирование кода

php-webdriver/php-webdriver
php-webdriver/php-webdriver
  • php-webdriver
  • github.com
Php-webdriver library is PHP language binding for Selenium WebDriver, which allows you to control web browsers from PHP. This library is compatible with Selenium server version 2.x, 3.x and 4.x. The library supports JsonWireProtocol and also implements experimental support of W3C WebDriver. The W3C WebDriver support is not yet full-featured...
S3
На сайте с 29.03.2012
Offline
366
#12
Dram #:
Если вы знаете как запустить это добро, буду рад следовать вашим инструкциям

Как только перейдете на Пайтон - запросто) я уже 3 года не пишу на ПХП и нет желания разбираться что и как не так. На Пайтоне я работал с парсерами, с селениумом и BS - там все запускается с полпинка

D
На сайте с 28.06.2008
Offline
1114
#13

Большое спасибо за подробную инструкцию!

1. Установил через компостер  php-webdriver/webdriver.

2. проверил версию хрома - Google Chrome 84.0.4147.89

3. Скачал  ChromeDriver 84.0.4147.30

4. Перешел в папку куда скачал, запускаю   chromedriver --port=7010 --whitelisted-ips=127.0.0.1

получаю в консоли

Starting ChromeDriver 76.0.3809.68 (420c9498db8ce8fcd190a954d51297672c1515d5-refs/branch-heads/3809@{#864}) on port 7010
Remote connections are allowed by a whitelist (127.0.0.1).
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.

Вроде запустился да? (Я кстати хч почему Starting ChromeDriver 76.0.3809.68 не соответствует тому номеру что я скачал)

4. Запускаю ваш скрипт изменив в нем только путь до autoload.php

но получаю ошибку

PHP Fatal error:  Uncaught Facebook\WebDriver\Exception\UnknownServerException: unknown error: Chrome failed to start: exited abnormally
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

D
На сайте с 28.06.2008
Offline
1114
#14
Sly32 - да блин знаю, у меня сын подошел посмотреть с чем я мучаюсь, сел рядом и на питоне запустил этот же селениум за пару минут!!! Зара мля! Тут же был изгнан из комнаты чтобы не делал бате нервы! )))
S3
На сайте с 29.03.2012
Offline
366
#15
Dram #:
у меня сын подошел посмотреть с чем я мучаюсь, сел рядом и на питоне запустил этот же селениум за пару минут!!!

Так думаю, стоит задуматься, нужно ли тратить время на пхп? ))) Может, пойти по стопам сына?

D
На сайте с 28.06.2008
Offline
1114
#16

Попробовал запустил драйвер через Джаву

java -"Dwebdriver.chrome.driver"=/var/www/com/chromedriver  -jar /var/www/com/selenium.jar

Все запустилось, запускаю скрипт изменив 

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

PHP Fatal error:  Uncaught Facebook\WebDriver\Exception\WebDriverException: JSON decoding of remote response failed.
Error code: 4
The response: '<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="/assets/displayhelpservlet.css" media="all"/>
  <link href="/assets/favicon.ico" rel="icon" type="image/x-icon" />
  <script src="/assets/jquery-3.1.1.min.js" type="text/javascript"></script>
  <script src="/assets/displayhelpservlet.js" type="text/javascript"></script>
  <script type="text/javascript">
    var json = Object.freeze('{"consoleLink": "\u002fwd\u002fhub","type": "Standalone","class": "org.openqa.grid.web.servlet.DisplayHelpHandler$DisplayHelpServletConfig","version": "3.141.59"}');
  
</script>
</head>
<body>

<div id="content">
  <div id="help-heading">
    <h1><span id="logo"></span></h1>
    <h2>Selenium <span class="se-type"></span>&nbsp;v.<span class="se-version"></span></h2>
  </div>

  <div id="content-body">
    <p>
      Whoops! The URL specified route in /var/www/com/vendor/facebook/webdriver/lib/Remote/HttpCommandExecutor.php on line 303

Уже вроде лучше, хоть что-то ... буду гуглить дальше

Андрей Воробьев
На сайте с 12.11.2018
Offline
22
#17

У меня работает, у вас какая-то локальная проблема.

$ bin/chromedriver --version
ChromeDriver 81.0.4044.138 (8c6c7ba89cc9453625af54f11fd83179e23450fa-refs/branch-heads/4044@{#999})

$ bin/chromedriver --port=7010 --whitelisted-ips=127.0.0.1
Starting ChromeDriver 81.0.4044.138 (8c6c7ba89cc9453625af54f11fd83179e23450fa-refs/branch-heads/4044@{#999}) on port 7010
Remote connections are allowed by a whitelist (127.0.0.1).
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
^C

$ ~/.local/opt/chromium-portable/chrome --version
Chromium 82.0.4057.0

В моем случае это совместимые версии хромиума и хромдрайвера.

На питоне, вероятно, работает потому-что библиотека самостоятельно выкачивает все необходимое с правильными версиями и зависимостями.

> Вроде запустился да? (Я кстати хч почему Starting ChromeDriver

> 76.0.3809.68 не соответствует тому номеру что я скачал)

Может быть, стартует не тот хромдрайвер, а какой-то другой?

> unknown error: Chrome failed to start: exited abnormally

Может быть, стартует какой-то не тот хром?


У вас, скорее всего, разъезжаются версии хромдрайвера и хрома. Изучите это внимательнее.

D
На сайте с 28.06.2008
Offline
1114
#18

Удалил Хром из системы, удалил Хромдрайвер. Установил все заново.

Проверил версию - 

Google Chrome 86.0.4240.75

Скачал вебдрайвер версии (теперь при запуске пишет правильную версию, раньше реально старая стояла)

 ChromeDriver 86.0.4240.22

Повторил запуск - те же ошибки (((

vovka83
На сайте с 30.03.2010
Offline
134
#19
Dram #:

Удалил Хром из системы, удалил Хромдрайвер. Установил все заново.

Проверил версию - 

Скачал вебдрайвер версии (теперь при запуске пишет правильную версию, раньше реально старая стояла)

Повторил запуск - те же ошибки (((

Получилось разобраться? У меня ошибки один в один. В жужле пусто.
D
На сайте с 28.06.2008
Offline
1114
#20
vovka83 #:
Получилось разобраться? У меня ошибки один в один. В жужле пусто.

Нет, так я его и не запустил ((

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий