使用Selenium在现有浏览器会话中打开一个新选项卡

我在C#下面的当前代码打开一个窗口,然后在单击按钮后导航到指定的URL。

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

但我计划导航到的网站有单点登录 。 如何在现有浏览器会话中打开新选项卡并从那里导航? 上面的代码似乎不起作用。

太感谢了!

要处理新标签,您应该先切换到它。 试试以下:

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

您也可能需要切换回来:

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

这可能不起作用:

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

替代方案:查找目标为空白的可点击元素(在页面的代码中搜索“空白”)。 这将打开新标签。

在标签之间切换(感谢@Andersson):

 driver.SwitchTo().Window(driver.WindowHandles.Last()); driver.SwitchTo().Window(driver.WindowHandles.First()); 
 IWebDriver driver = new ChromeDriver(); 

将此更改为:

 var driver = new ChromeDriver(); 

我不知道为什么。 可能是IWebDriver错过的方法。