2017-06-21 8 views
0

Ich versuche Selenium Webdriver zu verwenden, um mit der rechten Maustaste auf eine Seite zu klicken und im Kontextmenü zu navigieren. Dieses Skript sollte ein Rechtsklick-Menü öffnen und navigieren Up 2 Optionen, und wählen Sie mit der Return-Taste ...Selenium Webdriver Aktionen funktionieren nicht mit Kontextmenü (rechte Maustaste)

driver.Navigate().GoToUrl("http://www.google.com"); 
//Google search bar 
IWebElement tb = driver.FindElement(By.Id("lst-ib")); 
Actions action = new Actions(driver); 
//Right Clicks outside of the search bar. 
action.MoveToElement(tb, -5, -5).ContextClick().Perform(); 
action.SendKeys(Keys.Up).SendKeys(Keys.Up).SendKeys(Keys.Return).Perform(); 

Der Rechtsklick führt, wie es soll (außerhalb der Suchleiste), aber danach, Es gibt keinen Hinweis darauf, dass der Pfeil nach oben gedrückt wird, und mit der Eingabetaste wird nichts ausgewählt. Die Menüoptionen sollten beim Scrollen hervorgehoben werden.

ich die neueste Version von ChromeDriver 2.30 benutze und Chrome 59.0.3071.109

+1

Dies ist ein bekanntes Problem in ChromeDriver, ich schlage vor, mit FirefoxDriver statt: https://bugs.chromium.org/p/chromedriver/issues/detail?id=1003 –

+0

Danke, ich glaube Dies ist der Fall, da ich Schwierigkeiten habe, andere Aktionen auszuführen. Das Verwenden einer Modifier-Taste (Strg + M) als eine Verknüpfung zum Öffnen der Erweiterung wäre einfacher als das Verwenden des Kontextmenüs, aber das funktioniert auch nicht ... Ich denke, ich werde Firefox versuchen und auf eine Reparatur warten. – dsidler

Antwort

0

Wenn Ihre Anwendung nur unter Windows ausgeführt wird, können Sie System.Windows.Forms.SendKey verwenden.

action.MoveToElement(tb, -5, -5).ContextClick().Perform(); 
System.Windows.Forms.SendKeys.SendWait("{UP}"); 
System.Windows.Forms.SendKeys.SendWait("{UP}"); 
System.Windows.Forms.SendKeys.SendWait("{ENTER}"); 
0

Wenn es benutzerdefiniertes Kontextmenü ist. Das Kontextmenü selbst würde den Locator werden mit

 `WebElement element =driver.findElement(By.xpath("your xpath")); 

     Actions action = new Actions(driver); 
     action.contextClick(selectedCell).build().perform(); 
     WebElement copyContext = driver.findElement(By.xpath("xpath of the right context column")); 

    if (copyContext .isEnabled()) 
    { 
     copyContext .click(); 
     log.info("Right context menu COPY CONTENT clicked."); 
    } 

`

Verwandte Themen