2011-03-30 49 views
2

我有一個網頁,點擊一個按鈕(比如EXPAND_CONTEXT_MENU,在內部實現爲href)導致隱藏的上下文菜單在其下展開,之後點擊菜單項目在上下文菜單中。Selenium 2 WebDriver實現不正確處理可擴展菜單

由於Selenium 2不允許直接訪問隱藏的元素,我首先單擊EXPAND_CONTEXT_MENU然後單擊所需的菜單項。

在嘗試測試此解決方案時,InternetExplorerDriver顯示一種特殊行爲。 EXPAND_CONTEXT_MENU的第一次點擊擴大了菜單,但在第二次點擊(用於選擇菜單項)之前,EXPAND_CONTEXT_MENU會再次最小化。當發生第二次點擊時,這會導致ElementNotVisibleException。

FirefoxDriver很好地執行此測試。我正在使用IE8和Firefox進行測試。

注意 - 在實際AUT中,只需在EXPAND_CONTEXT_MENU上懸停即可展開上下文菜單。

+0

你已經找到了解決?我遇到了一個類似的問題,有了一個很好的菜單。將鼠標懸停在根項目上會顯示選項列表,但在我選擇一個孩子之前,它將消失在我身上。我在測試IE – 2011-07-22 10:09:20

回答

0

使用鼠標功能,鼠標放在關元徘徊:

Locatable hoverItem = (Locatable) driver.findElement(By.xpath("//foo")); 
Mouse mouse = ((HasInputDevices) driver).getMouse(); 
mouse.mouseMove(hoverItem.getCoordinates()); 

您將需要進口可定位的,它不是在默認情況下被拉:

import org.openqa.selenium.internal.Locatable; 
+0

此解決方案對我無效。我使用python綁定,python等價物是使用ActionChain類來移動鼠標。在IE上,使用它來移動鼠標不起作用。菜單仍然出現,然後消失,就好像鼠標不在它上面一樣。 – 2011-11-20 16:28:17

0

有可能是一個事件無法正確觸發的綁定。嘗試通過jQuery發射不同的事件(假設司機是webdriver的實例和元素是要開槍事件的元素):

((IJavaScriptExecutor)driver).ExecuteScript(string.Format("$(arguments[0]).trigger('click');", element); 
+0

我不認爲這是一個解決方案。問題不在於點擊,問題在於點擊後出現的菜單隻會在消失之前出現短暫的時間。當第二次點擊發生時,該項目是不可見的,因此webdriver拒絕點擊它。 – 2011-11-22 23:19:15

+0

你必須瞭解javascript事件是如何工作的;當一個事件以意想不到的方式觸發時,這種情況並不少見(例如WebDriver可能會這樣做)。我經常看到元素出現並立即消失,因爲有些事件發生衝突,或者綁定在網頁中沒有正確設置。 在您完全放棄我的建議之前,如果您尚未這樣做,實際嘗試它可能是值得的。 – Anders 2011-11-23 16:30:00

相關問題