Rumah  >  Artikel  >  Java  >  Bagaimana untuk Mengendalikan iFrames Bersarang dengan Berkesan dalam Selenium WebDriver (Java)?

Bagaimana untuk Mengendalikan iFrames Bersarang dengan Berkesan dalam Selenium WebDriver (Java)?

Susan Sarandon
Susan Sarandonasal
2024-10-30 14:08:18749semak imbas

How to Effectively Handle Nested iFrames in Selenium WebDriver (Java)?

Mengendalikan Nested iFrames dalam Selenium WebDriver (Java)

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.

Masalah

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.

Penyelesaian

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!

Kenyataan:
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