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

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

DDD
Lepaskan: 2024-10-18 22:00:04
asal
990 orang telah melayarinya

How to Handle

Ralat: "Selenium.common.exceptions.InvalidSelectorException" dengan "span:contains('string')" dalam Selenium Python Firefox

Apabila cuba mencari elemen menggunakan pemilih CSS dengan fungsi "mengandungi", seperti "span:contains('Control panel')", anda mungkin menghadapi ralat berikut:

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

Penjelasan :

Ralat ini berlaku kerana kelas pseudo ":contains" tidak disokong dalam pemilih CSS asli oleh Firefox atau Chrome. Ia sebelum ini digunakan dalam Enjin Pemilih Sizzle yang dipercayai oleh Selenium 1.0, tetapi telah digugurkan dalam WebDriver kerana ketidakkonsistenan merentas penyemak imbas.

Penyelesaian 1: Gunakan Atribut CSS Lain

Daripada menggunakan kelas pseudo ":contains", cari elemen menggunakan atribut CSS yang berbeza, seperti kelas, id atau sifat pengenalpastian lain. Contohnya:

element = "span[attribute_name=attribute_value]"
Salin selepas log masuk

Penyelesaian 2: Gunakan XPath

XPath menyokong kelas pseudo ":contains", jadi anda boleh menggunakannya untuk mencari elemen:

  • Menggunakan "text()":
element = my_driver.find_element_by_xpath("//span[text()='Control panel']")
Salin selepas log masuk
  • Menggunakan "contains()":
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 3: Gunakan jQuery

Sebagai alternatif, anda boleh menggunakan jQuery untuk mencari elemen dengan fungsi "mengandungi":

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

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan \'Selenium.common.exceptions.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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan