Saya mencoba memilih kotak centang dari situs web tertentu. ini adalah bagian dari kode HTML mereka.

<div class="deliveryCheckboxContainer">
                                                        
<input class="deliveryCheckbox hiddenCheckbox" id="deliveryCheckbox-684" data-deliveryid="684" type="checkbox" /><label for="deliveryCheckbox-684" class=" checkbox classic"></label>
        
</div>

Saya mencoba beberapa pendekatan berbeda. Saya mendapatkan kesalahan yang mengatakan bahwa elemen tersebut tidak ada atau tidak dapat berinteraksi dengannya.

Ini adalah contoh dari apa yang saya coba:

browser.find_element_by_xpath('//*[@id="deliveryCheckbox-684"]').click()
2
Sprowk 5 April 2021, 14:51

5 jawaban

Jawaban Terbaik
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.XPATH,"//label[@for='deliveryCheckbox-684']"))).click()

Anda harus meminta agar elemen dapat diklik dan mengeklik tag label.

Impor

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC
0
Arundeep Chohan 5 April 2021, 18:02

Pertama, periksa jawaban di atas tentang masalah waktu. Kedua, saya pikir Anda mencoba menemukan pencari id dinamis. Coba cari dengan css.

browser.find_element_by_css_selector('.deliveryCheckbox.hiddenCheckbox').click()

Juga, coba gunakan xpath jika label adalah yang benar-benar perlu Anda klik:

browser.find_element_by_xpath("//label[contains(@for,'deliveryCheckbox')]")
0
vitaliis 5 April 2021, 12:47

Coba Gunakan Time sleep Function untuk Lihat apakah bisa Klik Kotak Centang atau Tidak. Jika ya, gunakan metode coba dan kecuali untuk menemukan apakah Kotak Centang telah dimuat, lalu Klik dan lanjutkan. Seperti yang disarankan di atas bahwa fungsi Tidur bukanlah Latihan yang Baik.

Jika Program Tidak Dapat Menemukan Kotak Centang, maka Coba Gunakan untuk menavigasinya melalui driver.find_element_by_id Menavigasi Elemen dengan I'd adalah Teknik Terbaik yang pernah saya gunakan.

Beri tahu saya jika Berhasil..

0
Abdul Rehman 5 April 2021, 12:14

Sejauh yang saya tahu, Anda tidak dapat mengklik elemen tersembunyi di Selenium, dan kelas "hiddenCheckbox" menyiratkan bahwa itu memang tersembunyi. Selain itu, termasuk kesalahan yang Anda dapatkan dan situs web yang Anda coba kikis akan memungkinkan bantuan tambahan. Saat ini saya hanya dapat memberi tahu Anda untuk membuat kotak centang terlihat dalam beberapa cara.

0
Marcin Zaręba 5 April 2021, 11:56

Ini mungkin masalah waktu. Banyak halaman membangun struktur DOM secara dinamis setelah dimuat.

Coba tambahkan sleep selama satu atau dua detik setelah memuat URL sebelum mencoba menemukan elemen itu. Untuk ketahanan yang paling, Anda akan memasukkannya ke dalam satu lingkaran dan batas waktu setelah 10 detik atau lebih.

1
David K. Hess 5 April 2021, 11:56