2017-10-02 2 views
0

J'ai un scénario où je dois faire un clic droit sur un lien, quand le menu contextuel apparaît, je dois cliquer sur l'option "Ouvrir le lien dans la fenêtre de navigation privée". Lorsque j'essaie d'obtenir ceci par un extrait de code ci-dessous, un menu contextuel apparaît, mais au lieu de lancer le lien dans une nouvelle fenêtre, le lien est lancé dans la même fenêtre.Sélectionner l'option clic droit du menu contextuel dans le sélénium

driver = new ChromeDriver(); 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
    driver.get("http://www.google.com/"); 
    Actions action = new Actions(driver); 
    WebElement ele = driver.findElement(By.linkText("About")); 
action.contextClick(ele).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).perform(); 

des suggestions comment faire que cela se produise?

Répondre

0

Il y a peut-être un raccourci clavier pour ouvrir un lien dans une fenêtre de navigation privée mais je n'ai pas pu en trouver un mais je n'ai pas cherché longtemps. Vous pourriez avoir plus de chance.

Une autre méthode consiste à saisir l'URL du lien sur lequel vous voulez cliquer, à ouvrir une fenêtre de navigation privée à l'aide du raccourci clavier (CTRL + MAJ + N), puis à accéder à l'URL. Ce n'est pas idéal mais je ne connais pas d'autre moyen de le faire.

Y at-il une raison pour laquelle vous ne pouvez pas démarrer votre script dans une fenêtre de navigation privée et partir de là?

+0

J'ai un scénario où je dois ouvrir deux fenêtres/onglets en cliquant sur un lien de fenêtre parent et d'effectuer une opération simultanément dans les deux fenêtres en utilisant driver.switchTo(). J'essaie d'ouvrir cette fenêtre en mode incognito juste pour m'assurer que les sessions du navigateur sont différentes – Yogiraj

0

Ce menu contextuel ne fait pas partie de la page html, mais cela est un menu à venir de Chrome (une application de bureau)
Sélénium/WebDriver n'a pas la capacité d'automatiser les applications de bureau, vous pouvez utiliser AutoIt ou similaire logiciel pour le faire

Mais tout ce dont vous avez besoin est simplement d'ouvrir une nouvelle session de navigation (la fenêtre de navigation privée n'est rien d'autre qu'une nouvelle session de navigateur indépendante).
Pour simuler ce comportement à l'aide WebDriver il suffit d'ouvrir un nouveau pilote Chrome:

WebDriver drv1 = new ChromeDriver(); 

drv1.get("https://www.google.pl"); 
drv1.findElement(By.name("q")).sendKeys("About"); 
........ 
........ 

// This will open a new browser window with a new, independent browser session 
WebDriver drv2 = new ChromeDriver(); 
drv2.get("https://www.google.pl"); 
drv2.findElement(By.name("q")).sendKeys("Hello"); 
........ 
........ 
drv1.do-Something-in-session-1 
..... 
drv2.do-Something-other-in-session-2 
.... 
+0

Merci pour votre réponse, j'ai toujours eu l'option de créer une autre session webDriver mais je ne veux pas car ce scénario particulier est nécessaire pour seulement couple des tests. mais merci pour votre pointeur que le menu contextuel est de la fenêtre je pensais que c'est du navigateur et fait partie de DOM. – Yogiraj

+0

Même si vous automatisez ce menu en utilisant un outil externe, par exemple AutoIt, une nouvelle fenêtre de navigateur s'ouvrira en dehors de WebDriver, Selenium ne connaîtra pas cette session et ne pourra pas la gérer. – krokodilko

+0

ohh c'est ça? toute autre option que vous pouvez penser? – Yogiraj