web-dev-qa-db-fra.com

Ouvrir un nouvel onglet dans une session de navigateur 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 sur lequel je prévois de naviguer a Single Sign-On . Comment puis-je ouvrir un nouvel onglet dans ma session de navigateur existante et naviguer à partir de là? Le code ci-dessus ne semble pas fonctionner.

Merci mille fois!

7
JPaulPunzalan

Pour gérer un nouvel onglet, vous devez d'abord y accéder. Essayez de suivre:

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

Aussi, vous devrez peut-être revenir en arrière:

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

L'envoi de Keys.Control + "t" n'a pas fonctionné pour moi. Je devais le faire avec javascript, puis passer à cela.

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

Cela peut ne pas fonctionner:

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

Alternative: recherche d'un élément cliquable avec une cible vide (recherchez "vierge" dans le code de surce de la page). Cela ouvrira un nouvel onglet.

Puis basculer entre les onglets (merci @Andersson) avec:

driver.SwitchTo().Window(driver.WindowHandles.Last());
driver.SwitchTo().Window(driver.WindowHandles.First());
0
Atanas Atanasov