Heim >Backend-Entwicklung >Python-Tutorial >So lösen Sie eine 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]"
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']")
Zusätzlich können Sie jQuery mit der folgenden Syntax verwenden:
$('span:contains("Control panel")')
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!