51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2893|回复: 11
打印 上一主题 下一主题

[原创] 帮忙看看这个函数如何编写

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-11-5 14:46:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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的值做判断。

谢谢指点呀
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

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

Function (oPageOrWebObj , oChildObjsDesc , compareClass , compareString)
End Function
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2012-11-5 17:25:07 | 只看该作者
本帖最后由 zhangchaoy 于 2012-11-5 17:27 编辑

回复 2# xjwldlover


    谢谢大侠指点。能不能具体的写一下,我对函数没啥概念。十分感谢
回复 支持 反对

使用道具 举报

  • TA的每日心情
    郁闷
    2015-7-30 14:37
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    4#
    发表于 2012-11-6 10:10:52 | 只看该作者
    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("管理页-草稿","草稿列表箱")
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-3-16 15:27
  • 签到天数: 25 天

    连续签到: 1 天

    [LV.4]测试营长

    5#
    发表于 2012-11-6 15:48:09 | 只看该作者
    高手,学习了,谢谢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-27 10:05
  • 签到天数: 36 天

    连续签到: 1 天

    [LV.5]测试团长

    6#
    发表于 2012-11-6 19:45:20 | 只看该作者
    回复 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
    复制代码
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2012-11-7 13:44:54 | 只看该作者
    本帖最后由 zhangchaoy 于 2012-11-7 14:29 编辑

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

    我还有一个问题呀,

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

    为什么可以直接把要返回的值赋给函数呀,Publish = flag是啥意思呢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-27 10:05
  • 签到天数: 36 天

    连续签到: 1 天

    [LV.5]测试团长

    8#
    发表于 2012-11-7 14:41:29 | 只看该作者
    回复 7# zhangchaoy


        你的函数要的不就是flag的判断嘛
    那就把flag作为返回值返回回去就行了。
    你可以查看一下Function和Sub的区别就知道了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2012-11-7 14:45:58 | 只看该作者
    回复 7# zhangchaoy

    vbs中function使用 "[set] 函数名=value"(对象的话,使用set) 返回输出结果,这是沿用vb函数的赋值方式,该赋值语句不会中止函数的运行。(VB中也可以这样返回输出结果,或者使用return:赋值并退出)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2012-11-7 16:24:47 | 只看该作者
    学习下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-23 11:19
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    11#
    发表于 2012-11-9 09:14:32 | 只看该作者

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

    复制代码
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2012-11-17 22:42:22 | 只看该作者
    我想问一下,这是什么语言?
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-28 08:59 , Processed in 0.078122 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表