Rumah >hujung hadapan web >tutorial css >Mengapa Pemilih `span:contains('string')` Selenium Gagal, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Pemilih `span:contains('string')` Selenium Gagal, dan Bagaimana Saya Boleh Membetulkannya?

Patricia Arquette
Patricia Arquetteasal
2024-12-13 13:44:10209semak imbas

Why Does Selenium's `span:contains('string')` Selector Fail, and How Can I Fix It?

Selenium: InvalidSelectorException Ralat dengan "span:contains('string')"

Apabila cuba mencari elemen menggunakan pemilih CSS dengan span:contains('string' ) dalam Python Selenium untuk Firefox, anda mungkin menghadapi ralat:

selenium.common.exceptions.InvalidSelectorException: Message: Given css selector expression "span:contains('string')" is invalid: InvalidSelectorError: 'span:contains('string')' is not a valid selector: "span:contains('string')"

Isu ini timbul kerana the :contains pseudo-class tidak disokong oleh spesifikasi CSS mahupun secara asli oleh Firefox atau Chrome. Ia eksklusif untuk Enjin Pemilih Selenium 1.0 Sizzle, tetapi WebDriver tidak menyokong pemilih sedemikian.

Penyelesaian Alternatif:

  • Gunakan pemilih atribut:

    element = "span[attribute_name=attribute_value]"
  • Gunakan XPath, yang menyokong text(), contains(), dan normalize-space() kaedah:

    element = my_driver.find_element_by_xpath("//span[text()='Control panel']")
  • Gunakan jQuery, yang menyokong pemilih CSS:

    $('span:contains("Control panel")')

Trivia:

  • Pemilih CSS bukan disokong secara asli dalam konsol penyemak imbas, tetapi pintasan $() jQuery mengatasi document.querySelector untuk mendayakan penggunaannya apabila jQuery hadir pada halaman.

Atas ialah kandungan terperinci Mengapa Pemilih `span:contains('string')` Selenium Gagal, dan Bagaimana Saya Boleh Membetulkannya?. 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