7 votes

Ouvrir un nouvel onglet dans une session de navigation existante à l'aide de Selenium

Mon code actuel ci-dessous en C# ouvre une fenêtre puis navigue vers l'URL spécifiée après un clic sur un bouton.

        protected void onboardButton_Click(object sender, EventArgs e)
    {

        IWebDriver driver = new ChromeDriver();

        driver.FindElement(By.CssSelector("body")).SendKeys(Keys.Control + "t");
        driver.Navigate().GoToUrl("http://www.google.com")

    }

Mais le site vers lequel j'envisage de naviguer a authentification unique . Comment ouvrir un nouvel onglet dans mon session de navigation existante et naviguer à partir de là ? Le code ci-dessus ne semble pas fonctionner.

Merci beaucoup !

9voto

Andersson Points 31774

Pour utiliser un nouvel onglet, vous devez d'abord basculer vers celui-ci. Essayez ce qui suit :

driver.FindElement(By.CssSelector("body")).SendKeys(Keys.Control + "t");
driver.SwitchTo().Window(driver.WindowHandles.Last());
driver.Navigate().GoToUrl("http://www.google.com")

Il se peut également que vous deviez revenir en arrière :

driver.SwitchTo().Window(driver.WindowHandles.First());

1voto

nthpixel Points 460

Envoi Keys.Control + "t" n'a pas fonctionné pour moi. J'ai dû le faire avec javascript et passer ensuite à ce dernier.

((IJavaScriptExecutor)driver).ExecuteScript("window.open();");
driver.SwitchTo().Window(driver.WindowHandles.Last());

0voto

Atanas Atanasov Points 41

Il se peut que cela ne fonctionne pas :

driver.FindElement(By.CssSelector("body")).SendKeys(Keys.Control + "t");

Alternative : Trouver un élément cliquable avec une cible vide (rechercher "blank" dans le code source de la page). Cela ouvrira un nouvel onglet.

Puis passer d'un onglet à l'autre (merci @Andersson) avec :

driver.SwitchTo().Window(driver.WindowHandles.Last());
driver.SwitchTo().Window(driver.WindowHandles.First());

-2voto

albert jin Points 1
IWebDriver driver = new ChromeDriver(); 

Remplacer par :

var driver = new ChromeDriver();

Je ne sais pas pourquoi. Il se peut que le pilote IWebDriver rate la méthode.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X