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

5
如何使用Selenium发送Chrome浏览器的快捷方式? 我的意思是像 Ctrl+SCtrl+T 或者 Ctrl+P 这样与WebElement无关的快捷方式。我阅读了很多类似的问题,但是没有一个建议的解决方案适用于我。
比如说,假设我想要在浏览器上打开一个新标签页(Ctrl+T),我尝试过以下所有代码,但都没有成功:
  1. The "standard" way :

    IWebElement body = myDriver.FindElement(By.TagName("body"));
    body.SendKeys(Keys.Control + "t");
    
  2. The action way :

    Actions action = new Actions(myDriver);
    action.SendKeys(Keys.Control + "t").Build().Perform();
    
  3. The ChromeDriver way 1 :

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

    ChromeDriver chromeDriver = myDriver as ChromeDriver;
    chromeDriver.Keyboard.PressKey(Keys.Control);
    chromeDriver.Keyboard.PressKey("t");
    chromeDriver.Keyboard.ReleaseKey(Keys.Control);
    chromeDriver.Keyboard.ReleaseKey("t");
    
请注意,我提到的第一种方法对于除Chrome之外的其他WebDriver有效。 我使用:
  • Selenium 3.0.1
  • ChromeDriver 2.27.440174
我的驱动程序初始化非常基本:
ChromeOptions options = new ChromeOptions();
this.myDriver = new ChromeDriver(/* my path */, options);

有什么想法吗?
3个回答

2

看起来是Chromium问题。您不能使用键组合和chromedriver,但仍然可以使用JavaScript作为替代:

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

1
谢谢这个替代方案 :) 我一直在关注发送键盘事件,但你的解决方案对我非常有效。 - Florian K.

1

不幸的是,此问题目前会阻止Chrome对Selenium发送的快捷键如Ctrl+T做出反应。


-2

我使用带有操作的键组合非常好。我已经使用这个代码示例多年了,它可以在Chrome、Firefox和IE中正常工作。

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

我有什么遗漏吗???


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接