Maison >développement back-end >Tutoriel Python >Comment gérer \'Selenium.common.exceptions.InvalidSelectorException\' avec \'span:contains(\'string\')\' dans Selenium Python Firefox ?

Comment gérer \'Selenium.common.exceptions.InvalidSelectorException\' avec \'span:contains(\'string\')\' dans Selenium Python Firefox ?

DDD
DDDoriginal
2024-10-18 22:00:04925parcourir

How to Handle

Erreur : "Selenium.common.exceptions.InvalidSelectorException" avec "span:contains('string')" dans Selenium Python Firefox

Lorsque vous essayez de localiser un élément à l'aide de sélecteurs CSS avec la fonction "contient", tel que "span:contains('Control panel')", vous pouvez rencontrer l'erreur suivante :

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

Explication :

Cette erreur se produit car la pseudo-classe ":contains" n'est pas prise en charge dans les sélecteurs CSS natifs de Firefox ou Chrome. Il était auparavant utilisé dans le moteur de sélection Sizzle sur lequel s'appuyait Selenium 1.0, mais a été abandonné dans WebDriver en raison d'incohérences entre les navigateurs.

Solution 1 : utiliser d'autres attributs CSS

Au lieu d'utiliser la pseudo-classe ":contains", recherchez l'élément en utilisant un attribut CSS différent, tel que la classe, l'identifiant ou d'autres propriétés d'identification. Par exemple :

element = "span[attribute_name=attribute_value]"

Solution 2 : Utiliser XPath

XPath prend en charge la pseudo-classe ":contains", vous pouvez donc l'utiliser pour localiser l'élément :

  • Utilisation de "text()":
element = my_driver.find_element_by_xpath("//span[text()='Control panel']")
  • Utilisation de "contient()":
element = my_driver.find_element_by_xpath("//span[contains(.,'Control panel')]")
  • Utilisation de "normalize-space()":
element = my_driver.find_element_by_xpath("//span[normalize-space()='Control panel']")

Solution 3 : Utiliser jQuery

Vous pouvez également utiliser jQuery pour localiser le élément avec la fonction "contient":

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

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