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

时间:2017-01-27 12:32:18

标签: c# .net selenium automated-tests selenium-chromedriver

如何使用Selenium发送Chrome快捷方式? 我的意思是快捷方式,如 Ctrl + S Ctrl + T Ctrl + < kbd> P 与WebElements无关。我在那里读了很多类似的问题,但没有一个建议的解决方案适合我。

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

  1. &#34;标准&#34;方式:

    myElement.style.height = heightscr + "px";
    
  2. 行动方式:

    IWebElement body = myDriver.FindElement(By.TagName("body"));
    body.SendKeys(Keys.Control + "t");
    
  3. ChromeDriver方式1:

    Actions action = new Actions(myDriver);
    action.SendKeys(Keys.Control + "t").Build().Perform();
    
  4. ChromeDriver方式2:

    if(myDriver is ChromeDriver)
    {
        ChromeDriver chromeDriver = myDriver as ChromeDriver;
        chromeDriver.Keyboard.SendKeys(Keys.Control + "t");
    }
    
  5. 请注意,我提到的第一种方式适用于其他WebDriver而不是Chrome。 我用:

    • Selenium 3.0.1
    • ChromeDriver 2.27.440174

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

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

    有什么想法吗?

3 个答案:

答案 0 :(得分:1)

不幸的是this issue目前会阻止Chrome对由selenium发送的 Ctrl + T 等快捷方式做出反应。

答案 1 :(得分:1)

似乎是Chromium issue。您不能将关键字组合与chromedriver一起使用,但您仍然可以使用JavaScript替代:

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

答案 2 :(得分:0)

我正在使用与Actions的组合键。我多年来一直在使用这个代码示例,它适用于Chrome,Firefox和IE。

public void SelectAll()
{
    (new Actions(yourDriverInstance)).SendKeys(Keys.Control).SendKeys("a").Perform();            
}

我错过了什么吗?