Rumah >pembangunan bahagian belakang >Tutorial Python >Cara Menyelesaikan InvalidSelectorException dengan \'span:contains(\'string\')\'
Apabila cuba mencari elemen dengan pemilih CSS "span:contains('Control panel') ", InvalidSelectorException ditemui, memaparkan ralat: "Diberi ungkapan pemilih css "span:contains('Control panel')" adalah tidak sah".
Seperti yang dijelaskan dalam Isu #987 dan #1547, :contains pseudo-class tidak termasuk dalam spesifikasi CSS dan tidak mempunyai sokongan dalam kedua-dua Firefox dan Chrome. Kelas pseudo ini unik kepada Enjin Pemilih Sizzle yang digunakan oleh Selenium 1.0. Walau bagaimanapun, WebDriver memilih untuk tidak memasukkan pemilih CSS Sizzle, menyebabkan ketidakkonsistenan ini.
Untuk menyelesaikan isu ini dengan berkesan, gunakan atribut alternatif bagi tag:
element = "span[attribute_name=attribute_value]"
Untuk mencari elemen menggunakan Pokok DOM yang disediakan, pertimbangkan pilihan XPath berikut:
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']")
Selain itu, anda boleh menggunakan jQuery dengan sintaks berikut:
$('span:contains("Control panel")')
Mengikut pandangan @FlorentB, pemilih CSS tidak disokong oleh konsol, namun jQuery menyediakan sokongan. Sintaks '$(...)' dalam konsol mewakili notasi trengkas untuk 'document.querySelector', yang akan digantikan oleh jQuery apabila ia dimasukkan ke dalam halaman.
Atas ialah kandungan terperinci Cara Menyelesaikan InvalidSelectorException dengan \'span:contains(\'string\')\'. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!