EXTJS这类的富媒体客户端现在越来越流行,那么自动化的时候也会遇到很多问题,这里先给出一个类似的案例,其中解决的方法也许可以帮助大家了解其中奥秘。
该案例是EXTJS4.0.7中自带的一个案例,地址如下: ext-4.0.7-gpl/examples/grid-filtering/grid-filter-local.html
我们这里要做的是选择Size的菜单,然后选择filters,在弹出的菜单中选择small,从而实现对Grid中的所有数据进行过滤,只保留Size为small的记录。
我们如果按照平常的方式来录制,在回放的时候就会出现错误:
代码中提示我们在点击Filter的时候出现了无法找到对象,代码如下: - With _desktop.BrowserApplication("localhost")
- With .BrowserWindow("BrowserWindow")
- .DomElement("gridcolumn-1033-trig").Click(MouseButton.Left, New Point(5, 17))
- .DomElement("menucheckitem-1090-t").Click(MouseButton.Left, New Point(3, 3))
- .DomElement("menucheckitem-1085-i").Click(MouseButton.Left, New Point(12, 14))
- End With
- End With
复制代码
而在回放时会发现,虽然点击操作是存在的,但是菜单并没有出现,所以导致后面的菜单无法点到。 那么知道原因以后我们可以调整一下策略了,首先我们点击一下标题栏size来触发下拉菜单按钮的出现,再去点击下拉按钮,移动鼠标到一层菜单的对应项,最终点击我们所需要的操作对象即可。
这里要注意的地方是: 1.
菜单是通过点击边上的三角才出现的,而这个东西是通过鼠标移动到或者是点击标题拦才会出现的,所以直接访问是有对象但是没法触发菜单 2.
Filters是通过鼠标移动到上面才出现的,而不是Click,如果直接录制是不会出现这个Mousemove操作,所以这里需要自己手动补一下 最终的代码为: - Imports SilkTest.Ntf.XBrowser
- Public Module Main
- Dim _desktop As Desktop = Agent.Desktop
-
- Public Sub Main()
- With _desktop.BrowserApplication("localhost")
- With .BrowserWindow("BrowserWindow")
- .DomElement("gridcolumn-1033-titl").Click(MouseButton.Left, New Point(56, 10))
- .DomElement("gridcolumn-1033-trig").Click(MouseButton.Left, New Point(2, 9))
- .DomLink("menucheckitem-1090-i").MouseMove()
- .DomElement("menucheckitem-1085-i").Click(MouseButton.Left, New Point(8, 9))
- End With
- End With
- End Sub
- End Module
-
复制代码
|