Selenium.common.exceptions.InvalidSelectorException dengan "span:contains('string')"
Apabila menggunakan Selenium Python dalam Firefox dan mencuba untuk mencari elemen menggunakan pemilih CSS "span:contains('Control panel')", ralat berikut ditemui:
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')"
Dalam Selenium IDE, kaedah ini berjaya mengesan elemen. Walau bagaimanapun, dalam Python, ia gagal.
Punca Punca
Mengikut spesifikasi CSS, kelas pseudo ":contains" tidak disokong oleh Firefox atau Chrome, walaupun di luar WebDriver. Ia khusus untuk Enjin Pemilih Sizzle yang digunakan dalam Selenium 1.0. Walau bagaimanapun, WebDriver tidak menyokong pemilih CSS gaya Sizzle.
Penyelesaian
Daripada ":contains," gunakan atribut atau pemilih XPath:
Atribut:
element = "span[attribute_name=attribute_value]"
XPath:
Menggunakan text():
element = my_driver.find_element_by_xpath("//span[text()='Control panel']")
Menggunakan mengandungi():
element = my_driver.find_element_by_xpath("//span[contains(.,'Control panel')]")
Menggunakan normalize-space():
element = my_driver.find_element_by_xpath("//span[normalize-space()='Control panel']")
Penyelesaian Alternatif
Gunakan jQuery:
$('span:contains("Control panel")')
Trivia
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan InvalidSelectorException dengan \'span:contains(\'string\')\' dalam Selenium Python Firefox?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!