Changer d'onglet en utilisant Selenium WebDriver avec Java
Utilisant Selenium WebDriver avec JAVA.
Je suis en train d'automatiser une fonctionnalité où je dois ouvrir un nouvel onglet de faire quelques opérations de là-bas et revenir à l'onglet précédent (le Parent).
J'ai utilisé de l'interrupteur de la poignée, mais il ne fonctionne pas.
Et une chose étrange, les deux onglets sont ayant la même poignée de fenêtre grâce à laquelle je ne suis pas en mesure de basculer entre les onglets.
Cependant, quand je suis en train d'essayer avec différents Firefox windows, il fonctionne, mais pour l'onglet ça ne fonctionne pas.
S'il vous plaît aider moi comment puis-je changer d'onglet.
OU comment puis-je changer d'onglet sans l'aide de fenêtre poignée de fenêtre poignée est de même des deux onglets dans mon cas.
(J'ai observé que lorsque vous ouvrez les différents onglets dans la même fenêtre, poignée de fenêtre reste la même)
- Je pense que 2 onglets sont les mêmes que 2 fenêtres dans la plupart des cas
Vous devez vous connecter pour publier un commentaire.
Ce code fonctionné parfaitement pour moi. De l'essayer. Vous avez toujours besoin de passer votre permis à nouvel onglet, avant que vous voulez faire quelque chose sur nouvel onglet.
C'est une solution simple pour l'ouverture d'un nouvel onglet, changement de focus, fermer l'onglet et rendre le focus à l'ancienne/onglet d'origine:
Il y a une différence comment web pilote gère les différents windows et comment il gère les différents onglets.
Cas 1:
Dans le cas où il existe plusieurs fenêtres, puis le code suivant peut aider:
Cas 2:
Dans le cas où il y a plusieurs onglets dans la même fenêtre, puis il ya seulement une poignée de la fenêtre. D'où la commutation entre les poignées de fenêtre conserve la maîtrise dans le même onglet.
Dans ce cas, à l'aide de Ctrl + \t (Ctrl + Tab) pour basculer entre les onglets est plus utile.
Détaillée de l'échantillon de code peut être trouvé ici:
http://design-interviews.blogspot.com/2014/11/switching-between-tabs-in-same-browser-window.html
Contourner
Hypothèse : En Cliquant quelque chose sur votre page web conduit à ouvrir un nouvel onglet.
Utiliser en dessous de la logique pour passer en deuxième onglet.
De la même manière, vous pouvez revenir à la première page de nouveau.
Espère que cela aidera à vous..
La première chose que vous devez faire est d'ouvrir un nouvel onglet et de le sauver de la poignée de nom. Il sera préférable de le faire à l'aide de javascript et pas de touches(ctrl+t), car les touches ne sont pas toujours disponibles sur les serveurs d'automatisation. exemple:
La deuxième chose que vous devez faire est de basculer entre les onglets. Faire changer de fenêtre poignées seulement, ne sera pas toujours le travail depuis l'onglet que vous allez travailler sur, de ne pas toujours être dans l'accent et le Sélénium échoue de temps en temps.
Comme je l'ai dit, c'est un peu problématique pour utiliser les touches, et le javascript n'est pas vraiment en charge de commutation onglets, j'ai donc utilisé des alertes pour changer d'onglet et cela a fonctionné comme un charme:
Cette méthode d'aide à la commutation entre plusieurs fenêtres. La restriction de problème avec cette méthode est qu'il ne peut être utilisé autant de fois jusqu'à ce que la fenêtre requise est atteinte. Espérons que cela aide.
Avec le Sélénium 2.53.1 à l'aide de firefox 47.0.1 comme le WebDriver en Java: peu importe combien d'onglets, j'ai ouvert les, "du pilote.getWindowHandles()" ne renvoie une poignée de sorte qu'il était impossible de basculer entre les onglets.
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.
Depuis le
driver.window_handles
n'est pas dans l'ordre , une meilleure solution est de cette.J'ai eu un problème récemment, le lien est ouvert dans un nouvel onglet, mais sélénium concentre toujours sur le premier onglet.
Je suis en utilisant Chromedriver et la seule façon de se concentrer sur un onglet a été pour moi d'utiliser
switch_to_window()
.Voici le code Python:
Donc, l'astuce est de trouver le nom de la poignée de fenêtre vous avez besoin, ils sont stockés sous forme de liste dans
getWindowhandles
de la méthode (ou son équivalent dans votre langue).Veuillez voir ci-dessous:
Espère que c'est utile!
C'est Un processus très simple: supposons que vous avez deux onglets de sorte que vous devez d'abord fermer l'onglet en cours en utilisant
client.window(callback)
car le commutateur de commande "commute sur le premier disponible". Ensuite, vous pouvez basculer facilement d'un onglet à l'aide declient.switchTab
.Un bref exemple de la façon de basculer entre les onglets d'un navigateur (dans le cas d'une fenêtre):
J'écris
Thread.sleep(2000)
juste pour avoir un délai d'attente pour voir basculer entre les onglets.Vous pouvez utiliser les touches CTRL+TAB pour passer à l'onglet suivant et CTRL+MAJ+TAB pour passer à l'onglet précédent.
Cela fonctionne pour MacOS pour Firefox et Chrome:
Pour obtenir parent poignées de fenêtre.
Réponse Simple qui a fonctionné pour moi:
La faille avec la réponse sélectionnée est qu'il inutilement suppose ordre dans
webDriver.getWindowHandles()
. LegetWindowHandles()
méthode retourne unSet
, ce qui ne garantit pas l'ordre.J'ai utilisé le code suivant pour changer les onglets, qui n'assume aucune commande.
Appel de cette méthode et de passer des paramètres à un sous-chaîne de caractères de l'url de l'onglet que vous souhaitez passer à
public class TabBrowserDemo {