Maison  >  Article  >  Java  >  Comment interagir avec des éléments dans des iFrames imbriquées à l'aide de Selenium WebDriver en Java ?

Comment interagir avec des éléments dans des iFrames imbriquées à l'aide de Selenium WebDriver en Java ?

DDD
DDDoriginal
2024-10-30 12:52:27820parcourir

How to Interact with Elements in Nested iFrames Using Selenium WebDriver in Java?

Comment naviguer efficacement dans les iFrames imbriqués à l'aide de Selenium WebDriver en Java

Dans Selenium WebDriver, la gestion des iFrames imbriqués peut être une tâche difficile. Examinons un scénario spécifique :

Considérons la structure HTML suivante, où une iframe est imbriquée dans une autre iframe :

<code class="html"><div>
  <iframe id="cq-cf-frame">
    <iframe id="gen367">
      <body id="CQrte">...</body>
    </iframe>
  </iframe>
</div></code>

Notre objectif est d'interagir avec les éléments des deux iFrames.

Énoncé du problème :
Lors de la sélection de l'iframe externe et de la navigation vers l'iframe interne, les tentatives de clic sur un élément dans l'iframe externe (par exemple, un bouton OK) échouent, ce qui entraîne un élément exception introuvable.

Solution :

Pour naviguer avec succès entre les iFrames imbriqués et interagir avec les éléments souhaités, suivez ces étapes :

  1. Sélectionnez l'iFrame externe :

    <code class="java">driver.switchTo().frame("cq-cf-frame");</code>
  2. Sélectionnez l'iFrame interne :

    <code class="java">driver.switchTo().frame("cq-gen379");</code>
  3. Interagir avec l'élément iFrame interne :

    <code class="java">driver.findElement(By.id("CQrte")).sendKeys("Tnx");</code>
  4. Quitter l'iFrame interne :

    <code class="java">// Between steps 4 and 5, remove the line:
    // selenium.selectFrame("relative=up");
    
    driver.switchTo().defaultContent(); // This exits both nested frames</code>
  5. Entrez à nouveau l'iFrame externe :

    <code class="java">driver.switchTo().frame("cq-cf-frame");</code>
  6. Interagissez avec l'élément iFrame externe :

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

En utilisant driver.switchTo().defaultContent(); avant de rentrer dans l'iframe externe, nous quittons effectivement tous les cadres imbriqués, puis revenons au cadre spécifique dont nous avons besoin. Cela résout le problème de l'élément introuvable et nous permet d'interagir avec l'élément souhaité.

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