Reputation: 427
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.
Upvotes: 22
Views: 64226
Reputation: 1164
The solution is really simple:
Driver.SwitchTo().NewWindow(WindowType.Tab);
Enjoy...
Upvotes: 6
Reputation: 4444
We can simulate Ctrl
+ Element Click
Actions action = new Actions(_driver);
action.KeyDown(Keys.Control).MoveToElement(body).Click().Perform();
Upvotes: 2
Reputation: 3109
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());
Upvotes: 32
Reputation: 211
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());
Upvotes: 2
Reputation: 11
IWebDriver driver = new ChromeDriver();
Change this to:
var driver = new ChromeDriver();
I do not know why. May be the IWebDriver miss the method.
Upvotes: -5
Reputation: 52685
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());
Upvotes: 25