1
votes

sélectionner un bouton par son texte dans Pyppeteer (Python Puppeteer)

Je veux cliquer sur le bouton suivant en utilisant pyppeteer

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

J'essaye de le faire en utilisant Jquery comme suggéré ici :

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


0 commentaires

3 Réponses :


-1
votes

[] est le sélecteur d'attribut css. Crochets en CSS

: contians () est un sélecteur jQuery. https://api.jquery.com/contains-selector/

L'élément button n'a pas d'attribut text . Ce serait textContent . Mais en pratique, cela ne fonctionne généralement pas pour moi. Je ne recommande pas non plus : contains () car il renverra tous les sélecteurs contenant ce texte. (ex. 'texte ici', 'texte ici maintenant', 'texte ici alors', 'était texte ici').

Quand je veux trouver quelque chose par texte, j'utilise .filter () . http://api.jquery.com/filter/

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


0 commentaires

1
votes

Le sélecteur CSS contient du texte actuellement non pris en charge mais vous pouvez utiliser Xpath

Texte de correspondance exacte

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

Contenir du texte

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

Démo:


0 commentaires

0
votes

J'ai eu un problème similaire et je l'ai résolu en utilisant attendre page.waitForSelector (sélecteur)


0 commentaires