Heim  >  Artikel  >  Java  >  Wie kann ich verschachtelte Iframes ordnungsgemäß beenden und mit Elementen in Selenium WebDriver interagieren?

Wie kann ich verschachtelte Iframes ordnungsgemäß beenden und mit Elementen in Selenium WebDriver interagieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-30 20:55:30954Durchsuche

How to Properly Exit Nested Iframes and Interact with Elements in Selenium WebDriver?

iframe-Handhabung mit Selenium WebDriver in Java

Dieser Artikel befasst sich mit der Herausforderung der Interaktion mit tief verschachtelten Iframes in Selenium WebDriver unter Verwendung von Java. Konkret konzentriert es sich auf das Szenario der Auswahl eines äußeren Iframes, um auf einen inneren Iframe zuzugreifen, der Eingabe von Text in dessen Textkörper und dem anschließenden Verlassen beider Iframes, um auf eine Schaltfläche im äußeren Iframe zu klicken.

Problem und Versuch

Das bereitgestellte Code-Snippet funktioniert zunächst wie vorgesehen und gibt Text in den inneren Iframe-Körper ein. Beim Versuch, beide Iframes zu beenden und auf die Schaltfläche „OK“ zu klicken, löst Selenium jedoch eine Ausnahme aus, die darauf hinweist, dass das Schaltflächenelement nicht gefunden werden kann.

Lösung

Die Der Schlüssel zur Lösung dieses Problems liegt in der Verwendung der Methode „driver.switchTo().defaultContent()“. Mit dieser Methode können Sie alle aktuell ausgewählten Frames verlassen und so effektiv zum Haupt-HTML-Dokument zurückkehren.

Geänderter Code

Um den Code zu korrigieren, ersetzen Sie den vorherigen Versuch zum Beenden den inneren Iframe mit Folgendem:

<code class="java">// Remove the line with selenium.selectFrame("relative=up");
driver.switchTo().defaultContent(); // Exit both frames
driver.switchTo().frame("cq-cf-frame"); // Re-enter the outer iframe</code>

Durch das Hinzufügen dieser Zeilen verlässt Selenium zunächst beide Iframes und tritt dann wieder in den äußeren Iframe ein. Dadurch wird sichergestellt, dass alle Rahmenauswahlen ordnungsgemäß eingerichtet sind, bevor versucht wird, mit der Schaltfläche „OK“ zu interagieren.

Vollständiger Code

Der geänderte Code sollte wie folgt aussehen:

<code class="java">driver.switchTo().frame("cq-cf-frame"); // Line 1
driver.findElement(By.css("#extdd-9 > div.tblRow > input.edititem")).click(); // Line 2
driver.switchTo().Frame("cq-gen379"); // Line 3
driver.findElement(By.id("CQrte")).sendKeys("Tnx"); // Line 4
driver.switchTo().defaultContent(); // Line 5, added to exit both frames
driver.switchTo().frame("cq-cf-frame"); // Line 6, added to re-enter outer frame
driver.findElement(By.xpath("//button[text()='OK']")).click(); // Line 6</code>

Mit diesen Änderungen sollte der Code nun erfolgreich Text in den inneren Iframe eingeben und im äußeren Iframe auf die Schaltfläche „OK“ klicken.

Das obige ist der detaillierte Inhalt vonWie kann ich verschachtelte Iframes ordnungsgemäß beenden und mit Elementen in Selenium WebDriver interagieren?. 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