Выберите кнопку по ее тексту в 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
или как это будет работать с этим, но надеюсь, что это поможет.