WebDriver.getWindowHandle() la méthode
Je suis nouveau sur le Sélénium apprentissage. WebDriver.getWindowHandle() la documentation n'est pas très clair pour moi et l'exemple ne fonctionne pas comme indiqué dans le livre, alors j'ai pensé à de la confirmation de la valeur retournée par cette méthode.
1) disons que je suis sur la page PAGE1. Donc getWindowHandle() doit retourner la poignée de PAGE1. (Correct)
2) Maintenant, à partir de cette page, je vais PAGE2 (par lien hypertexte et de l'ouverture d'une nouvelle fenêtre). Mon livre dit maintenant getWindowHandle() doit retourner la poignée de PAGE2. Cependant mon programme renvoie toujours la poignée de la PAGE1.
Sélénium v2.43
Reproductible sur Firefox et Chrome à la fois.
Question: Quelle est la valeur exacte que getWindowHandle() doit retourner?
WebDriver wd = new ChromeDriver();
wd.get("file://D:/Projects/Selenium/Startup/web/ch3/switch_main.html");
String h1 = wd.getWindowHandle();//original handle
System.out.println("First handle = " + h1);
WebElement clickhere = wd.findElement(By.id("clickhere"));
clickhere.click();//moved to a new child page<
String h2 = wd.getWindowHandle();
System.out.println("Second handle = " + h2);//this handle is not different than h1
OriginalL'auteur Ketan | 2014-09-16
Vous devez vous connecter pour publier un commentaire.
getWindowHandle()
obtiendrez la poignée de la page le webDriver est actuellement le contrôle de gestion. Ce handle est un identifiant unique pour la page web. C'est différent à chaque fois que vous ouvrez une page, même si c'est la même URL.getWindowHandles()
(ne pas oublier le "s") va vous donner toutes les poignées pour toutes les pages du web pilote comprend sont ouverts. Notez que lorsque vous placez-le dans une liste qu'ils sont énumérés dans l'ordre dans lequel ils ont été ouverts.Vous pouvez utiliser
SwitchTo().Window("handle")
pour passer à la fenêtre que vous désirez.Vous pouvez utiliser
SwitchTo().Window("mywindowID")
, si vous connaissez l'ID de fenêtre.SwitchTo().Window("")
sera toujours revenir à la base de la fenêtre principale.SwitchTo().Frame("popupFrame")
obtiendrez la fenêtre qui venait de la fenêtre de la webdriver est actuellement le contrôle de gestion.Cette juste besoin de Sizik réponse en outre, pour être une très bonne réponse. Sizik est en mesure de traiter probablement idée fausse très répandue de cette méthode, qui est probablement la raison pour l'OP est question en premier lieu. Plus un pour vous deux, pour donner une très bonne réponse combiné.
OriginalL'auteur Chuck Brown
Si le lien s'ouvre dans une nouvelle fenêtre, vous devez disposer d'un handle de fenêtre dans la
WebDriver
. Vous pouvez faire une boucle de courant poignées de fenêtre avec getWindowHandles.Voir cet exemple de http://www.thoughtworks.com/products/docs/twist/13.3/help/how_do_i_handle_popup_in_selenium2.html
Je suis complètement d'accord. Merci pour cette question. Je m'attends à ce que cette méthode de retour de la poignée qui a actuellement le focus, ou juste d'ouvrir, mais maintenant je sais qu'il ne l'est pas.
OriginalL'auteur isalgueiro
Lorsque vous ouvrez une nouvelle fenêtre, le
WebDriver
ne pas basculer automatiquement vers elle. Vous devez utiliser leswitchTo()
méthode pour passer à la nouvelle fenêtre, soit en utilisant le nom de la nouvelle fenêtre, ou la poignée (que vous pouvez obtenir avecgetWindowHandles()
et la recherche de celui qui n'est pas la fenêtre active).OriginalL'auteur Sizik
J'ai utilisé ce code pour mon projet
//Perfrom Opeartion ici commutés onglet
OriginalL'auteur OPTIMUS
Avec le Sélénium 2.53.1 à l'aide de firefox 47.0.1 comme le WebDriver en Java: Vous avez besoin d'ouvrir les fenêtres/les navigateurs dans son propre pilote. J'ai le même problème. N'importe comment beaucoup de fenêtres ou onglets, j'ai ouvert les, "du pilote.getWindowHandles()" ne renvoie une poignée de sorte qu'il était impossible de basculer entre les onglets. J'ai trouvé Chrome travaillé façon de mieux pour moi.
Une fois que j'ai commencé à utiliser google Chrome 51.0, j'ai pu obtenir toutes les poignées. Le code suivant montre comment accéder à plusieurs pilotes et plusieurs onglets à l'intérieur de chaque pilote.
J'espère que ça vous donne une bonne idée de la façon de les manipuler plusieurs onglets dans plusieurs fenêtres de navigateur.
OriginalL'auteur Charles Woodson