Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Pemilih CSS dengan :contains() Menyebabkan \'InvalidSelectorException\' dalam Selenium Python dengan Firefox?

Mengapa Pemilih CSS dengan :contains() Menyebabkan \'InvalidSelectorException\' dalam Selenium Python dengan Firefox?

Patricia Arquette
Patricia Arquetteasal
2024-10-18 21:57:03283semak imbas

Why Does CSS Selector with :contains() Cause

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn