Selenium парсинг. ChromeDriver + facebook/php-webdriver

Установка facebook/webdriver

curl -sS https://getcomposer.org/installer | php
php composer.phar require facebook/webdriver

Скачиваем ChromeDriver

https://sites.google.com/a/chromium.org/chromedriver/
Доступны версии под windows, linux, mac: ссылка для версии 2.29
Документация:
https://sites.google.com/a/chromium.org/chromedriver/getting-started
https://sites.google.com/a/chromium.org/chromedriver/capabilities

Запускаем ChromeDriver (chromedriver.exe)
ChromeDriver запустится на 9515 порту.

Пример инициализации драйвера:

$wd_host = 'http://localhost:9515';
$desired_capabilities = DesiredCapabilities::phantomjs();
$desired_capabilities->setCapability('acceptSslCerts', false);
$chromeOptions = new ChromeOptions();
$arguments = ["--user-agent=Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"];
$chromeOptions->addArguments($arguments);
$chromeOptions->addExtensions(['Selenium/Block-image_v1.1.crx']);
$desired_capabilities->setCapability(ChromeOptions::CAPABILITY, $chromeOptions);
$driver = RemoteWebDriver::create($wd_host, $desired_capabilities, 5000, 30000);

где мы подменяем user-agent, и добавляем в браузер заранее скачанное расширение Block-image, блокирующее показ изображений.
Скачать хром расширение можно здесь: http://chrome-extension-downloader.com.

Так же можно запускать ChromeDriver через скрипт facebook/webdriver без отдельного запуска chromedriver.exe.

putenv("webdriver.chrome.driver=/path/to/chromedriver.exe");
$driver = ChromeDriver::start($desired_capabilitie);

Файл index.php

setCapability('acceptSslCerts', false);
$chromeOptions = new ChromeOptions();
$arguments = ["--user-agent=Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"];
$chromeOptions->addArguments($arguments);
$chromeOptions->addExtensions(['Block-image_v1.1.crx']);
$desired_capabilities->setCapability(ChromeOptions::CAPABILITY, $chromeOptions);
$driver = RemoteWebDriver::create($wd_host, $desired_capabilities, 5000, 30000);

// `['id' => 'foo']` matches `
` // `['name' => 'foo']` matches `
` // `['css' => 'input[type=input][value=foo]']` matches `` // `['xpath' => "//input[@type='submit'][contains(@value, 'foo')]"]` matches `` // `['link' => 'Click here']` matches `Click here` // `['class' => 'foo']` matches `
` try { $driver->get('https://www.google.ru'); // Ожидаем появление элемента input 30 секунд. Если не нашли - исключение в вышестоящий try $driver->wait(30, 250)->until( WebDriverExpectedCondition::visibilityOfElementLocated(WebDriverBy::cssSelector(''input.gsfi')) ); $driver->findElement(WebDriverBy::cssSelector('input.gsfi'))->sendKeys("test"); // Проверяем доступность элемента if (!isElementPresent($driver, WebDriverBy::cssSelector("button.sbico-c"))) { echo "button NOT FOUND!!!"; exit; } //

http://www.seleniumhq.org/download/
https://github.com/facebook/php-webdriver
https://github.com/facebook/php-webdriver/wiki/HowTo-Wait