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上打开新选项卡?
答案 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");