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
Freigeben: 2024-10-18 21:59:03
Original
700 Leute haben es durchsucht

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')"
Nach dem Login kopieren

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]"
    Nach dem Login kopieren
  • XPath:

    • Verwendet text():

      element = my_driver.find_element_by_xpath("//span[text()='Control panel']")
      Nach dem Login kopieren
    • Verwendung von enthält():

      element = my_driver.find_element_by_xpath("//span[contains(.,'Control panel')]")
      Nach dem Login kopieren
    • Verwendung von normalize-space():

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

Alternative Lösung

JQuery verwenden:

$('span:contains("Control panel")')
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage