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

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

这是我试图用来打开一个新选项卡而不能正常运行的代码,我没有得到任何错误,驱动程序打开谷歌,这就是所有….我已经搜索了很多,发现很多教程甚至video人们使用完全相同的代码,它适用于他们,但对我来说它没有,我无法弄清楚…

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

我也试过了

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

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

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

谢谢你的答案! 我是用JavaScript做的。

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

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

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

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

试试这个

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

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

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