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

Dar*_*und 8 c# selenium selenium-chromedriver selenium-webdriver

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

}
Run Code Online (Sandbox Code Playgroud)

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

我尝试将Keys.Shift +"t"发送到搜索字段并且它可以工作,它在字段中写入大写字母T.

我也试过了

Actions act = new Actions(driver);
act.KeyDown(Keys.Control).SendKeys("t").Perform();
Run Code Online (Sandbox Code Playgroud)

它仍然无法正常工作,但如果我将Keys.Control更改为Keys.Shift它写入,似乎没有任何涉及Keys.Control工作!

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

Dar*_*und 12

谢谢你的回答!我用JavaScript做到了.

((IJavaScriptExecutor)driver).ExecuteScript("window.open();");
Run Code Online (Sandbox Code Playgroud)


Sun*_*ine 5

看起来这是chrome驱动程序的“功能”。

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

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