


Wie kann ich verschachtelte Iframes ordnungsgemäß beenden und mit Elementen in Selenium WebDriver interagieren?
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?

Node.js 20: wichtige Leistungssteigerung und neue Funktionen

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?

ICEBERG: Die Zukunft von Data Lake Tabellen

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?
