2013-06-26 181 views
1

我對Selenium相對較新,它的功能到目前爲止,我發現它只是用於Web應用程序自動迴歸測試的工具。對於這個迴歸測試套件來說,我正在構建我遇到問題的過程。在Web應用程序中,我有一個顯示帶有一些行的Jquery Datatable的頁面。每行都與上下文菜單綁定。這個彈出窗口是浮動在最上面的Z順序上的DIV,絕對定位全部由Jquery控制。Selenium複製鼠標移動&點擊

我在硒試圖做的是在物理上使用這個菜單,以便我能夠扭曲與適當的迴歸測試。使用Actions類來調用上下文菜單已經取得了一些成功。我無法做的是讓鼠標移動到菜單項目可以點擊它們。我一直在嘗試使用MoveByOffset方法,但我似乎沒有任何運氣可以讓它點擊菜單中的任何東西。我也沒有辦法確定鼠標當前所在頁面的位置,因此無法證明實際發生了什麼。

任何幫助或建議,將受到感謝。

感謝您提前一切。


這是我目前用來試圖驅動這個上下文菜單的代碼。 MoveByOffset中的值實際上是每個組合10 & -10。嘗試點擊第一個菜單項。

 

public void ClickAction_myPOTSIcontextmenu(IWebElement Row) 
     { 
      Actions builder = new Actions(this._driver); 

      IAction action = builder.MoveToElement(Row).ContextClick().MoveByOffset(-10,-10).Click().Build(); 
      action.Perform(); 
     } 

+0

能顯示您所嘗試的操作鏈的例子嗎? Actions類很強大,但學習起來可能很棘手。 –

+0

我已經用我嘗試使用的代碼更新了我的主要問題。可能太簡單,因爲它本身很好。 – ToxicBlotch

+1

謝謝你,非常有幫助。 當通過實驗使用'.MoveByOffest()'時,我發現移動的像素來自之前'elements'位置的指針位置。所以有時候'MoveByOffset()'需要考慮到這一點。然而,既然你說'DIV元素'被揭示出來了,'div'中是否有正常的'elements',你可以通過這種方式找到並進行交互?例如:'builder.MoveToElement(Row).MoveToElement(_driver.FindElement(By.Id(「id」)。Click().Build()。Perform();' –

回答

0

希望這有助於

WebElement element = driver.findElement(By.cssSelector("selector_for_element")); 
     Locatable hoverItem = (Locatable) element; 
     Mouse mouse = ((HasInputDevices) driver).getMouse(); 
     mouse.click(hoverItem.getCoordinates());