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