Selenium ChromeDriver C# – 如何发送快捷浏览器

如何使用Selenium发送Chrome快捷方式?

我的意思是像Ctrl S,Ctrl T或Ctrl P这样的快捷键,它与WebElements无关.我在那里读了很多类似的问题,但没有一个建议的解决方案适合我.

假设我想在浏览器上打开一个新选项卡(Ctrl T),我尝试了以下所有代码但没有成功:

>“标准”方式:

IWebElement body = myDriver.FindElement(By.TagName("body"));
body.SendKeys(Keys.Control + "t");

>行动方式:

Actions action = new Actions(myDriver);
action.SendKeys(Keys.Control + "t").Build().Perform();

> ChromeDriver方式1:

if(myDriver is ChromeDriver)
{
    ChromeDriver chromeDriver = myDriver as ChromeDriver;
    chromeDriver.Keyboard.SendKeys(Keys.Control + "t");
}

> ChromeDriver方式2:

ChromeDriver chromeDriver = myDriver as ChromeDriver;
chromeDriver.Keyboard.PressKey(Keys.Control);
chromeDriver.Keyboard.PressKey("t");
chromeDriver.Keyboard.ReleaseKey(Keys.Control);
chromeDriver.Keyboard.ReleaseKey("t");

请注意,我提到的第一种方式适用于其他WebDriver而不是Chrome.
我用 :

> Selenium 3.0.1
> ChromeDriver 2.27.440174

我的驱动程序的初始化是非常基本的:

ChromeOptions options = new ChromeOptions();
this.myDriver = new ChromeDriver(/* my path */, options);

有任何想法吗?

最佳答案 它似乎是Chromium
issue.你不能使用chromedriver的键组合,但你仍然可以使用JavaScript作为替代:

IJavaScriptExecutor js = myDriver as IJavaScriptExecutor;
js.ExecuteScript("window.open()"); // Open new browser tab like `CTRL + t` do
点赞