Selenium WebDriver menyediakan keupayaan untuk berinteraksi dengan elemen web dalam iFrames. Dalam senario yang diterangkan, terdapat dua iFrames bersarang: cq-cf-frame dan cq-gen367. Matlamatnya adalah untuk melakukan tindakan dalam kedua-dua iFrames dan kemudian kembali ke halaman utama.
Kod yang disediakan menghadapi masalah dengan menukar kembali ke iFrame luar (cq-cf-frame) selepas berinteraksi dengan iFrame dalaman (cq-gen367). Apabila cuba mengklik butang "OK" di luar iFrame dalam, WebDriver gagal untuk mengesan elemen.
Untuk menyelesaikan isu ini, anda perlu keluar dari semua iFrames sebelum beralih kembali kepada yang tertentu. Ini boleh dicapai menggunakan driver.switchTo().defaultContent(); kaedah. Secara lalai, kaedah ini akan mengembalikan WebDriver kepada dokumen HTML utama di luar mana-mana iFrames.
Berikut ialah versi kemas kini bagi kod yang disediakan yang berjaya menavigasi iFrames bersarang dan berinteraksi dengan elemen seperti yang dimaksudkan:
<code class="java">/*Line 1 */ driver.switchTo().frame("cq-cf-frame"); /* 2 */ driver.findElement(By.css("#extdd-9 > div.tblRow > input.edititem").click(); /* 3 */ driver.switchTo().frame("cq-gen379"); /* 4 */ driver.findElement(By.id("CQrte")).sendKeys("Tnx"); // Navigate back to the top level driver.switchTo().defaultContent(); // Switch to the outer frame again driver.switchTo().frame("cq-cf-frame"); /* 6 */ driver.findElement(By.xpath("//button[text()='OK']")).click();</code>
Dengan menambahkan driver.switchTo().defaultContent(); antara baris 4 dan 5, WebDriver keluar dari iFrame dalaman dan kembali ke dokumen HTML utama. Kemudian, driver.switchTo().frame("cq-cf-frame"); kenyataan bertukar kembali ke iFrame luar, membenarkan WebDriver berinteraksi dengan butang "OK" seperti yang dijangkakan.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan iFrames Bersarang dengan Berkesan dalam Selenium WebDriver (Java)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!