Maison > Java > javaDidacticiel > 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
Libérer: 2024-10-30 12:52:27
original
925 Les gens l'ont consulté

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>
Copier après la connexion

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>
    Copier après la connexion
    Copier après la connexion
  2. Sélectionnez l'iFrame interne :

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

    <code class="java">driver.findElement(By.id("CQrte")).sendKeys("Tnx");</code>
    Copier après la connexion
  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>
    Copier après la connexion
  5. Entrez à nouveau l'iFrame externe :

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

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

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal