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!