51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5390|回复: 9
打印 上一主题 下一主题

[转贴] 纯VBS写的自动化脚本(不错!)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-12-31 19:59:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
转自3atesting
'这段代码有两个很大的问题
'第一:在获取到iframe对象后,无法获取到frame对象中的所有链接,从而导致无法点击对象中链接
'此时我无奈之下,重新打开了一个链接,在另外一个页面去拿相应的链接了,原因查出来了,因为
'frame中链接涉及到另外一个域了,实际此DOM操作出现了跨域操作,从而导致了无权操作的过程
'但是现在尚未想到好的策略解决,只好出此下策
'第二:这个程序里面获取对象仍使用了部分的硬代码,这个部分完全可以写成像watir一样,有时间
'会再次完善,或者同行可以一起完善它
Set ie = CreateObject("internetexplorer.application")
ie.Visible = true
'打开网页::3aTesting的BBS
ie.Navigate "www.3atesting.com/bbs"
'等待网页打开结束
delay(ie)
'获取QTP板块的链接,然后点击
Set linkAll=ie.document.getElementsByTagName("a")
Set searchLink=GetLink(linkAll,"QTP")
searchLink.click
delay(ie)

'随机取板块的某一个链接,并且点击
Set webTable=ie.Document.getElementsByTagName("Table")
Set webtableRows=webtable.item(1).getElementsByTagName("TR")
i=genRand(webtableRows.length)
Set tablelink=webtableRows.item(i).getElementsByTagName("a")
tablelink.item(1).click
delay(ie)

'获取帖子中iframe中的某一个对象,重新打开一个链接,并获取link对象,然后点击
Set iframes=ie.Document.getElementsByTagName("iframe")
i=genRand(iframes.length)
ie.Navigate iframes.item(i).src
delay(ie)
Set googlelink=ie.Document.getElementsByTagName("a")
googlelink.item(0).click
'MsgBox tablelink.length
'ie.Document.parentwindow.close
ie.Quit
Set googlelink=Nothing
Set iframes=Nothing
Set webtableRows=Nothing
Set webTable=Nothing
Set searchLink=Nothing
Set linkAll=Nothing
Set ie=Nothing

Function GetLink(objects,name)
For Each obj In objects
   tmp=obj.innertext
   'MsgBox tmp
   If Len(tmp)>0 Then
     If RegExpTest(obj.innertext,name) Then
        Set GetLink=obj
        Exit For
     End If
   End If
Next
End Function

Function RegExpTest(patrn, strng)
  Dim regEx, retVal            ' Create variable.
  Set regEx = New RegExp         ' Create regular expression.
  regEx.Pattern = patrn         ' Set pattern.
  regEx.IgnoreCase = False      ' Set case sensitivity.
  retVal = regEx.Test(strng)      ' Execute the search test.
  RegExpTest=retVal
End Function

Sub delay(obj)
  Do
    WScript.Sleep 5
  Loop Until CInt(obj.readyState)=4
' MsgBox CInt(obj.readyState)
End Sub

Function genRand(count)
genRand=Int(Rnd() * count)
End Function

[ 本帖最后由 lantianwei 于 2007-12-31 20:01 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-1-2 10:55:20 | 只看该作者
不错,GOOD
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-1-2 16:05:31 | 只看该作者
多谢LZ共享~~

不过有问题就表用DOM来获取对象嘛。。。可以优先考虑其它的方法~~~
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2008-1-2 18:39:13 | 只看该作者
转载这篇文章不是因为他的功能有多强,而是希望让大家知道其实什么工具也不用也可以进行自动化测试.
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-1-2 19:19:40 | 只看该作者
嗯~不错,可以借鉴~
学习一下
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
    发表于 2008-1-16 21:03:52 | 只看该作者
    QTP  只是一个工具。千万不要以为工具是万能的。工具是人类智慧的延伸和体现。它凝聚了人类的某些智慧,却永远不会凝聚人类的所有智慧。这有点像机器人永远需要人类来控制一样。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2008-1-17 11:30:54 | 只看该作者
    原帖由 walker1020 于 2008-1-16 21:03 发表
    QTP  只是一个工具。千万不要以为工具是万能的。工具是人类智慧的延伸和体现。它凝聚了人类的某些智慧,却永远不会凝聚人类的所有智慧。这有点像机器人永远需要人类来控制一样。


    这话好深奥啊

    自动控制用javascript或许比这种vbs创建对象的方式要好一些吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2008-1-17 14:49:58 | 只看该作者
    当然了,工具不是万能的.有测试的思想是最重要的.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2008-1-17 19:40:03 | 只看该作者
    Set linkAll=ie.document.getElementsByTagName("a")
    这句看不懂,能解释一下吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2008-1-18 14:32:05 | 只看该作者
    原帖由 pirate 于 2008-1-17 19:40 发表
    Set linkAll=ie.document.getElementsByTagName("a")
    这句看不懂,能解释一下吗?

    得到所有页面上的链接
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-23 07:52 , Processed in 0.079281 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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