выберите кнопку по ее тексту в Pyppeteer (Python Puppeteer) - PullRequest
0 голосов
/ 04 января 2019

Я хочу нажать следующую кнопку, используя 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

Ответы [ 2 ]

0 голосов
/ 05 января 2019

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

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

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

Содержит текст

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

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

0 голосов
/ 05 января 2019

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

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

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

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

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

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

...