Selenium ChromeDriver C#-如何发送快捷方式浏览器

Flo*_* K. 5 .net c# selenium automated-tests selenium-chromedriver

如何使用Selenium发送Chrome快捷方式?我的意思是像Ctrl+ SCtrl+ TCtrl+ P这样的快捷方式与WebElements无关。我在那里读了很多类似的问题,但是没有建议的解决方案对我有用。

假设我想在浏览器中打开一个新标签(Ctrl+ T),我尝试了以下所有代码,但均未成功:

  1. “标准”方式:

    IWebElement body = myDriver.FindElement(By.TagName("body"));
    body.SendKeys(Keys.Control + "t");
    
    Run Code Online (Sandbox Code Playgroud)
  2. 动作方式:

    Actions action = new Actions(myDriver);
    action.SendKeys(Keys.Control + "t").Build().Perform();
    
    Run Code Online (Sandbox Code Playgroud)
  3. ChromeDriver方法1:

    if(myDriver is ChromeDriver)
    {
        ChromeDriver chromeDriver = myDriver as ChromeDriver;
        chromeDriver.Keyboard.SendKeys(Keys.Control + "t");
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 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");
    
    Run Code Online (Sandbox Code Playgroud)

请注意,我提到的第一种方法适用于Chrome以外的其他WebDriver。我用 :

  • 硒3.0.1
  • ChromeDriver 2.27.440174

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

ChromeOptions options = new ChromeOptions();
this.myDriver = new ChromeDriver(/* my path */, options);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

And*_*son 2

看来是有Chromium 问题了。您不能将组合键与 一起使用chromedriver,但您仍然可以使用JavaScript以下替代方法:

IJavaScriptExecutor js = myDriver as IJavaScriptExecutor;
js.ExecuteScript("window.open()"); // Open new browser tab like `CTRL + t` do
Run Code Online (Sandbox Code Playgroud)