Maison >interface Web >tutoriel CSS >Pourquoi le sélecteur « span:contains('string') » de Selenium échoue-t-il et comment puis-je y remédier ?

Pourquoi le sélecteur « span:contains('string') » de Selenium échoue-t-il et comment puis-je y remédier ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-13 13:44:10209parcourir

Why Does Selenium's `span:contains('string')` Selector Fail, and How Can I Fix It?

Selenium : erreur InvalidSelectorException avec "span:contains('string')"

Lors de la tentative de recherche d'un élément à l'aide du sélecteur CSS avec span:contains('string' ) dans Python Selenium pour Firefox, vous pouvez rencontrer l'erreur :

selenium.common.exceptions.InvalidSelectorException: Message: Given css selector expression "span:contains('string')" is invalid: InvalidSelectorError: 'span:contains('string')' is not a valid selector: "span:contains('string')"

Ce problème se produit car le :contains pseudo-class n'est pas pris en charge par les spécifications CSS ni nativement par Firefox ou Chrome. Il était exclusif au moteur de sélection Selenium 1.0 Sizzle, mais WebDriver ne prend pas en charge de tels sélecteurs.

Solutions alternatives :

  • Utilisez des sélecteurs d'attribut :

    element = "span[attribute_name=attribute_value]"
  • Utilisez XPath, qui prend en charge text(), Méthodes contain() et normalize-space() :

    element = my_driver.find_element_by_xpath("//span[text()='Control panel']")
  • Utilisez jQuery, qui prend en charge les sélecteurs CSS :

    $('span:contains("Control panel")')

Anecdote :

  • Les sélecteurs CSS ne sont pas pris en charge nativement dans les consoles des navigateurs, mais le raccourci $() de jQuery remplace document.querySelector pour permettre leur utilisation lorsque jQuery est présent sur la page.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn