VB与IE交互实现WEB画面的自动测试(用VB填写IE中控件的内容和提交表单)
看这篇文件需要有VBA编程基础.
我们在做WEB项目测试的时候,为了测试一个点在IE上反复的输入相同的内容,浪费了很多的时间.我们就可以思考这样一个问题,画面测试是否也可以像Junit测试一样只要点击一下鼠标什么都不用做就完成测试. 答案是可以的.
我的设想是:用EXCEL VBA技术把想要设置的值设置到网页上并模拟点击某一个按钮或提交某一个表单,分成三个步骤完成自动测试.:
第一步,测试数据准备和测试结果预想..把测试需要的数据和测试预想结果罗列在EXECL中
第二步,数据库数据初期化.清空这些表的数据,并把上面的数据插入到相应的表中
第三步,测试实施.用EXCEL VBA技术把想要设置的值设置到网页上并模拟点击某一个按钮或提交某一个表单
第四步,测试结果比较.把预想数据和数据库中的实际数据相比较,相同的话就说明没有问题了.相同表示测试通过,不同则是程序有问题.
上述四点中,如果懂得用VBA进行数据库编程的话,那么数据库数据初期化和测试结果比较应该都没有问题.问题在测试实施上.如何让网页上的控件自动赋值并自动提交表单呢.下面我就正对这一点技术实现的可能性进行说明.
HTML源码:
< html >
< head >
< title > testPage </ title >
</ head >
< body >
< FORM name =chh method = "POST" action = "login.asp" >
< table width ="100%" border ="0" cellspacing ="0" cellpadding ="2" >
< tr >
< td width ="31%" align ="center" > 用户: </ td >
< td width ="69%" align ="left" >
< input name ="LoginName" type ="text" id ="LoginName" size ="12" >
</ td >
</ tr >
< tr >
< td width ="31%" align ="center" > 密码: </ td >
< td width ="69%" align ="left" >
< input name ="LoginPassword" type ="password" id ="LoginPassword" size ="12" >
</ td >
</ tr >
</ table >
< input type = "submit" id = "clickme" value = "提交" >
</ FORM >
</ body >
</ html >
很简单的页面,在上面有一个登录的Form,一个用户名输入框LoginName,一个密码输入框LoginPassword和一个提交按钮clickme
然后用IE打开这个页面,注意页面的title设置为testPage。
然后打开VBA,在工程中引用Microsoft internet controls:
Dim IEList As New ShellWindows
Dim browser
Dim Doc
On Error Resume Next
' 遍历当前地浏览器窗口
For Each browser In IEList
' 找到需要地IE窗口
If browser.Document.Title = " testPage " Then
' 获得浏览器地文档对象
Set Doc = browser.Document
' 填写用户名字段
Doc.body.All( " LoginName " ).Value = " eddie "
' 填写密码字段
Doc.body.All( " LoginPassword " ).Value = " 123456 "
' 提交
Doc.body.All( " clickme " ).Click
End If
Next
End Sub