Watir如何始终如一地处理javascript下拉菜单

How can Watir consistently deal with a javascript dropdown menu?

本文关键字:处理 javascript 下拉菜单 始终如一 Watir      更新时间:2023-09-26

我是watir的n00b,我正在测试一个使用extjs的web应用程序。该应用程序有一个主菜单,其中包含几个具有子项目的项目。其中一个主菜单项与其子菜单项具有相同的文本。在watir网络驱动程序中,我有这样的代码:

jobs_menu = d.p(:text => "Jobs")
jobs_menu.when_present.flash
jobs_menu.click
jobs_submenu_item = d.a(:text => "Jobs")
jobs_submenu_item.when_present.flash
jobs_submenu_item.click

这应该是闪烁并单击第一个菜单,然后导致子菜单下降。然后它应该闪烁并单击子菜单项。我在3个不同的浏览器中得到了3个结果:

Firefox-第一个菜单闪烁和下降,子菜单项闪烁,但没有点击

Chrome-第一个菜单闪烁并下降,子菜单项闪烁并点击OK-耶!

IE-第一个菜单闪烁并下降,然后它消失,并且无法使用ElementNotVisibleError 找到子菜单项

有趣的是,对于一个不同的菜单,其中下拉文本与子菜单文本不同,那么Firefox和Chrome都可以正常工作。IE仍然提供ElementNotVisibleError。

我怎样才能让它在所有3个浏览器中都能正常工作?

在某些情况下,菜单的显示不需要点击,可以通过鼠标悬停在菜单上来触发。在这种情况下,可以尝试悬停而不是单击以显示菜单。

许多自定义控件的一个问题是,它们在不同的浏览器上的工作方式不同,这意味着您的自动化代码可能必须考虑到这一点,这是像这样的自定义控件的缺点,并且不使用基本的HTML元素