Rumah  >  Artikel  >  Java  >  Bagaimana untuk Berinteraksi dengan Elemen dalam iFrames Bersarang Menggunakan Selenium WebDriver dalam Java?

Bagaimana untuk Berinteraksi dengan Elemen dalam iFrames Bersarang Menggunakan Selenium WebDriver dalam Java?

DDD
DDDasal
2024-10-30 12:52:27820semak imbas

How to Interact with Elements in Nested iFrames Using Selenium WebDriver in Java?

Cara Menavigasi Nested iFrames dengan Berkesan Menggunakan Selenium WebDriver dalam Java

Dalam Selenium WebDriver, mengendalikan iFrames bersarang boleh menjadi tugas yang mencabar. Mari kita mendalami senario tertentu:

Pertimbangkan struktur HTML berikut, di mana iframe bersarang dalam iframe lain:

<code class="html"><div>
  <iframe id="cq-cf-frame">
    <iframe id="gen367">
      <body id="CQrte">...</body>
    </iframe>
  </iframe>
</div></code>

Matlamat kami adalah untuk berinteraksi dengan elemen dalam kedua-dua iFrames.

Pernyataan Masalah:
Setelah memilih iframe luar dan menavigasi ke iframe dalam, cubaan untuk mengklik elemen dalam iframe luar (cth., butang OK) gagal, mengakibatkan elemen tidak dijumpai pengecualian.

Penyelesaian:

Untuk berjaya menavigasi antara iFrames bersarang dan berinteraksi dengan elemen yang diingini, ikut langkah berikut:

  1. Pilih iFrame Luar:

    <code class="java">driver.switchTo().frame("cq-cf-frame");</code>
  2. Pilih iFrame Dalam:

    <code class="java">driver.switchTo().frame("cq-gen379");</code>
  3. Berinteraksi dengan Elemen Inner iFrame:

    <code class="java">driver.findElement(By.id("CQrte")).sendKeys("Tnx");</code>
  4. Keluar Inner iFrame:

    <code class="java">// Between steps 4 and 5, remove the line:
    // selenium.selectFrame("relative=up");
    
    driver.switchTo().defaultContent(); // This exits both nested frames</code>
  5. Masukkan Semula iFrame Luar:

    <code class="java">driver.switchTo().frame("cq-cf-frame");</code>
  6. Berinteraksi dengan Elemen iFrame Luar:

    <code class="java">// Continue step 6
    driver.findElement(By.xpath("//button[text()='OK']")).click();</code>

Dengan menggunakan driver.switchTo().defaultContent(); sebelum memasuki semula iframe luar, kami dengan berkesan keluar dari semua bingkai bersarang dan kemudian kembali ke bingkai khusus yang kami perlukan. Ini menyelesaikan isu elemen tidak ditemui dan membolehkan kami berinteraksi dengan elemen yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Berinteraksi dengan Elemen dalam iFrames Bersarang Menggunakan Selenium WebDriver dalam 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