繁体   English   中英

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

[英]Selenium C# Open New Tab CTRL+T Not working with 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");

}

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

我尝试将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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM