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

JPa*_*lan 10 c# asp.net selenium selenium-chromedriver selenium-webdriver

我在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")
}
Run Code Online (Sandbox Code Playgroud)

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

太感谢了!

And*_*son 13

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

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

您也可能需要切换回来:

driver.SwitchTo().Window(driver.WindowHandles.First());
Run Code Online (Sandbox Code Playgroud)


nth*_*xel 7

发送Keys.Control + "t"对我不起作用。我不得不用javascript来做,然后切换到它。

((IJavaScriptExecutor)driver).ExecuteScript("window.open();");
driver.SwitchTo().Window(driver.WindowHandles.Last());
Run Code Online (Sandbox Code Playgroud)


Moh*_*MFa 5

解决方案非常简单:

Driver.SwitchTo().NewWindow(WindowType.Tab);
Run Code Online (Sandbox Code Playgroud)

享受...