Как мне найти на странице определенный URL и щелкнуть по нему с помощью Puppeteer? - PullRequest
1 голос
/ 10 июня 2019

Последние несколько дней я пытался выяснить, как использовать Puppeteer для поиска на странице ссылок, содержащих определенное слово, и затем нажать на первое.

HTML-код страницы содержит ряд ссылок, таких как:

<a href="https://www.example.com/home">Example - Home</a>

<a href="https://www.example.com/about">Example - About</a>

<a href="https://www.example.com/contact">Example - Contact</a>

и я хотел бы, чтобы он нашел первый URL со словами «example.com» и щелкнул по этой ссылке. Если на этой странице нет таких URL-адресов, я бы хотел, чтобы затем нажмите другую кнопку.

Я не особенно знаком с Javascript и чувствую, что пробовал несколько различных вариантов использования document.querySelector и document.querySelectorAll (и их версии Puppeteer - то есть page.$ и page.$$), но ни один из которых полностью не работает.

Буду очень признателен, если кто-нибудь укажет мне правильное направление!

1 Ответ

1 голос
/ 10 июня 2019

Для этого можно использовать селектор атрибутов [attr*=value]. Цитата по ссылке:

Представляет элементы с именем атрибута attr , значение которого содержит хотя бы одно вхождение значение в строке.

Чтобы использовать селектор в кукловоде, вы можете использовать функцию page.$ для запроса первого элемента:

const link = await page.$('a[href*="example.com"]');
if (link) {
    await link.click();
} else {
    // no link with such attribute on the page, click another button...
}
...