Heim  >  Artikel  >  Java  >  Wie interagiere ich mit Elementen in verschachtelten iFrames mithilfe von Selenium WebDriver in Java?

Wie interagiere ich mit Elementen in verschachtelten iFrames mithilfe von Selenium WebDriver in Java?

DDD
DDDOriginal
2024-10-30 12:52:27889Durchsuche

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

So navigieren Sie effektiv durch verschachtelte iFrames mit Selenium WebDriver in Java

In Selenium WebDriver kann der Umgang mit verschachtelten iFrames eine herausfordernde Aufgabe sein. Schauen wir uns ein bestimmtes Szenario an:

Betrachten Sie die folgende HTML-Struktur, bei der ein Iframe in einem anderen Iframe verschachtelt ist:

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

Unser Ziel ist es, mit Elementen in beiden iFrames zu interagieren.

Problemstellung:
Beim Auswählen des äußeren Iframes und Navigieren zum inneren Iframe schlagen Versuche, auf ein Element im äußeren Iframe (z. B. eine OK-Schaltfläche) zu klicken, fehl, was zu einem Element führt Ausnahme nicht gefunden.

Lösung:

Um erfolgreich zwischen verschachtelten iFrames zu navigieren und mit gewünschten Elementen zu interagieren, befolgen Sie diese Schritte:

  1. Wählen Sie den äußeren iFrame:

    <code class="java">driver.switchTo().frame("cq-cf-frame");</code>
  2. Wählen Sie den inneren iFrame:

    <code class="java">driver.switchTo().frame("cq-gen379");</code>
  3. Mit innerem iFrame-Element interagieren:

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

    <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. Äußeren iFrame erneut eingeben:

    <code class="java">driver.switchTo().frame("cq-cf-frame");</code>
  6. Mit äußerem iFrame-Element interagieren:

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

Durch die Verwendung von drivers.switchTo().defaultContent(); Bevor wir den äußeren Iframe erneut betreten, verlassen wir effektiv alle verschachtelten Frames und kehren dann zu dem spezifischen Frame zurück, den wir benötigen. Dadurch wird das Problem „Element nicht gefunden“ behoben und wir können mit dem gewünschten Element interagieren.

Das obige ist der detaillierte Inhalt vonWie interagiere ich mit Elementen in verschachtelten iFrames mithilfe von Selenium WebDriver in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn