2

我有一个网页,单击一个按钮(比如 EXPAND_CONTEXT_MENU,在内部作为 href 实现)会导致隐藏的上下文菜单在其下展开,之后我单击上下文菜单中的菜单项。

由于 Selenium 2 不允许直接访问隐藏元素,我首先单击 EXPAND_CONTEXT_MENU,然后单击所需的菜单项。

在尝试测试此解决方案时,InternetExplorerDriver 显示了一种特殊的行为。第一次单击 EXPAND_CONTEXT_MENU 可以展开菜单,但在第二次单击(用于选择菜单项)之前,EXPAND_CONTEXT_MENU 会再次最小化。当发生第二次单击时,这会导致 ElementNotVisibleException。

FirefoxDriver 很好地执行了这个测试。我正在使用 IE8 和 Firefox 进行测试。

注意 - 在实际的 AUT 中,只需将鼠标悬停在 EXPAND_CONTEXT_MENU 上即可展开上下文菜单。

4

2 回答 2

0

使用鼠标功能将鼠标悬停在相关元素上:

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

您将需要导入可定位的,默认情况下它不会被拉入:

import org.openqa.selenium.internal.Locatable;
于 2011-05-25T10:42:08.287 回答
0

可能存在未正确触发的事件绑定。尝试通过 jquery 触发不同的事件(假设驱动程序是 WebDriver 实例,并且该元素是您要触发事件的元素):

((IJavaScriptExecutor)driver).ExecuteScript(string.Format("$(arguments[0]).trigger('click');", element);
于 2011-11-22T21:48:03.407 回答