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


Dram
498

1. Установил php composer.phar require facebook/webdriver

2. Скачал и запустил java -jar selenium-server-standalone-3.141.59.jar

3. Тестирую скрипт

<?php

// Указываем пространство имен
namespace FacebookWebDriver;


// Указываем какие классы будут использоватся
use FacebookWebDriverRemoteDesiredCapabilities;
use FacebookWebDriverRemoteRemoteWebDriver;

//Пподключаем автолоадер классов
require_once('/root/vendor/autoload.php');

// Задаем хост на котором запущен Selenium (localhost - если же на этом компьютере) и номер порта (4444 - порт по умолчанию, если мы не задали другой)
$host = 'http://localhost:4444/wd/hub';

// Если мы управляем Firefox, то инициализируем web драйвер (5000 - время ожидания ответа от Selenium) и запускаем Firefox
$driver = RemoteWebDriver::create($host, DesiredCapabilities::firefox(), 5000);

// Для chrom: $driver = RemoteWebDriver::create($host, DesiredCapabilities::chrome());

//  Подаем команду браузеру переход на URL: 'http://docs.seleniumhq.org/'
$driver->get('http://docs.seleniumhq.org/');

// Указываем id тега (menu_about), которым будем манипулировать
$tag = WebDriverBy::id('menu_about');

// Производим поиск на текущей странице указанного тега
$link = $driver->findElement( $tag);

// Ну и собственно щелкаем по заданному тегу
$link->click();

Получаю ошибку

PHP Fatal error:  Uncaught FacebookWebDriverExceptionUnknownServerException: 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.)
  (Driver info: chromedriver=76.0.3809.68 (420c9498db8ce8fcd190a954d51297672c1515d5-refs/branch-heads/3809@{#864}),platform=Linux 4.9.0-9-amd64 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 271 milliseconds

В момент запуска скрипта в консоле где запустил Селениум — появляется сообщение

17:14:30.305 INFO [ActiveSessionFactory.apply] - Capabilities are: {
  "browserName": "chrome",
  "chromeOptions": {
    "w3c": false,
    "binary": ""
  }
}
17:14:30.307 INFO [ActiveSessionFactory.lambda$apply$11] - Matched factory org.openqa.selenium.grid.session.remote.ServicedSession$Factory (provider: org.openqa.selenium.chrome.ChromeDriverService)
Starting ChromeDriver 76.0.3809.68 (420c9498db8ce8fcd190a954d51297672c1515d5-refs/branch-heads/3809@{#864}) on port 10224
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.


lutskboy

попробуйте phantom js . может он подойдет


Неуч

Dram :
  (unknown error: DevToolsActivePort file doesn’t exist)

Попробуйте подключать драйвер хрома, а не лисы


tommy-gung

firefox установлен?


Dram

Нет, ни хром ни лису отдельно не устанавливал. Может знаете ссылку на мануал где подробно расписано как запустить пхп + селениум чтобы поиграться в парсинге на этой связке?


lutskboy

читайте мой коммент выше. работает нормально хоть и давно не обновлялся

не знаю как  пхп + селениум но можете попробовать node.js + pupetter . ето не сложно если есть небольшие знания js

парсить можно с ним все. даже то что на ajax при клике подгружается. можно подключить jquery если его нет на странице. тогда выборка чего то еще более упрощается


Dram

lutskboy  спс, запустил фантом, все просто, все работает, спс!


Dram

Теперь не могу соединить его с пхп, не поможите?

Вот что делаю.

В скрипте пхп

<?php
$test = shell_exec('/usr/bin/phantomjs /var/www/com/phantom.js https://yandex.ru/');

var_dump($test);

В скрипте phantom.js

"use strict";
var page = require('webpage').create(),
    system = require('system'),
    url = system.args[1];

page.open(url, function(status) {
    if (status === "success") {
        page.includeJs("https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
            page.evaluate(function() {
                console.log($('h1').html());
            });
            phantom.exit(0);
        });
    } else {
        phantom.exit(1);
    }
});

В итоге  выводит в консоль NULL


Dram

Отвечаю сам себе, может еще кому-то поможет, вот код на получения хмл кода страницы

"use strict";
var page = require('webpage').create(),
    system = require('system'),
    url = system.args[1];

page.open(url, function () {
    var str = page.evaluate(function () {
        return document.getElementsByTagName('html')[0].innerHTML
    });
    console.log(str);
    phantom.exit();
});


Sly32

Dram, вот это неправильный путь. Ты, вместо того, чтобы разобраться почему не работает, прикрутил еще один фреймворк как какую-то миддлварю. Зачем? 
Dram - Профиль вебмастера - Форум об интернет-маркетинге
Dram — Профиль вебмастера — Форум об интернет-маркетинге

  • searchengines.guru
Dram — Профиль вебмастера


Dram

Sly32 #:
Dram, вот это неправильный путь. Ты, вместо того, чтобы разобраться почему не работает, прикрутил еще один фреймворк как какую-то миддлварю. Зачем? 

Sly32  я так и не нашел в сети работающих мануалов по запуску селениума + пхп.  Есть буквально пару штук, но выполнив все шаги получаю ошибку (самый первый пост).

Если вы знаете как запустить это добро, буду рад следовать вашим инструкциям

На данный момент сам селениум сервер запускается нормально, но при запуске скрипта php получаю ошибку

PHP Fatal error:  Uncaught FacebookWebDriverExceptionSessionNotCreatedException: Unable to create new service: ChromeDriverService
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'fin', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.9.0-9-amd64', java.version: '1.8.0_222'
Driver info: driver.version: unknown in /var/www/com/vendor/facebook/webdriver/lib/Exception/WebDriverException.php:154

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *