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

DDD
Libérer: 2024-10-18 22:00:04
original
833 Les gens l'ont consulté

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')"
Copier après la connexion

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]"
Copier après la connexion

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']")
Copier après la connexion
  • Utilisation de "contient()":
element = my_driver.find_element_by_xpath("//span[contains(.,'Control panel')]")
Copier après la connexion
  • Utilisation de "normalize-space()":
element = my_driver.find_element_by_xpath("//span[normalize-space()='Control panel']")
Copier après la connexion

Solution 3 : Utiliser jQuery

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

$('span:contains("Control panel")')
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!