Maison >développement back-end >Tutoriel Python >Comment résoudre 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]"
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']")
De plus, vous pouvez utiliser jQuery avec la syntaxe suivante :
$('span:contains("Control panel")')
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!