51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

12
返回列表 发新帖
楼主: crush
打印 上一主题 下一主题

[原创] 求助QTP回放中WebList输入值的问题

[复制链接]

该用户从未签到

21#
发表于 2011-8-8 17:03:03 | 只看该作者
如果不是要 测试这个空间本身的话就用:Browser("Browsername").Page("Pagename").Frame("meizzCalendarIframe").WebEdit("出生日期").Object.Value = "2032-01-01"就行了
如果要是特意测试这个控件,建议你手工测试,不要使用QTP,根本就不值得
回复 支持 反对

使用道具 举报

该用户从未签到

22#
 楼主| 发表于 2011-8-9 09:41:20 | 只看该作者
回复 21# lyscser

感谢楼上的几位  再次声明这不是webedit 不能用.object.value  
我也不是测试这个东西  我是录制制造数据的脚本 因为这个页面表单太多了 还需要参数化
回复 支持 反对

使用道具 举报

该用户从未签到

23#
发表于 2011-8-13 14:57:49 | 只看该作者
这因该是个ActiveX吧
回复 支持 反对

使用道具 举报

该用户从未签到

24#
发表于 2011-8-13 19:04:03 | 只看该作者
calendar需要点击webedit才会弹出来吧。而你的代码中并没有点击edit的操作。所有回放时,系统找不到calendar,就更找不到winlist。
其实最方便的方法是winedit.set,如果edit是只读的,可以用.object.readonly=false修改,然后写入值。
如果非要点击来获取日期,也可以,但是很麻烦。需要通过DOM获取很多页面属性,来控制控件。
下面是我写的携程网的calendar通过点击获取日期的部分代码,你可以参考一下。

  1. Function SplitStr(str)
  2. arr_tmp=split(str," ")
  3. arr=split(arr_tmp(1),"月")
  4. SplitStr=arr(0)
  5. End Function
  6. strTargetDate="2011-10-21"
  7. arrDate=split(strTargetDate,"-")
  8. strMonth=arrDate(1)
  9. strDay=arrDate(2)
  10. Set desc1=Description.Create
  11. Set desc2=Description.Create
  12. desc1("micclass").value="WebElement"
  13. desc1("html id").value="calendar_title1"
  14. desc1("html tag").value="SPAN"
  15. desc2("micclass").value="WebElement"
  16. desc2("html id").value="calendar_title2"
  17. desc2("html tag").value="SPAN"
  18. set titleCollection1=browser("携程旅行网: 酒店预订, 机票预订, 旅游度假,").Page("携程旅行网: 酒店预订, 机票预订, 旅游度假,").ChildObjects(desc1)
  19. set titleCollection2=browser("携程旅行网: 酒店预订, 机票预订, 旅游度假,").Page("携程旅行网: 酒店预订, 机票预订, 旅游度假,").ChildObjects(desc2)
  20. Set title1=titleCollection1(0)
  21. Set title2=titleCollection2(0)
  22. strTitle1=title1.GetROproperty("innertext")
  23. strTitle2=title2.GetROproperty("innertext")
  24. title_month1=SplitStr(strTitle1)
  25. title_month2=SplitStr(strTitle2)
  26. If cint(strMonth)<cint(title_month1) Then
  27. cnt=title_month1-strMonth
  28. For i=0 to cnt -1
  29.   browser("携程旅行网: 酒店预订, 机票预订, 旅游度假,").Page("携程旅行网: 酒店预订, 机票预订, 旅游度假,").WebEdit("DDatePeriod1").Click
  30.   browser("携程旅行网: 酒店预订, 机票预订, 旅游度假,").Page("携程旅行网: 酒店预订, 机票预订, 旅游度假,").WebElement("prevMonBtn").Click
  31. Next
  32. End If
  33. If cint(strMonth)>cint(title_month2) Then
  34. cnt=strMonth-title_month2
  35. For i=0 to cnt -1
  36.   browser("携程旅行网: 酒店预订, 机票预订, 旅游度假,").Page("携程旅行网: 酒店预订, 机票预订, 旅游度假,").WebEdit("DDatePeriod1").Click
  37.   browser("携程旅行网: 酒店预订, 机票预订, 旅游度假,").Page("携程旅行网: 酒店预订, 机票预订, 旅游度假,").WebElement("nextMonBtn").Click
  38. Next
  39. End If


复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

25#
发表于 2011-8-15 09:25:42 | 只看该作者
北漂测试群:141528110
回复 支持 反对

使用道具 举报

该用户从未签到

26#
发表于 2011-8-15 12:01:55 | 只看该作者
用描述性语言来实现很简单,首先点击输入框,让它弹出日期控件,再对日期控件做描述性编程就搞定了.
回复 支持 反对

使用道具 举报

该用户从未签到

27#
发表于 2011-8-15 14:35:59 | 只看该作者
这问题我也遇到过,只能在点击之后,选择之前加个wait等几秒,否则回放时因为太快,导到没弹出日期选择框,就执行下一步,所以报错。
回复 支持 反对

使用道具 举报

该用户从未签到

28#
发表于 2011-8-15 16:46:45 | 只看该作者
这种日期输入框,还是不要操作控件的好,直接针对那个日期输入框编写脚本。方法:
1)获取那个日期输入框对象(应该是一个WebEdit对象吧。如果录制时没有录制到该对象,可以在对象仓库中通过“添加”的方式手动获取)
2)一个步骤就可以解决:
XXX.WebEdit("XXX").Object.value="2011-07-09 10:08"
当然,那个日期值的格式要视具体情况而定,有的只需要输入日期值“2011-07-09”。
回复 支持 反对

使用道具 举报

该用户从未签到

29#
发表于 2011-8-15 17:19:54 | 只看该作者
实在不行,就用要输入的年份与当前日期的年份比较,差是多少,就循环点几下那个<< 或者>>,月份也一样。日期用WEBTABLE 点。
回复 支持 反对

使用道具 举报

该用户从未签到

30#
发表于 2011-8-17 13:09:15 | 只看该作者
12楼的方法可以。我平常就是这么做的,不要按照年、月、日的去选,直接在日前编辑框 输入一个合法的日期。比喻  2011-8-17,  Browser("...").Page("...").WebEdit("...").Set “2011-8-17”
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-24 16:26 , Processed in 0.068011 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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