Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengendalikan InvalidSelectorException dengan \'span:contains(\'string\')\' dalam Selenium Python Firefox?

Bagaimana untuk Mengendalikan InvalidSelectorException dengan \'span:contains(\'string\')\' dalam Selenium Python Firefox?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-18 21:59:03640semak imbas

How to Handle InvalidSelectorException with

Selenium.common.exceptions.InvalidSelectorException dengan "span:contains('string')"

Apabila menggunakan Selenium Python dalam Firefox dan mencuba untuk mencari elemen menggunakan pemilih CSS "span:contains('Control panel')", ralat berikut ditemui:

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

Dalam Selenium IDE, kaedah ini berjaya mengesan elemen. Walau bagaimanapun, dalam Python, ia gagal.

Punca Punca

Mengikut spesifikasi CSS, kelas pseudo ":contains" tidak disokong oleh Firefox atau Chrome, walaupun di luar WebDriver. Ia khusus untuk Enjin Pemilih Sizzle yang digunakan dalam Selenium 1.0. Walau bagaimanapun, WebDriver tidak menyokong pemilih CSS gaya Sizzle.

Penyelesaian

Daripada ":contains," gunakan atribut atau pemilih XPath:

  • Atribut:

    element = "span[attribute_name=attribute_value]"
  • XPath:

    • 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']")

Penyelesaian Alternatif

Gunakan jQuery:

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

Trivia

  • Pemilih CSS juga tidak disokong oleh konsol, tetapi jQuery menyokongnya melalui $('...'), yang menggantikan document.querySelector apabila jQuery hadir pada halaman.

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan InvalidSelectorException dengan \'span:contains(\'string\')\' dalam Selenium Python 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