WEB-QTP随想录—变故

注:原文最早是发表在www.automationqa.com上面的,后来因为网站被黑而文章内容消失了,希望csdn别被黑了。

关于转载:本文为原创文章,欢迎转载,但转载需要标注出处以及保证内容的完整性,请理解写作的寂莫和苦处。

关于版权:本文不得应用于以赢利为目的的任何场景,否则本人保留相应的权利。


全文下载:http://www.docin.com/p-1910330544.html


一个月了,这一个月热得要命,同时我也忙碌得要命,几乎每天都呆在往返于深圳市区与深圳郊区的公交车上面。原因无它,千不该万不该,我不该接那个面试的电话,要不然我也不会换工作,要不然我也不会知道深圳市区租房的价格那么高,更不会知道深圳市区这么的热,还是靠海的郊区好啊!


  还是接着我们的课题吧,上一次我们粗略地学习了GetROProperty/GetTOProperties/GetTOProperty方法的应用与方向,今晚还是让我们来看看OutPut方法吧。


  语法:object.OutPut Verify
  作用:将特定的值输出到特定的环境
  注意,此方法与Check方法一样,只能采用录制的手段生成


  这个方法也就是书上或者网格上常常说到的输出值,那么输出值有那几种类型呢,严格意义上说来,我觉得输出值的类型应该跟检查点的类型是一致的。国外某个网站介绍了输出值的类型,一共有七种:


  1、 Standard OutPut
  这种类型常常用来获得某个对象的属性的值,以供应用程序接下来将会用到的输入条件。例如:获得某个输入框的输入值,该输入值将会在某个页面中的下拉框中显示。
  似乎有点像GetROProperty方法的运用。不过,老外们是这样说他们的区别的“It is similar to GetROProperty Method but this GetROProperty Method is limited to retrieve the Property value of an Object's Property”(没完全看懂它的意思,所以没敢翻译过来)
  2、 Table OutPut
  从webTable对象中的某个特殊的单元格中获取值。
  3、 Text OutPut
  从应用程序中获取某些文字信息(WEB)
  4、 Text Area OutPut
  从应用程序中获取某些文字信息(非Web)
  5、 DataBase OutPut
  从待测应用程序中获得某些数据
  6、 Xml OutPut(from application)
  从待测应用程序中获得xml中的内容
  7、 XML OutPut(from resources)
  从QTP外部Xml文件中获得某些参数内容


  注意使用这种方法所产生的值,最初是存放在内存中,如果我们需要看到并使用这些值,需要将该方法所输出的值存放在Data Table或者Test /action Parameter或者file--seting—environment中。另外,输入值只能在KeyWord View视图中完成,而不能在Expert View中编辑生成。


  A、让我们来看看如何使用输出值放在Data Table中:


  录制方案:录制正确登录,将userName中的内容做为输出值(注意此次使用的网址为QTP自带的WebTours: http://127.0.0.1:1080/WebTours/)
  代码为:
  Browser("Web Tours").Page("Web Tours").Frame("navbar").WebEdit("username").Set "qwen"
  Browser("Web Tours").Page("Web Tours").Frame("navbar").WebEdit("password").SetSecure "wenshanhao"
  Browser("Web Tours").Page("Web Tours").Frame("navbar").Image("Login").Click 45,13
  Browser("Web Tours").Page("Web Tours").Sync
  Browser("Web Tours").CloseAllTabs
  切换到Keyword View 视图,选择username这行,点击右键,选择insert output value…,如下图一样选择value,点击Modify按钮,按图2所选择的一样,然后点击确定按钮,观察可知,这时我们的脚本首行,增加了这么一条语句:Browser("Web Tours").Page("Web Tours").Frame("navbar").WebEdit("username").Output CheckPoint("username"),但此时我们仍然是不知道输出值到底是什么的,此时我们需要调用DataTable对象中的相关方法来获取其值是什么,于是我们增加下面的语句:msgbox DataTable.RawValue("username_value_out",1)  
(图1)
  

(图2)

      


  于是我们的脚本中的语句变成了以下的样子:
  '''用户名
  Browser("Web Tours").Page("Web Tours").Frame("navbar").WebEdit("username").Set "qwen"
  ''获得输出值
  Browser("Web Tours").Page("Web Tours").Frame("navbar").WebEdit("username").Output CheckPoint("username_2")
  msgbox DataTable.RawValue("username_value_out",1)
  ''密码
  Browser("Web Tours").Page("Web Tours").Frame("navbar").WebEdit("password").SetSecure "wenshanhao"
  ''点击登录
  Browser("Web Tours").Page("Web Tours").Frame("navbar").Image("Login").Click
  ''同步加载完全
  Browser("Web Tours").Page("Web Tours").Sync
  ''关闭浏览器
  Browser("Web Tours").CloseAllTabs
  运行一下,可知会弹出内容为qwen的弹出框。我们可以再修改一下这段程序,将其输出值的内容用做判断登录是否成功的标准,通过检查网页中是否有图3的字符来判断登录是否成功(插入检查点)。

(图3)
  插入检查点,检查字符为输出值




  于是我们再稍稍整理一下,我们的脚本就变成了下面的样子:
  Dim isLg ''判断是否登录成功
  isLg=true
  '''用户名
  Browser("Web Tours").Page("Web Tours").Frame("navbar").WebEdit("username").Set "qwen"
  ''获得输出值
  Browser("Web Tours").Page("Web Tours").Frame("navbar").WebEdit("username").Output CheckPoint("username_2")
  msgbox DataTable.RawValue("username_value_out",1)
  ''密码
  Browser("Web Tours").Page("Web Tours").Frame("navbar").WebEdit("password").SetSecure "wenshanhao"
  ''点击登录
  Browser("Web Tours").Page("Web Tours").Frame("navbar").Image("Login").Click
  ''同步加载完全
  Browser("Web Tours").Page("Web Tours").Sync
  ''根据输出值来判断登录是否成功
  isLg=Browser("Web Tours").Page("Web Tours").Frame("info").WebElement("qwen").Check (CheckPoint("qwen"))
  If isLg Then
  Msgbox "ok"
  else
  Msgbox "no"
  End If
  ''关闭浏览器
  Browser("Web Tours").CloseAllTabs

  运行可知,结果当然是OK

B、再让我们来看看输出值为file--seting—environment

  录制脚本和添加输出值与前面的方法类似,不同点在下图所举之处。


  
   完整脚本如下所示(采用此种方法,可以实现某些参数跨action的传递):

  Browser("Web Tours").Page("Web Tours").Frame("navbar").WebEdit("username").Set "qwen"

  ''输出值为环境变量

  Browser("Web Tours").Page("Web Tours").Frame("navbar").WebEdit("username").Output CheckPoint("username")

  ''取得环境变量的值

  msgbox Environment.Value("environment_username_value_out")

  Browser("Web Tours").Page("Web Tours").Frame("navbar").WebEdit("password").set "wenshanhao"

  Browser("Web Tours").Page("Web Tours").Frame("navbar").Image("Login").Click

  Browser("Web Tours").Page("Web Tours").Sync

  Browser("Web Tours").CloseAllTabs

  C、再让我们来看看输出值为Test /action Parameter

  1、新建一个Action2

  2、在Action1中配置Action Properties,并在Parameters中新建output Parameters参数,如下图所示:

  


  3、再次插入输出值,并按下图所示选择
 


  4、在Action2的中Action Properties下,按下图所示配置

  


  5、在Action2的Action Call Properties中如下配置

  

  6、在Action2中增加下面的代码

  ''取得action1中传递的参数值

  msgbox Parameter.Item("testInput")

  7、编辑整理后,Action1的代码为:

  Browser("Web Tours").Page("Web Tours").Frame("navbar").WebEdit("username").Set "qwen"

  ''输出值为环境变量

  Browser("Web Tours").Page("Web Tours").Frame("navbar").WebEdit("username").Output CheckPoint("username")

  ''输出值为action1之间的参数

  Browser("Web Tours").Page("Web Tours").Frame("navbar").WebEdit("username").Output CheckPoint("username_2")

  ''输出username_2的值

  msgbox Parameter.Item("testOneOut")

  ''取得环境变量的值

  msgbox Environment.Value("environment_username_value_out")

  Browser("Web Tours").Page("Web Tours").Frame("navbar").WebEdit("password").set "wenshanhao"

  Browser("Web Tours").Page("Web Tours").Frame("navbar").Image("Login").Click

  Browser("Web Tours").Page("Web Tours").Sync

  Browser("Web Tours").CloseAllTabsAction2的代码为:

  ''取得action1中传递的参数值

  msgbox Parameter.Item("testInput")

  运行后,可以看到Action2真确地获得了action1中所要传递的值。注意,本例稍稍讲到了action之间值传递的方法,具体更广泛的传递请朋友们自行研究。

  今晚内容似乎有点多,大家慢慢调,如遇到问题可以联系我哈。今晚就到这儿吧,明晚继续。

文青山

  2011-6-7


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那美那美

失业了,写文章求吃碗炒面

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值