t.me/atinfo_chat Telegram группа по автоматизации тестирования

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

Теги: #<Tag:0x00007f74897d1900> #<Tag:0x00007f74897d1838>

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

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

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

Вы используете метод «найти элемент», а вам нужен метод «найти элементы».
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() находит все элементы и возвращает массив из них.

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

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

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

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