web-dev-qa-db-fra.com

Basculer vers le cadre parent à partir d'iFrame et rechercher un élément dans le cadre parent à l'aide de Selenium Webdriver. C #

Scénario: - J'ai aussi une page avec un éditeur de texte iFrame et un bouton dans la page. - Je suis passé du cadre parent à l'iFrame pour lire dans le corps de l'éditeur de texte - Après avoir lu dans le corps de l'éditeur de texte, je veux cliquer sur le bouton dans le cadre parent de la page. - Pour cela, j'ai essayé de revenir au cadre parent de l'iFrame en utilisant l'instruction suivante: webDriver.SwitchTo (). DefaultContent (); - Mais je ne parviens toujours pas à trouver l'élément bouton qui réside dans le cadre parent.

J'apprécie ton aide! Merci

17
Stand4Unborn

C'est pour vos réponses les gars. C'est résolu!

La solution:

  • Tandis que j'utilise la webDriver.SwitchTo().DefaultContent(); elle fait basculer la webDriver vers la fenêtre la plus haute de la page. [Auparavant, je cherchais l'élément bouton dans cette fenêtre et je n'ai donc pas pu le trouver car le bouton était assis dans le cadre principal de la page]

  • Après être passé à la fenêtre principale, j'ai basculé à nouveau le webDriver vers le cadre principal de la page. Ce cadre principal avait l'élément bouton. J'ai ainsi pu trouver l'élément bouton. Et cela a ralenti le problème!

Le code final n'a donc pas webDriver.SwitchTo().DefaultContent(); mais a ce qui suit à sa place:

    _webDriver.SwitchTo().Window(windowHandle);
    _webDriver.SwitchTo().Frame("mainFrame");

Remarque: windowHandle dans le code ci-dessus est le handle de la fenêtre la plus haute de la page. Je suppose que sa valeur peut changer en fonction des navigateurs, mais je n'en suis pas sûr.

15
Stand4Unborn

Je me débattais avec un problème similaire et j'ai constaté que je pouvais revenir en arrière par Window Handle:

string currentWindow = Driver.CurrentWindowHandle;
// switch to frame and do stuff..
Driver.SwitchTo().Window(currentWindow); // switch back
7
DevDave

Dans mon cas, le code suivant a bien fonctionné:

driver.switchTo().parentFrame();
7
Shivam Bharadwaj