Maison  >  Article  >  Java  >  Comment gérer efficacement les iFrames imbriqués dans Selenium WebDriver (Java) ?

Comment gérer efficacement les iFrames imbriqués dans Selenium WebDriver (Java) ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-30 14:08:18683parcourir

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

Gestion des iFrames imbriqués dans Selenium WebDriver (Java)

Selenium WebDriver offre la possibilité d'interagir avec des éléments Web dans les iFrames. Dans le scénario décrit, il existe deux iFrames imbriquées : cq-cf-frame et cq-gen367. L'objectif est d'effectuer des actions dans les deux iFrames, puis de revenir à la page principale.

Problème

Le code fourni rencontre un problème lors du retour à l'iFrame externe (cq-cf-frame) après avoir interagi avec l'iFrame interne (cq-gen367). Lorsque vous tentez de cliquer sur le bouton "OK" en dehors de l'iFrame interne, le WebDriver ne parvient pas à localiser l'élément.

Solution

Pour résoudre ce problème, il est nécessaire de quitter tous les iFrames avant de revenir en arrière. à un spécifique. Ceci peut être réalisé en utilisant driver.switchTo().defaultContent(); méthode. Par défaut, cette méthode ramènera le WebDriver au document HTML principal en dehors de tout iFrame.

Voici une version mise à jour du code fourni qui parcourt avec succès les iFrames imbriqués et interagit avec les éléments comme prévu :

<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>

En ajoutant driver.switchTo().defaultContent(); entre les lignes 4 et 5, le WebDriver quitte l'iFrame interne et revient au document HTML principal. Ensuite, le driver.switchTo().frame("cq-cf-frame"); L'instruction revient à l'iFrame externe, permettant au WebDriver d'interagir avec le bouton "OK" comme prévu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn