Pemilih CSS tidak sah dalam Selenium Python: "selenium.common.exceptions.InvalidSelectorException dengan "span:contains('string')""
Apabila menggunakan Selenium Python dengan Firefox, cuba mencari elemen oleh pemilih CSS dengan kelas pseudo :contains(), seperti "span:contains('Control panel')", boleh mengakibatkan "InvalidSelectorException."
Sebab:
Kelas pseudo :contains() tidak disokong oleh Firefox atau Chrome. Seperti yang dinyatakan dalam Isu #987 dan #1547, WebDriver memilih untuk tidak menyertakan sokongan untuk pemilih CSS gaya Sizzle, yang termasuk :contains().
Penyelesaian Alternatif:
Sebaliknya, pertimbangkan untuk menggunakan sebarang atribut lain bagi teg span, seperti:
element = "span[attribute_name=attribute_value]"
Sebagai alternatif, gunakan XPaths berdasarkan struktur pepohon DOM:
Menggunakan teks ():
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']")
Atau, anda boleh memanfaatkan jQuery untuk pemilih CSS dengan :contains():
$('span:contains("Control panel")')
Nota: Pemilih CSS dengan :contains() adalah juga tidak disokong dalam konsol, tetapi jQuery menimpa document.querySelector dengan pelaksanaannya sendiri, membenarkan penggunaannya.
Atas ialah kandungan terperinci Mengapa Pemilih CSS dengan :contains() Menyebabkan \'InvalidSelectorException\' dalam Selenium Python dengan Firefox?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!