Internet explorer 8 Selenium 2 WebDriver实现未正确处理可扩展菜单

Internet explorer 8 Selenium 2 WebDriver实现未正确处理可扩展菜单,internet-explorer-8,webdriver,selenium-webdriver,Internet Explorer 8,Webdriver,Selenium Webdriver,我有一个网页,点击按钮(比如EXPAND_CONTEXT_MENU,内部实现为href)会导致隐藏的上下文菜单在其下展开,然后我点击上下文菜单中的一个菜单项 由于Selenium 2不允许直接访问隐藏元素,我首先单击EXPAND_CONTEXT_菜单,然后单击所需的菜单项 在尝试测试此解决方案时,InternetExplorerDriver显示了一种特殊的行为。第一次单击“展开上下文”菜单可以展开菜单,但在第二次单击(用于选择菜单项)之前,展开上下文菜单将再次最小化。当第二次单击时,这将导致El

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

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

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

FirefoxDriver可以很好地执行此测试。我正在使用IE8和Firefox进行测试


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

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

Locatable hoverItem = (Locatable) driver.findElement(By.xpath("//foo")); 
Mouse mouse = ((HasInputDevices) driver).getMouse();
mouse.mouseMove(hoverItem.getCoordinates());
您将需要导入locatable,默认情况下它不会被拉入:

import org.openqa.selenium.internal.Locatable;

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

Locatable hoverItem = (Locatable) driver.findElement(By.xpath("//foo")); 
Mouse mouse = ((HasInputDevices) driver).getMouse();
mouse.mouseMove(hoverItem.getCoordinates());
您将需要导入locatable,默认情况下它不会被拉入:

import org.openqa.selenium.internal.Locatable;

可能存在未正确触发的事件绑定。尝试通过jquery触发不同的事件(假设driver是WebDriver实例,而元素是要触发事件的元素):


可能存在未正确触发的事件绑定。尝试通过jquery触发不同的事件(假设driver是WebDriver实例,而元素是要触发事件的元素):


你找到解决办法了吗?我在使用悬停菜单时遇到了类似的问题。将鼠标悬停在根项目上会显示选项列表,但在我可以选择子项之前,它将在我身上消失。我在IEF测试你找到解决方案了吗?我在使用悬停菜单时遇到了类似的问题。将鼠标悬停在根项目上会显示选项列表,但在我可以选择子项之前,它将在我身上消失。我正在测试,这个解决方案不适合我。我使用的是python绑定,python等价物是使用ActionChain类来移动鼠标。在IE上,使用此选项移动鼠标没有效果。菜单仍然出现,然后消失,就好像鼠标没有在上面一样。这个解决方案对我不起作用。我使用的是python绑定,python等价物是使用ActionChain类来移动鼠标。在IE上,使用此选项移动鼠标没有效果。菜单仍然出现,然后消失,就好像鼠标没有在它上面一样。我认为这不是一个解决方案。问题不在于单击,问题在于单击后出现的菜单在消失之前只出现一小段时间。当第二次点击发生时,该项目是不可见的,因此webdriver拒绝点击它;当事件以意外的方式(如WebDriver可能的方式)触发时,这种行为并不少见。我经常看到元素出现并立即消失,因为两个事件发生冲突,或者网页中的绑定设置不正确。在你完全放弃我的建议之前,如果你还没有这样做的话,也许值得你花时间去尝试一下。我认为这不是一个解决办法。问题不在于单击,问题在于单击后出现的菜单在消失之前只出现一小段时间。当第二次点击发生时,该项目是不可见的,因此webdriver拒绝点击它;当事件以意外的方式(如WebDriver可能的方式)触发时,这种行为并不少见。我经常看到元素出现并立即消失,因为两个事件发生冲突,或者网页中的绑定设置不正确。在你完全放弃我的建议之前,如果你还没有这样做的话,也许值得你花时间去尝试一下。