Selenium.common.Exceptions.InvalidSelectorException mit "span:contains('string')"
Bei Verwendung von Selenium Python in Firefox und beim Versuch Um ein Element mithilfe des CSS-Selektors „span:contains('Control panel')“ zu finden, tritt der folgende Fehler auf:
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')"
In Selenium IDE findet diese Methode das Element erfolgreich. In Python schlägt dies jedoch fehl.
Ursache
Gemäß der CSS-Spezifikation wird die Pseudoklasse „:contains“ von Firefox oder Chrome nicht unterstützt. auch außerhalb von WebDriver. Es war spezifisch für die Sizzle Selector Engine, die in Selenium 1.0 verwendet wurde. Allerdings unterstützt WebDriver keine CSS-Selektoren im Sizzle-Stil.
Lösung
Anstelle von „:contains“ verwenden Sie Attribute oder XPath-Selektoren:
Attribute:
element = "span[attribute_name=attribute_value]"
XPath:
Verwendet text():
element = my_driver.find_element_by_xpath("//span[text()='Control panel']")
Verwendung von enthält():
element = my_driver.find_element_by_xpath("//span[contains(.,'Control panel')]")
Verwendung von normalize-space():
element = my_driver.find_element_by_xpath("//span[normalize-space()='Control panel']")
Alternative Lösung
JQuery verwenden:
$('span:contains("Control panel")')
Trivia
Das obige ist der detaillierte Inhalt vonWie gehe ich mit InvalidSelectorException mit „span:contains(\'string\')\' in Selenium Python Firefox um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!