Heim >Backend-Entwicklung >Python-Tutorial >Wie gehe ich mit InvalidSelectorException mit „span:contains(\'string\')\' in Selenium Python Firefox um?

Wie gehe ich mit InvalidSelectorException mit „span:contains(\'string\')\' in Selenium Python Firefox um?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-18 21:59:03710Durchsuche

How to Handle InvalidSelectorException with

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

  • CSS-Selektoren werden von der Konsole ebenfalls nicht unterstützt, aber jQuery unterstützt sie über $('...'), das document.querySelector überschreibt, wenn jQuery auf der Seite vorhanden ist.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn