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'))
3 Réponses :
[]
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'; });
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:
J'ai eu un problème similaire et je l'ai résolu en utilisant
attendre page.waitForSelector (sélecteur)