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");
}
这是我试图用来打开新选项卡的代码,但它不起作用,我没有收到任何错误,驱动程序打开了 Google,仅此而已...... 我搜索了很多,发现了很多教程甚至视频,人们使用完全相同的代码并且它对他们有用,但对我来说却不起作用,我无法弄清楚......
我尝试将 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 驱动程序的一个“功能”。
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");
此代码将不起作用
((IJavaScriptExecutor)driver).ExecuteScript("window.open();");
条件: