2017-01-27 3 views
4

Wie kann ich eine Chrome-Verknüpfung mit Selenium senden? ich meine Abkürzungen wie Ctrl +S, Ctrl +T oder Ctrl +P, die nichts mit WebElements zu tun hat. Ich habe dort viele ähnliche Fragen gelesen, aber keine der vorgeschlagenen Lösungen funktioniert für mich.Selenium ChromeDriver C# - So senden Sie eine Verknüpfung Browser

Lassen Sie uns sagen, dass ich einen neuen Tab (Ctrl + T) auf dem Browser zu öffnen, habe ich versucht, alle folgenden Code ohne Erfolg:

  1. Der "Standard" Art und Weise:

    IWebElement body = myDriver.FindElement(By.TagName("body")); 
    body.SendKeys(Keys.Control + "t"); 
    
  2. Die Aktion Art und Weise:

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

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

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

Beachten Sie, dass die erste Art, wie ich mich mit anderen WebDriver als Chrome gearbeitet erwähnt. Ich benutze:

  • Selen 3.0.1
  • ChromeDriver 2.27.440174

Und Initialisierung meine Fahrer ist wirklich basic:

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

Irgendwelche Ideen?

Antwort

1

Es scheint Chromiumissue zu sein. Sie können keine Tasten-Kombinationen mit chromedriver verwenden, aber man kann immer noch JavaScript als Alternative verwenden:

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

Danke für diese Alternative :) Ich konzentrierte mich auf senden wichtige Ereignisse, aber Ihre Lösung funktionierte perfekt für mich –

1

Leider verhindert this issue derzeit Chrom zur Abkürzungen wie Ctrl Umsetzung + T von Selen gesendet.

0

Ich bin mit Tastenkombinationen mit Aktionen gut. Ich verwende dieses Codebeispiel seit Jahren und es funktioniert mit Chrome, Firefox und IE.

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

Fehle ich etwas ???

Verwandte Themen