Selenium C#打开新标签CTRL + T不与CHROME一起使用

时间:2017-04-26 21:51:11

标签: c# selenium selenium-webdriver selenium-chromedriver

static void Main()
{
    IWebDriver driver = new ChromeDriver();
    driver.Navigate().GoToUrl("http://google.com");
    IWebElement body = driver.FindElement(By.TagName("body"));

    body.SendKeys(Keys.Control + "t");

}

这是我试图用来打开一个新标签的代码,它不起作用,我没有得到任何错误,驱动程序打开谷歌,这就是所有.... 我搜索了很多,发现很多教程甚至视频,其中人们正在使用完全相同的代码并且它适用于他们,但对我来说它没有,我无法弄明白......

我尝试发送Keys.Shift +" t"到搜索字段并且它有效,它在字段中写入大写字母

我也试过

Actions act = new Actions(driver);
act.KeyDown(Keys.Control).SendKeys("t").Perform();

它仍然不起作用,但如果我将Keys.Control更改为Keys.Shift它再次写入,似乎没有任何涉及Keys.Control正在工作!!

编辑:我尝试使用IE驱动程序运行代码并在那里工作,它会打开新选项卡,但它不会在Chrome上打开新选项卡?

4 个答案:

答案 0 :(得分:9)

感谢您的回答!我是用JavaScript做的。

((IJavaScriptExecutor)driver).ExecuteScript("window.open();");

答案 1 :(得分:4)

看起来它是Chrome驱动程序的“功能”。

https://bugs.chromium.org/p/chromedriver/issues/detail?id=581

  

这是我们在ChromeDriver中模拟键盘输入的方式的限制。密钥将直接发送到呈现过程,绕过浏览器进程。因此,sendKeys()不会调用浏览器进程中的任何键盘快捷键处理程序。

答案 2 :(得分:1)

试试这个

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

答案 3 :(得分:0)

如果您在Mac上,请使用Keys.Command而不是Keys.Control:

body.SendKeys(Keys.Command + "t");