2012-07-03 72 views
1

我不知道如何處理這個mouseOver在硒。 我正在使用FF13。並與最新版本的webdriver。C#硒webdriver鼠標再次

我讀到這Is there a proved mouseOver workaround for FirefoxDriver in Selenium2?,我也正是這樣:

操作構建器=新的操作(駕駛); 操作hoverOverRegistrar = builder.moveToElement(menuRegistrar); hoverOverRegistrar.perform();

但是當它指向的對象一個對象(下拉菜單)出現一會兒然後隱藏,所以硒並不總是有時間點擊下拉菜單出現。

我在做什麼錯了?

回答

2

我想一些這樣的事情應該工作 -

Actions builder = new Actions(driver); 
builder.moveToElement(DropDown tab element).click().moveToElement(Tab you want to click element).click().build().perform(); 

如果有任何problem.Please後你得到的堆棧跟蹤。

+0

This works:Actions builder = new Actions(driver); builder.moveToElement(DropDown tab元素).moveToElement(你想要點擊元素的標籤).click()。build()。perform(); –

+0

但我認爲存在一些優雅的解決方案。我認爲我的代碼看起來像這樣:MyFirstElement.MouseOver(); MySecondElement.Click();但現在看起來像MyFirstElement.MouseOver(MySecondElement);那麼......比沒有好。謝謝。 –

2

可靠元素我覺得最好使用JavaScript。動作生成器往往具有很高的失敗率,並且會導致其他可移動元素在滾動瀏覽頁面時變得可見,導致您希望變得模糊的元素。我在網上的某個地方發現了這種方法(不記得在哪裏),它比我嘗試過的其他方法更有效。

String javaScript = "var evObj = document.createEvent('MouseEvents');" + 
       "evObj.initMouseEvent(\"mouseover\",true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);" + 
      "arguments[0].dispatchEvent(evObj);"; 


IJavaScriptExecutor executor = driver as IJavaScriptExecutor; 
executor.ExecuteScript(javaScript, webElement); 

只要將它的方法在一個地方,你可以使用它,通過它你想將鼠標懸停在驅動程序和元素,你會被設定。