51Testing软件测试论坛

标题: 帮忙看看这个函数如何编写 [打印本页]

作者: zhangchaoy    时间: 2012-11-5 14:46
标题: 帮忙看看这个函数如何编写
本帖最后由 zhangchaoy 于 2012-11-5 15:10 编辑

我现在有一段代码要重复使用,请高手帮我看看该怎么写一个函数呀,可以重复调用。

With Browser("发表页")
        Set oLink = Description.Create()
        oLink("micClass").value = "Link"

        Set oLinks =.Page("管理页-草稿").WebElement("草稿列表箱").ChildObjects(oLink)

        NumofLink = oLinks.Count
        msgbox NumofLink

        For i = 0 to NumofLink -1
                linkName = oLinks(i).GetRoProperty("innertext")
                print linkName
                flag = 0
                If  linkName = blogName Then
                        flag = flag +1
                        '如果博文在草稿箱中存在,就点击“编辑”按钮
                        oLinks(i+1).Click
                        Exit for               
                End If  
        Next
                Set oLinks = Nothing
        Set oLink = Nothing

End with

经常变化的是Set oLinks =.Page("管理页-草稿").WebElement("草稿列表箱").ChildObjects(oLink)中的Page("管理页-草稿").WebElement("草稿列表箱")会经常变化。
还有,就是我想要返回flag的值,因为要在函数体的外面对flag的值做判断。

谢谢指点呀
作者: xjwldlover    时间: 2012-11-5 15:21
此功能的前置条件包含以下部分:
操作对象的父对象(即你的WebElement("草稿列表箱"))、子对象筛选集合(即子对象描述集,建议封装成description对象后再应用到该函数)、目标对象的匹配条件即,对象属性名(innertext)和对象值(value)。你可以封装成如下函数(函数名与上述对应)。
*函数的关键在于,你需要判断你click操作的成功与否!你不能打开链接失败了,还返回一个成功值给别人。QTP的难点就在于返回值的判断与对象同步,这两点你还需要再详细处理。

Function (oPageOrWebObj , oChildObjsDesc , compareClass , compareString)
End Function
作者: zhangchaoy    时间: 2012-11-5 17:25
本帖最后由 zhangchaoy 于 2012-11-5 17:27 编辑

回复 2# xjwldlover


    谢谢大侠指点。能不能具体的写一下,我对函数没啥概念。十分感谢
作者: 踏雪飞狐    时间: 2012-11-6 10:10
Function A (oPageOrWebObj , oChildObjsDesc )
With Browser("发表页")
        Set oLink = Description.Create()
        oLink("micClass").value = "Link"

        Set oLinks =.Page("oPageOrWebObj ").WebElement("oChildObjsDesc").ChildObjects(oLink)

        NumofLink = oLinks.Count
        msgbox NumofLink

        For i = 0 to NumofLink -1
                linkName = oLinks(i).GetRoProperty("innertext")
                print linkName
                flag = 0
                If  linkName = blogName Then
                        flag = flag +1
                        '如果博文在草稿箱中存在,就点击“编辑”按钮
                        oLinks(i+1).Click
                        Exit for               
                End If  
        Next
                Set oLinks = Nothing
        Set oLink = Nothing

End with

End Function

把那两个变化的参数化,写成一个函数,然后进行传值,在写一个方法传值进去调用就行了。如:call A("管理页-草稿","草稿列表箱")
作者: xiaoshi_2011    时间: 2012-11-6 15:48
高手,学习了,谢谢
作者: 黑羽祭    时间: 2012-11-6 19:45
回复 1# zhangchaoy


    没测试,你试试看吧
  1. dim A
  2. set A = Browser("发表页").Page("管理页-草稿").WebElement("草稿列表箱")

  3. if myFun(A) Then .......


  4. Function myFun(oPage)

  5.         Set oLink = Description.Create()
  6.         oLink("micClass").value = "Link"

  7.         Set oLinks =oPage.ChildObjects(oLink)

  8.         NumofLink = oLinks.Count
  9.         print NumofLink

  10.         For i = 0 to NumofLink -1
  11.                 linkName = oLinks(i).GetRoProperty("innertext")
  12.                 print linkName
  13.                 flag = 0
  14.                 If  linkName = blogName Then
  15.                         flag = flag +1
  16.                         '如果博文在草稿箱中存在,就点击“编辑”按钮
  17.                         oLinks(i+1).Click
  18.                         Exit for               
  19.                 End If  
  20.         Next
  21.         Set oLinks = Nothing
  22.         Set oLink = Nothing
  23.         
  24.         myFun = flag
  25. End Function
复制代码

作者: zhangchaoy    时间: 2012-11-7 13:44
本帖最后由 zhangchaoy 于 2012-11-7 14:29 编辑

谢谢各位高手赐教呀,问题解决了

我还有一个问题呀,

Function Publish(oPage)
        。。。        
        Publish = flag
End Function

为什么可以直接把要返回的值赋给函数呀,Publish = flag是啥意思呢
作者: 黑羽祭    时间: 2012-11-7 14:41
回复 7# zhangchaoy


    你的函数要的不就是flag的判断嘛
那就把flag作为返回值返回回去就行了。
你可以查看一下Function和Sub的区别就知道了
作者: xjwldlover    时间: 2012-11-7 14:45
回复 7# zhangchaoy

vbs中function使用 "[set] 函数名=value"(对象的话,使用set) 返回输出结果,这是沿用vb函数的赋值方式,该赋值语句不会中止函数的运行。(VB中也可以这样返回输出结果,或者使用return:赋值并退出)
作者: louqqson008    时间: 2012-11-7 16:24
学习下
作者: coolwind09    时间: 2012-11-9 09:14

  1. System.out.println("学习下")

复制代码

作者: lingkingi    时间: 2012-11-17 22:42
我想问一下,这是什么语言?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2