Помогите! Мне нужно выбрать на странице 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, например, PHP: DOMDocument::loadHTMLFile - Manual для разбора.
Ищите все элементы по селектору h3 > a
. Атрибут href
будет искомой ссылкой, а .innerText
— будет вашим title
.
Это действительно было тестовое задание, с селениумом столкнулся впервые, спасибо за советы.