我在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")
}
但我计划导航到的网站有单点登录。如何在现有浏览器会话中打开新标签页并从那里导航?上面的代码似乎不起作用。
万分感谢!
答案 0 :(得分:10)
要处理新标签,您应该先切换到它。请尝试以下方法:
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());
答案 1 :(得分:3)
发送Keys.Control + "t"
对我不起作用。我必须用javascript来做,然后切换到它。
((IJavaScriptExecutor)driver).ExecuteScript("window.open();");
driver.SwitchTo().Window(driver.WindowHandles.Last());
答案 2 :(得分:0)
这可能不起作用:
driver.FindElement(By.CssSelector("body")).SendKeys(Keys.Control + "t");
替代方案:查找目标为空白的可点击元素(搜索"空白"在页面' s surce代码中)。这将打开新标签。
在标签之间切换(感谢@Andersson):
driver.SwitchTo().Window(driver.WindowHandles.Last());
driver.SwitchTo().Window(driver.WindowHandles.First());
答案 3 :(得分:0)
我们可以模拟Ctrl
+ Element Click
Actions action = new Actions(_driver);
action.KeyDown(Keys.Control).MoveToElement(body).Click().Perform();
答案 4 :(得分:-2)
IWebDriver driver = new ChromeDriver();
将其更改为:
var driver = new ChromeDriver();
我不知道为什么。可能是IWebDriver错过了这个方法。