帮忙看看这个函数如何编写
本帖最后由 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
IflinkName = 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的值做判断。
谢谢指点呀 此功能的前置条件包含以下部分:
操作对象的父对象(即你的WebElement("草稿列表箱"))、子对象筛选集合(即子对象描述集,建议封装成description对象后再应用到该函数)、目标对象的匹配条件即,对象属性名(innertext)和对象值(value)。你可以封装成如下函数(函数名与上述对应)。
*函数的关键在于,你需要判断你click操作的成功与否!你不能打开链接失败了,还返回一个成功值给别人。QTP的难点就在于返回值的判断与对象同步,这两点你还需要再详细处理。
Function (oPageOrWebObj , oChildObjsDesc , compareClass , compareString)
End Function 本帖最后由 zhangchaoy 于 2012-11-5 17:27 编辑
回复 2# xjwldlover
谢谢大侠指点。能不能具体的写一下,我对函数没啥概念。十分感谢 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
IflinkName = 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("管理页-草稿","草稿列表箱") 高手,学习了,谢谢 回复 1# zhangchaoy
没测试,你试试看吧dim A
set A = Browser("发表页").Page("管理页-草稿").WebElement("草稿列表箱")
if myFun(A) Then .......
Function myFun(oPage)
Set oLink = Description.Create()
oLink("micClass").value = "Link"
Set oLinks =oPage.ChildObjects(oLink)
NumofLink = oLinks.Count
print NumofLink
For i = 0 to NumofLink -1
linkName = oLinks(i).GetRoProperty("innertext")
print linkName
flag = 0
IflinkName = blogName Then
flag = flag +1
'如果博文在草稿箱中存在,就点击“编辑”按钮
oLinks(i+1).Click
Exit for
End If
Next
Set oLinks = Nothing
Set oLink = Nothing
myFun = flag
End Function
本帖最后由 zhangchaoy 于 2012-11-7 14:29 编辑
谢谢各位高手赐教呀,问题解决了:victory:
我还有一个问题呀,
Function Publish(oPage)
。。。
Publish = flag
End Function
为什么可以直接把要返回的值赋给函数呀,Publish = flag是啥意思呢 回复 7# zhangchaoy
你的函数要的不就是flag的判断嘛
那就把flag作为返回值返回回去就行了。
你可以查看一下Function和Sub的区别就知道了 回复 7# zhangchaoy
vbs中function使用 " 函数名=value"(对象的话,使用set) 返回输出结果,这是沿用vb函数的赋值方式,该赋值语句不会中止函数的运行。(VB中也可以这样返回输出结果,或者使用return:赋值并退出) 学习下
System.out.println("学习下")
我想问一下,这是什么语言?:)
页:
[1]