Maison >développement back-end >Tutoriel Python >Comment gérer \'Selenium.common.exceptions.InvalidSelectorException\' avec \'span:contains(\'string\')\' dans Selenium Python Firefox ?
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 :
element = my_driver.find_element_by_xpath("//span[text()='Control panel']")
element = my_driver.find_element_by_xpath("//span[contains(.,'Control panel')]")
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!