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

Mary-Kate Olsen
Lepaskan: 2024-10-18 21:59:03
asal
635 orang telah melayarinya

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

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

    • Menggunakan text():

      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

Penyelesaian Alternatif

Gunakan jQuery:

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

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!

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