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

DDD
Freigeben: 2024-10-18 22:00:04
Original
917 Leute haben es durchsucht

How to Handle

Fehler: „Selenium.common.Exceptions.InvalidSelectorException“ mit „span:contains('string')“ in Selenium Python Firefox

Wenn Sie versuchen, ein Element mithilfe von CSS-Selektoren mit der Funktion „enthält“ zu finden, z. B. „span:contains('Control panel')“, kann die folgende Fehlermeldung auftreten:

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

Erklärung :

Dieser Fehler tritt auf, weil die Pseudoklasse „:contains“ in nativen CSS-Selektoren von Firefox oder Chrome nicht unterstützt wird. Es wurde zuvor in der Sizzle Selector Engine verwendet, auf die sich Selenium 1.0 stützte, wurde jedoch aufgrund von Inkonsistenzen zwischen den Browsern in WebDriver gelöscht.

Lösung 1: Andere CSS-Attribute verwenden

Anstatt die Pseudoklasse „:contains“ zu verwenden, suchen Sie nach dem Element mithilfe eines anderen CSS-Attributs, z. B. Klasse, ID oder anderen identifizierenden Eigenschaften. Zum Beispiel:

element = "span[attribute_name=attribute_value]"
Nach dem Login kopieren

Lösung 2: XPath verwenden

XPath unterstützt die Pseudoklasse „:contains“, sodass Sie sie zum Auffinden des Elements verwenden können:

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

Lösung 3: Verwenden Sie jQuery

Alternativ können Sie jQuery verwenden, um die zu finden Element mit der Funktion „enthält“:

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

Das obige ist der detaillierte Inhalt vonWie gehe ich mit „Selenium.common.Exceptions.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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage