Open a new tab in an existing browser session usin

2019-02-02 17:04发布

My current code below in C# opens a window then navigates to the specified URL after a button click.

        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")

    }

But the site that I am planning to navigate to has single sign-on. How can I open a new tab in my existing browser session and navigate from there? The above code does not seem to work.

Thanks a million!

4条回答
smile是对你的礼貌
2楼-- · 2019-02-02 17:53
IWebDriver driver = new ChromeDriver(); 

Change this to:

var driver = new ChromeDriver();

I do not know why. May be the IWebDriver miss the method.

查看更多
狗以群分
3楼-- · 2019-02-02 17:54

To handle new tab you should switch to it first. Try following:

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

Also you might need to switch back:

driver.SwitchTo().Window(driver.WindowHandles.First());
查看更多
SAY GOODBYE
4楼-- · 2019-02-02 17:55

This may not works:

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

Alternative: Find clickable element with target blank (search for "blank" in page's surce code). This will open new tab.

Than switch between tabs (thanks @Andersson) with:

driver.SwitchTo().Window(driver.WindowHandles.Last());
driver.SwitchTo().Window(driver.WindowHandles.First());
查看更多
beautiful°
5楼-- · 2019-02-02 17:55

Sending Keys.Control + "t" didn't work for me. I had to do it with javascript and then switch to it.

((IJavaScriptExecutor)driver).ExecuteScript("window.open();");
driver.SwitchTo().Window(driver.WindowHandles.Last());
查看更多
登录 后发表回答