Recherche…


Syntaxe

  • Java
  • driver.switchTo (). frame (nom de la chaîne);
  • driver.switchTo (). frame (identifiant de chaîne);
  • driver.switchTo (). frame (int index);
  • driver.switchTo (). frame (WebElement frameElement);
  • driver.switchTo (). defaultContent ();
  • C #
  • driver.SwitchTo (). Frame (int frameIndex);
  • driver.SwitchTo (). Frame (frameElement IWebElement);
  • driver.SwitchTo (). Frame (string FrameName);
  • driver.SwitchTo (). DefaultContent ();
  • Python
  • driver.switch_to_frame (nameOrId)
  • driver.switch_to.frame (nameOrId)
  • driver.switch_to_frame (index)
  • driver.switch_to.frame (index)
  • driver.switch_to_frame (frameElement)
  • driver.switch_to.frame (frameElement)
  • driver.switch_to_default_content ()
  • driver.switch_to.default_content ()
  • JavaScript
  • driver.switchTo (). frame (nameOrId)
  • driver.switchTo (). frame (index)
  • driver.switchTo (). defaultContent ()

Paramètres

paramètre détails
nameOrId Sélectionnez un cadre par son nom.
indice Sélectionnez un cadre par son index de base.
frameElement Sélectionnez un cadre en utilisant son WebElement précédemment localisé

Pour basculer vers un cadre en utilisant Java

Pour une instance, si le code source html d'une vue ou d'un élément html est enveloppé par un iframe comme celui-ci:

<iframe src="../images/eightball.gif" name="imgboxName" id="imgboxId">
   <p>iframes example</p>
   <a href="../images/redball.gif" target="imgbox">Red Ball</a>
</iframe><br />

... alors pour effectuer une action quelconque sur les éléments web de l'iframe, vous devez d'abord basculer le focus sur l'iframe, en utilisant l'une des méthodes ci-dessous:

Utiliser un identifiant de trame (doit être utilisé uniquement si vous connaissez l'id de l'iframe).

driver.switchTo().frame("imgboxId"); //imgboxId - Id of the frame

Utiliser le nom du cadre (doit être utilisé uniquement si vous connaissez le nom de l'iframe).

driver.switchTo().frame("imgboxName"); //imgboxName - Name of the frame

Utilisation de l'index d'images (doit être utilisé uniquement si vous ne possédez pas l'id ou le nom de l'iframe), où l'index définit la position de l'iframe parmi toutes les images.

driver.switchTo().frame(0); //0 - Index of the frame

Remarque: Si vous avez trois images dans la page, la première sera à l’index 0, la deuxième à l’index 1 et la troisième à l’index 2.

Utilisation de webelement précédemment localisé (doit être utilisé uniquement si vous avez déjà localisé le cadre et l'avez renvoyé en tant que WebElement ).

driver.switchTo().frame(frameElement); //frameElement - webelement that is the frame

Alors, pour cliquer sur l’ancre Red Ball :

driver.switchTo().frame("imgboxId");
driver.findElement(By.linkText("Red Ball")).Click();

Pour sortir d'un cadre en Java

Pour basculer le focus sur le document principal ou la première image de la page. Vous devez utiliser la syntaxe ci-dessous.

driver.switchTo().defaultContent();

Passer à un cadre en utilisant C #

1. Passez à un cadre par index.

Ici, nous passons à l'index 1. L'index fait référence à l'ordre des images sur la page. Cela devrait être utilisé en dernier recours, car l'identifiant ou les noms des images sont beaucoup plus fiables.

driver.SwitchTo().Frame(1);

2. Passer à un cadre par nom

driver.SwitchTo().Frame("Name_Of_Frame");

3. Passez à une image par titre, identifiant ou autres en transmettant IWebElement

Si vous souhaitez basculer vers un cadre par identifiant ou par titre, vous devez transmettre un élément Web en tant que paramètre:

driver.SwitchTo().Frame(driver.FindElement(By.Id("ID_OF_FRAME")));
driver.SwitchTo().Frame(driver.FindElement(By.CssSelector("iframe[title='Title_of_Frame']")));

Notez également que si votre cadre prend quelques secondes pour apparaître, vous devrez peut-être attendre :

new WebDriverWait(driver, TimeSpan.FromSeconds(10))
    .Until(ExpectedConditions.ElementIsVisible(By.Id("Id_Of_Frame")));

Sortez d'un cadre:

driver.SwitchTo().DefaultContent()

Pour sortir d'un cadre en utilisant C #

Pour basculer le focus sur le document principal ou la première image de la page. Vous devez utiliser la syntaxe ci-dessous.

webDriver.SwitchTo (). DefaultContent ();

Basculer entre les images enfants d'une image parent.

Considérez que vous avez un cadre parent (Frame-Parent). et 2 cadres enfants (Frame_Son, Frame_Daughter). Permet de voir diverses conditions et comment gérer.

1. Du parent au fils ou à la fille:

 driver.switchTo().frame("Frame_Son");
 driver.switchTo().frame("Frame_Daughter");

2.De Fils à Parent: Si le parent est le cadre par défaut, passez au cadre par défaut, sinon, du basculement du cadre par défaut au cadre parent. Mais vous ne pouvez pas passer directement de fils à Parent.

driver.switchTo().defaultContent(); 
driver.switchTo().frame("Frame_Parent");

3.De fils à fille: Si votre sœur fait une erreur, ne lui criez pas, contactez votre parent. De même, vous donnez le contrôle à l'image parent et ensuite à l'image fille.

driver.switchTo().defaultContent(); 
driver.switchTo().frame("Frame_Parent");
driver.switchTo().frame("Frame_Daughter");

Attendez que vos cadres se chargent

Dans de nombreux cas, votre cadre risque de ne pas apparaître immédiatement et vous devrez probablement attendre qu'il soit chargé pour basculer. Ou bien vous aurez une exception NoSuchFrameException.

C'est donc toujours un bon choix d'attendre avant de passer. Voici un moyen idéal d'attendre qu'un bloc soit chargé.

try{
        new WebDriverWait(driver, 300).ignoring(StaleElementReferenceException.class).
                        ignoring(WebDriverException.class).
                        until(ExpectedConditions.visibilityOf((driver.findElement(By.id("cpmInteractionDivFrame"))));}
    catch{

// déclenche une exception uniquement si votre cadre n'est pas visible avec 300 secondes dans votre temps d'attente}



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow