喵小妖7117 发表于 2015-10-28 11:21:43

针对同一个对象,科室使用多个ChildObjects吗?

以下是我的脚本,我想对所有的科室进行随机点击,text属性值我用的是正则表达式。因为每个科室名称后面结尾都不一样,有4种可能,所以我写个4个ChildObjects,以下是我的脚本:

FunctionD1(DDept1)

        Dim Dept1
        Set Dept1 = Description.Create       
        Dept1("text").value = ".*门诊"
        Dept1("html tag").value = "A"
        Dept1("visible").value = True
        Set DDept1 = Browser("****").Page("****").ChildObjects(Dept1)

End Function

Function   D2(DDept2)

        Dim Dept2
        Set Dept2 = Description.Create       
        Dept2("text").value = ".*科"
        Dept2("html tag").value = "A"
        Dept2("visible").value = True
        Set DDept2= Browser("****").Page("****").ChildObjects(Dept2)

End Function

Function   D3(DDept3)

        Dim Dept3
        Set Dept3 = Description.Create       
        Dept3("text").value = ".*专家"
        Dept3("html tag").value = "A"
        Dept3("visible").value = True
        Set DDept3= Browser("****").Page("****").ChildObjects(Dept3)


End Function


FunctionD4(DDept4)

        Dim Dept4
        Set Dept4 = Description.Create       
        Dept4("text").value = ".*\(.*\)"
        Dept4("html tag").value = "A"
        Dept4("visible").value = True
        Set DDept4= Browser("****").Page("****").ChildObjects(Dept4)

End Function


Sub DDept()
        Dim j
        Dim keshi1
        Dim keshi2
        Dim keshi3
        Dim keshi4

        Call D1(Ddept1)                               '以“门诊”结尾的科室
        keshi1=Ddept1.Count

        Call D2(Ddept2)                                 '以“科”结尾的科室
        keshi2=Ddept2.Count

        Call D3(Ddept3)                              '以“专家”结尾的科室
        keshi3=Ddept3.Count

        Call D4(Ddept4)                                 '以“()”结尾的科室
        keshi4=Ddept4.Count

        If notkeshi1>0Then   

                If not keshi2>0 Then

                        If not keshi3>0 Then

                                keshi4=keshi4-1
                                Randomize
                                j=Int(((keshi4 - 0 + 1) * Rnd) + 0)   ' Generate random value between 0 and keshi4
                                Ddept4(j).Click

                        else

                                keshi3=keshi3-1
                                Randomize
                                j=Int(((keshi3 - 0 + 1) * Rnd) + 0)   ' Generate random value between 0 and keshi3
                                Ddept3(j).Click

                        End If

                        keshi2=keshi2-1
                        Randomize
                        j=Int(((keshi2 - 0 + 1) * Rnd) + 0)   ' Generate random value between 0 and keshi2
                        Ddept2(j).Click

                End If

        else

                keshi1=keshi1-1
                Randomize
                j=Int(((keshi1 - 0 + 1) * Rnd) + 0)   ' Generate random value between 0 and keshi1
                Ddept1(j).Click

        End if


End Sub


为什么脚本只能执行第一个ChildObjects,以“门诊“结尾的科室,如果不满足这个条件就会报错?

喵小妖7117 发表于 2015-10-28 11:31:30

附件是脚本的截图。

喵小妖7117 发表于 2015-10-28 14:41:22

每次我发个帖子求助,问题总是自己解决了!
以下是成功的代码。
只要利用对象属性值的共性,加上正则表达式就可以随机选择了。

赵佳乐SMILE 发表于 2015-10-30 15:48:04

有问题有解决方案 赞一个
页: [1]
查看完整版本: 针对同一个对象,科室使用多个ChildObjects吗?