Heim >Web-Frontend >CSS-Tutorial >Warum löst Selenium eine InvalidSelectorException mit „span:contains('Control panel')' aus?

Warum löst Selenium eine InvalidSelectorException mit „span:contains('Control panel')' aus?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-14 17:58:11674Durchsuche

Why Does Selenium Throw an InvalidSelectorException with

Selenium InvalidSelectorException mit „span:contains('Control panel')“

Versuch, ein Element mithilfe des CSS-Selektors „span:“ zu finden enthält('Systemsteuerung')" in Selenium Python kann zu einer InvalidSelectorException führen. Dieser Fehler tritt auf, weil die Pseudoklasse „contains“ von Firefox oder Chrome nicht erkannt wird.

Die CSS-Spezifikation enthält die Pseudoklasse „:contains“ nicht. Daher wird es von Browsern, die dem Standard entsprechen, nicht unterstützt. Darüber hinaus unterstützt WebDriver nicht die Auswahl-Engine „Sizzle“, die die Verwendung von „:contains“ in Selenium 1.0 ermöglichte.

Alternative Lösungen

Anstelle von „ :enthält", erwägen Sie die Verwendung von Attributen des Tag zur Identifizierung des Elements:

element = "span[attribute_name=attribute_value]"

Alternativ können Sie XPath-Ausdrücke verwenden:

  • Mit „text()“:
element = my_driver.find_element_by_xpath("//span[text()='Control panel']")
  • Verwenden „contains()“:
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']")

Verwendung von jQuery

jQuery bietet eine Problemumgehung:

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

Das obige ist der detaillierte Inhalt vonWarum löst Selenium eine InvalidSelectorException mit „span:contains('Control panel')' aus?. 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