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