Выберите кнопку по ее тексту в Pyppeteer (Python Puppeteer)

Я хочу нажать на следующую кнопку, используя pyppeteer

<button class="r3f3s" tabindex="0">Text here</button>

Я пытаюсь сделать это с помощью Jquery как предложено здесь:

btn = await page.querySelector('button[text=\'Text here\']')

или здесь:

btn = await page.querySelector('button:contains(text(), 'Text here'))

Но это не похоже на работу. Я также заметил, что многие примеры, опубликованные в Интернете в Jquery, похоже, не работают на консоли Google Chrome, поэтому не работают на pyppeteer,

У меня вопрос, как я могу выбрать кнопку по ее тексту, а также, может ли кто-нибудь направить меня к руководству, объясняющему, какой синтаксис селектора Jquery подходит для работы с консолью Google Chrome (кукловод)? потому что этот не кажется правильным, и эта ошибка не является показательной:

Uncaught DOMException: Failed to execute 'querySelector' on 'Document': is not a valid selector.
at <anonymous>:1:10

3 ответа

CSS селектор содержит текст, который в настоящее время не поддерживается, но вы можете использовать Xpath

Точный текст соответствия

btn = await page.$x('//button[text()="Text here"]')

Содержать текст

btn = await page.$x('//button[contains(text(), "Text he")]')

Демо-версия:

У меня была аналогичная проблема, и я решил ее с помощью await page.waitForSelector(selector)

[] является селектором атрибута css Квадратные скобки в CSS

:contians() является селектором jQuery https://api.jquery.com/contains-selector/

Элемент кнопки не имеет text приписывать. Это было бы textContent, Но на практике это обычно не работает для меня. Я тоже не рекомендую :contains() так как он вернет все селекторы, которые содержат этот текст. (напр. "текст здесь", "текст здесь сейчас", "текст здесь тогда", "текст здесь").

Когда я хочу найти что-то по тексту, я использую .filter(), http://api.jquery.com/filter/

$('button').filter(function() { return this.textContent === 'Text here'; });

Не знаком с pyppeteer или как это будет работать с этим, но надеюсь, что это поможет.

Другие вопросы по тегам