Heim >Backend-Entwicklung >Python-Tutorial >So lösen Sie eine InvalidSelectorException mit „span:contains(\'string\')\'

So lösen Sie eine InvalidSelectorException mit „span:contains(\'string\')\'

DDD
DDDOriginal
2024-10-18 22:02:03764Durchsuche

How to Resolve InvalidSelectorException with

InvalidSelectorException mit „span:contains('string')“

Beim Versuch, ein Element mit dem CSS-Selektor „span:contains('Control panel') zu finden“ "Es ist eine InvalidSelectorException aufgetreten, die den Fehler anzeigt: „Der angegebene CSS-Selektorausdruck „span:contains('Control panel')“ ist ungültig“.

Wie in Problem Nr. 987 und Nr. 1547 erläutert, enthält :contains Die Pseudoklasse ist nicht in der CSS-Spezifikation enthalten und wird sowohl in Firefox als auch in Chrome nicht unterstützt. Diese Pseudoklasse war einzigartig für die von Selenium 1.0 verwendete Sizzle Selector Engine. Allerdings hat sich WebDriver gegen die Einbindung der CSS-Selektoren von Sizzle entschieden, was zu dieser Inkonsistenz führte.

Um dieses Problem effektiv zu lösen, verwenden Sie alternative Attribute des tag:

element = "span[attribute_name=attribute_value]"

Alternative Lösungen

Berücksichtigen Sie zum Auffinden des Elements mithilfe des bereitgestellten DOM-Baums die folgenden XPath-Optionen:

  • Verwenden von text():

    element = my_driver.find_element_by_xpath("//span[text()='Control panel']")
  • Using contains():

    element = my_driver.find_element_by_xpath("//span[contains(.,'Control panel')]")
  • Using normalize-space():

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

jQuery-Verwendung

Zusätzlich können Sie jQuery mit der folgenden Syntax verwenden:

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

Bemerkenswerte Beobachtung

Nach den Erkenntnissen von @FlorentB werden CSS-Selektoren von der Konsole nicht unterstützt, jQuery bietet jedoch Unterstützung. Die Syntax „$(...)“ in der Konsole stellt eine Kurzschreibweise für „document.querySelector“ dar, die bei der Aufnahme in die Seite von jQuery überschrieben wird.

Das obige ist der detaillierte Inhalt vonSo lösen Sie eine InvalidSelectorException mit „span:contains(\'string\')\'. 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