云层 发表于 2013-8-28 14:39:36

使用Silktest14测试EXTJS动态菜单

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

云层 发表于 2013-8-28 14:41:03

补充一点,这里用的是.Net Script模式做的脚本录制开发

yong_sun 发表于 2014-3-4 23:32:34

Mark
页: [1]
查看完整版本: 使用Silktest14测试EXTJS动态菜单