我正在使用 WatiN 2.1 驱动 Internet Explorer 进行自动化集成测试。对于我的一个测试,我想在单击创建菜单的按钮后在动态创建的弹出菜单中选择一个项目。菜单本身是一个 jQuery 插件,可以创建具有特定类的无序列表。
我正在使用 WatiN 2.0 的新 Find.BySelector 方法通过这个特定的类进行搜索,效果很好。但是,在创建多个菜单的测试中,我很难选择当时可见的菜单。为此,我想我会使用 :visible 过滤器将我的结果限制为只有那些可见的菜单(一次只能看到一个)。但是,当我使用以下代码时:
WebBrowser.Current.ElementOfType<List>(Find.BySelector("li.fg-menu:visible"));
我收到 WatiN.Core.Exceptions.RunScriptException 抛出的消息:“System.Runtime.InteropServices.COMException:HRESULT 的异常:0x80020101” 在搜索这个特定的 HRESULT 时,人们建议以管理员身份运行 Visual Studio,但这确实不解决问题。如果没有 :visible 过滤器,它可以正常工作。当我直接在浏览器的控制台窗口中执行该选择器(使用 jQuery)时,它会返回我想要的。
为了解决这个问题,我可以使用 WatiN 的内置功能来执行我自己的 JavaScript 以返回一个元素,但我想知道是否有其他人成功地将 :visible 与 Find.BySelector 一起使用。