Maison  >  Article  >  développement back-end  >  Comment résoudre InvalidSelectorException avec \"span:contains(\'string\')\"

Comment résoudre InvalidSelectorException avec \"span:contains(\'string\')\"

DDD
DDDoriginal
2024-10-18 22:02:03663parcourir

How to Resolve InvalidSelectorException with

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

Lors de la tentative de localisation d'un élément avec le sélecteur CSS "span:contains('Control panel') ", une InvalidSelectorException est rencontrée, affichant l'erreur : "Étant donné l'expression du sélecteur CSS "span:contains('Control panel')" n'est pas valide".

Comme expliqué dans les numéros 987 et 1547, le :contains la pseudo-classe n'est pas incluse dans la spécification CSS et n'est pas prise en charge dans Firefox et Chrome. Cette pseudo-classe était unique au moteur de sélection Sizzle utilisé par Selenium 1.0. Cependant, WebDriver a choisi de ne pas incorporer les sélecteurs CSS de Sizzle, ce qui a entraîné cette incohérence.

Pour résoudre ce problème efficacement, utilisez des attributs alternatifs du tag :

element = "span[attribute_name=attribute_value]"

Solutions alternatives

Pour localiser l'élément à l'aide de l'arborescence DOM fournie, envisagez les options XPath suivantes :

  • 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 normalize-space() :

    element = my_driver.find_element_by_xpath("//span[normalize-space()='Control panel']")

Utilisation de jQuery

De plus, vous pouvez utiliser jQuery avec la syntaxe suivante :

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

Observation remarquable

Selon la perspicacité de @FlorentB, les sélecteurs CSS ne sont pas pris en charge par la console, mais jQuery fournit une prise en charge. La syntaxe '$(...)' dans la console représente une notation abrégée pour 'document.querySelector', qui est remplacée par jQuery lors de son inclusion dans 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