Heim  >  Artikel  >  Java  >  Wie gehe ich effektiv mit verschachtelten iFrames in Selenium WebDriver (Java) um?

Wie gehe ich effektiv mit verschachtelten iFrames in Selenium WebDriver (Java) um?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 14:08:18683Durchsuche

How to Effectively Handle Nested iFrames in Selenium WebDriver (Java)?

Umgang mit verschachtelten iFrames in Selenium WebDriver (Java)

Selenium WebDriver bietet die Möglichkeit, mit Webelementen innerhalb von iFrames zu interagieren. Im beschriebenen Szenario gibt es zwei verschachtelte iFrames: cq-cf-frame und cq-gen367. Das Ziel besteht darin, Aktionen innerhalb beider iFrames auszuführen und dann zur Hauptseite zurückzukehren.

Problem

Der bereitgestellte Code stößt auf ein Problem beim Zurückwechseln zum äußeren iFrame (cq-cf-frame). nach der Interaktion mit dem inneren iFrame (cq-gen367). Wenn Sie versuchen, außerhalb des inneren iFrames auf die Schaltfläche „OK“ zu klicken, kann der WebDriver das Element nicht finden.

Lösung

Um dieses Problem zu beheben, müssen Sie alle iFrames beenden, bevor Sie zurückwechseln zu einem bestimmten. Dies kann mit der Funktion „driver.switchTo().defaultContent();“ erreicht werden. Verfahren. Standardmäßig setzt diese Methode den WebDriver auf das Haupt-HTML-Dokument außerhalb aller iFrames zurück.

Hier ist eine aktualisierte Version des bereitgestellten Codes, der erfolgreich durch die verschachtelten iFrames navigiert und wie beabsichtigt mit den Elementen interagiert:

<code class="java">/*Line 1 */ driver.switchTo().frame("cq-cf-frame");
/*     2 */ driver.findElement(By.css("#extdd-9 > div.tblRow >  input.edititem").click();
/*     3 */ driver.switchTo().frame("cq-gen379");
/*     4 */ driver.findElement(By.id("CQrte")).sendKeys("Tnx");

// Navigate back to the top level
driver.switchTo().defaultContent();

// Switch to the outer frame again
driver.switchTo().frame("cq-cf-frame");

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

Durch Hinzufügen von drivers.switchTo().defaultContent(); Zwischen den Zeilen 4 und 5 verlässt der WebDriver den inneren iFrame und kehrt zum Haupt-HTML-Dokument zurück. Dann wird der Treiber.switchTo().frame("cq-cf-frame"); Die Anweisung wechselt zurück zum äußeren iFrame, sodass der WebDriver wie erwartet mit der Schaltfläche „OK“ interagieren kann.

Das obige ist der detaillierte Inhalt vonWie gehe ich effektiv mit verschachtelten iFrames in Selenium WebDriver (Java) um?. 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