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

Patricia Arquette
Lepaskan: 2024-10-18 21:57:03
asal
239 orang telah melayarinya

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]"
Salin selepas log masuk

Sebagai alternatif, gunakan XPaths berdasarkan struktur pepohon DOM:

  • Menggunakan teks ():

    element = my_driver.find_element_by_xpath("//span[text()='Control panel']")
    Salin selepas log masuk
  • Menggunakan mengandungi():

    element = my_driver.find_element_by_xpath("//span[contains(.,'Control panel')]")
    Salin selepas log masuk
  • Menggunakan normalize-space():

    element = my_driver.find_element_by_xpath("//span[normalize-space()='Control panel']")
    Salin selepas log masuk

Atau, anda boleh memanfaatkan jQuery untuk pemilih CSS dengan :contains():

$('span:contains("Control panel")')
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan