2017-01-27 46 views
4

如何發送Selenium Chrome快捷方式? 我的意思是像按Ctrl +小號按Ctrl +Ť按Ctrl +P其中有無關WebElements快捷方式。我在那裏讀了很多類似的問題,但沒有一個建議的解決方案適用於我。Selenium ChromeDriver C# - 如何發送快捷方式瀏覽器

比方說,我想打開一個新標籤(按Ctrl + 牛逼)在瀏覽器上,我嘗試了所有下面的代碼沒有成功:

  1. 「標準」的方式:

    IWebElement body = myDriver.FindElement(By.TagName("body")); 
    body.SendKeys(Keys.Control + "t"); 
    
  2. 的操作方式:

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

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

注意,第一個方法,我mentionned工作對我來說與其他的webdriver不是Chrome。 我使用:

  • 硒3.0.1
  • ChromeDriver 2.27.440174

我的驅動程序的初始化是很基本的:

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

任何想法?

回答

1

它似乎是Chromiumissue。你不能chromedriver使用按鍵組合,但你仍然可以使用JavaScript作爲替代:

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

感謝這個替代方案:)我專注於發送關鍵事件,但您的解決方案爲我工作完美 –

1

不幸this issue目前防止鉻從像Ctrl鍵 + Ť由硒發送反應以快捷方式。

0

我使用組合鍵與操作就好了。我一直在使用這個代碼示例多年,它可以與Chrome,Firefox和IE一起使用。

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

我錯過了什麼?

相關問題