Masalah: Memilih elemen dalam iframe atau iframe bersarang tanpa bertukar secara eksplisit bingkai.
Jawapan:
Tidak, tidak mungkin berinteraksi secara langsung dengan elemen dalam iframe tanpa bertukar kepada iframe masing-masing. Fokus lalai Selenium kekal pada Tetingkap Atas.
Sebab:
Apabila halaman web dimuatkan, tumpuan Selenium adalah pada tetingkap utama (peringkat atas). Untuk berinteraksi dengan elemen dalam iframe, anda mesti bertukar secara eksplisit kepada iframe itu.
Kaedah Penukaran Bingkai:
Terdapat tiga cara untuk menukar bingkai:
Mengikut Bingkai Nama:
driver.switch_to.frame("iframe_name")
Mengikut ID Bingkai:
driver.switch_to.frame("iframe_id")
Mengikut Bingkai Indeks:
driver.switch_to.frame(0) # Index of the frame
Untuk bertukar kembali ke bingkai utama, gunakan:
driver.switch_to.default_content()
Pendekatan Lebih Baik: WebDriverWait
Pendekatan yang lebih baik ialah menggunakan WebDriverWait dengan keadaan frame_to_be_available_and_switch_to_it:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.ID, "iframe_id")))Kaedah ini menunggu sehingga bingkai yang ditentukan tersedia dan kemudian beralih kepadanya.Mengendalikan Elemen Dimuatkan Secara Dinamik:
Jika elemen dimuatkan secara dinamik, anda mungkin perlu menggunakan ExpectedConditions untuk menunggu elemen itu kelihatan sebelum berinteraksi dengannya. ia:WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "element_id")))
Rujukan:
Untuk maklumat lanjut, rujuk:Atas ialah kandungan terperinci Bolehkah Selenium Berinteraksi dengan Elemen Iframe Tanpa Menukar Bingkai Secara Eksplisit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!