2017-01-27 10 views
4

SeleniumでChromeショートカットを送信するにはどうすればよいですか? 私はWebElementsとは何の関係もありませんはCtrl +SはCtrl +TまたははCtrl +Pのようなショートカットを意味します。私はそこに似たような質問をたくさん読んでいますが、提案された解決策のどれも私のために働きません。Selenium ChromeDriver C# - ショートカットブラウザを送信する方法

ブラウザ上での私は新しいタブ(はCtrl + T)を開きたいとしましょう、私は成功せず、次のすべてのコードを試してみました:

  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:私はmentionned最初の方法は、クロム以外のwebdriverをして​​私のために働いていること

    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
  • 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 +Tのようなショートカットに反応するクロムを防ぐことができます。

0

私はちょうど良いアクションとキーの組み合わせを使用しています。私はこのコード例を何年も使っており、Chrome、Firefox、IEで動作します。

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

私には何かがありますか?

関連する問題