对于拥有index属性的对象来说,我们可以轻松的使用SetTOProperty函数进行遍历操作
但是并不是所有的对象都拥有index属性,下面的两种方法可以解决没有index属性而需要进行遍历操作的问题

1.For循环+描述性编写
案例对象:linkCosAcdy,操作链接‘选择’
案例说明:linkCosAcdy对象没有index属性,分析属性后,有规律可循的参数就只有html id:grvCollegialAuditAdvisorArrange_ctl02_linkBtn
案例操作:
页面中类似的操作链接的html id属性中均按照ctl03,ctl04排序,所以我们使用for循环+描述性编写解决
iRowCount=Browser("平台").Page("平台").Frame("mainFrame").WebTable("学号").RowCount
For i=2 to iRowCount
    If  Browser("平台").Page("平台").Frame("mainFrame").Link("html id:=grvCollegialAuditAdvisorArrange_ctl0"&i&"_linkBtn").GetROProperty("text")="选择"

Then
        With Browser("平台").Page("平台").Frame("mainFrame")
        .Link("html id:=grvCollegialAuditAdvisorArrange_ctl0"&i&"_linkBtn").Click


2.For循环+添加index属性
与上面同样的案例,在不使用描述性编程的情况下可以在Ordinal identifier的type,value中选择index,并赋予值为0
但是需要注意的是,由于linkCosAcdy对象天生没有index属性,所以在编写代码的过程中不能使用SetTOProperty(index,i),为什么呢?因为QTP在识别对象的时候,当你操作过第一个linkCosAcdy对象后,QTP在页面中就无法识别它了(因为使用的name改变了),QTP再识别linkCosAcdy对象时,它的index依然是0,不会自动变成1!但是相同的linkCosAcdy对象index依然按照0,1,2..排序下去,只是第一个发生了变化


所有代码如下:
For i=0 to iRowCount-1
    Browser("平台").Page("平台").Frame("mainFrame").Link("linkCosAcdy").SetTOProperty "index",0
    If  Browser("平台").Page("平台").Frame("mainFrame").Link("linkCosAcdy").GetROProperty("text")="选择" Then
        With Browser("平台").Page("平台").Frame("mainFrame")
        .Link("linkCosAcdy").Click
        .WebEdit("texTeacherName").Set datatable("AcdyName","Global")
        .WebButton("wbtSaveAcdy").Click
        End With
        Browser("平台").Dialog("来自网页的消息").WinButton("确定").Click
    End If
Next

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3