php + selenium + сохранение в базе данных

webdriver
phpunit
Теги: #<Tag:0x00007fedb951aff0> #<Tag:0x00007fedb951aeb0>

(Саша Баз) #1

Помогите! Мне нужно выбрать на странице olx все ссылки и сохранить их. При помощи теста selenium я вывел на странице интересующие объявления, а теперь заголовки и ссылки нужно сохранить в бд.


(Bolatbek) #2

Давайте сформулируем правильно вопрос: на каком этапе у вас возникли трудности?


(Саша Баз) #3

на этапе выбора всех ссылок на странице.
я делаю так: $driver->findElement(WebDriverBy::cssSelector или Id('ххххх'));
таким образом выбираю конкретный элемент, а мне нужно выбрать все как-то типа
$driver->findElement(WebDriverBy::className('title')); но оно выдает ошибку.
Если б таким образом оно выбирало первый див с класом title, то тогда я бы в for его запихнул и все было бы ок, он нет..
Как поступить в таком случае?


(Сергей Блохин) #4

Вы используете метод «найти элемент», а вам нужен метод «найти элементы».
https://facebook.github.io/php-webdriver/classes/WebDriverSearchContext.html

// Find the first WebDriverElement within this element using the given mechanism.
findElement()

// Find all WebDriverElements within this element using the given mechanism.
findElements()

findElement() находит первый элемент на странице и возвращает его.
findElements() находит все элементы и возвращает массив из них.


(Bolatbek) #5

Второй вопрос - для чего вам нужен Selenium? Что вы еще делаете этим инструментом?
У меня смутное подозрение, что пишется не автотест, а парсер.


(Виталий Коряков) #6

Или тестовое задание


(Сергей Блохин) #7

Если стоит задача сграбить сайт, то не вижу смысла запускать тяжёлый Selenium.
Используйте Unirest для добывания исходников нужной страницы.
Используйте любой парсер HTML, например, http://php.net/manual/ru/domdocument.loadhtmlfile.php для разбора.
Ищите все элементы по селектору h3 > a. Атрибут href будет искомой ссылкой, а .innerText — будет вашим title.


(Саша Баз) #8

Это действительно было тестовое задание, с селениумом столкнулся впервые, спасибо за советы.