如何使用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