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

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

DDD
DDDOriginal
2024-10-18 22:00:04918Durchsuche

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')"

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]"

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

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")')

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!

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