51Testing软件测试论坛
标题:
求助QTP回放中WebList输入值的问题
[打印本页]
作者:
crush
时间:
2011-8-3 18:32
标题:
求助QTP回放中WebList输入值的问题
本帖最后由 crush 于 2011-8-4 09:24 编辑
问题如下:
我的目的是想做一个制造数据的脚本 但是回放过程中有一个WebList不知道怎么写进去值 脚本与如下 请大神指点
Browser("Browsername").Page("Pagename").Frame("meizzCalendarIframe").WebList("tmpYearSelect").Select "2032年"
目前不知道怎么传截图 但是上述代码的Select是选不中值的 稍后上图
补充报错信息如下 求回复啊~~!![attach]74635[/attach]
[attach]74630[/attach][attach]74629[/attach]
[attach]74639[/attach]
作者:
shingo0109
时间:
2011-8-4 09:51
看图片,年和月份应该是要先进行点击操作才会出现WebList的,所以LZ之前应该多一步WebElement的点击操作, 不然WebList是无法识别的
作者:
crush
时间:
2011-8-4 09:57
回复
2#
shingo0109
Browser("Browsername").Page("Pagename").Frame("meizzCalendarIframe").WebElement("WebTable").Click
这个代码有的 但是也回放不了 因为选不中日期1-31号的那部分 那部分点了也录不出东西来~
作者:
crush
时间:
2011-8-4 09:57
回复
2#
shingo0109
Browser("Browsername").Page("Pagename").Frame("meizzCalendarIframe").WebElement("WebTable").Click
这个代码有的 但是也回放不了 因为选不中日期1-31号的那部分 那部分点了也录不出东西来~
作者:
shingo0109
时间:
2011-8-4 13:44
类似这种日期控件也写过,但都是直接用描述性编程写的,没有用录制,可能是不是有相同的控件,需要使用index来标识
作者:
crush
时间:
2011-8-4 13:59
回复
5#
shingo0109
不会描述性编程的说…… 能否提供当时的代码并解释下? 我照着写写
作者:
luke.lv
时间:
2011-8-4 21:05
白天没搜到这贴。。。 看上面说的应该是对“**年”控件执行click的操作没有回放成功; 可以用描述性编程尝试下。 另外还可以用强制获取文本坐标的方法得到“年”的绝对坐标;然后执行click操作
作者:
crush
时间:
2011-8-5 08:49
回复
7#
luke.lv
不是不会描述性编程么~ 坐标的方法不行 这一个页面有3个这样的控件 需要下拉才能显示后两个 所以没法控制坐标
作者:
shingo0109
时间:
2011-8-5 09:47
LZ要首先确保选择年份之前的点击操作要成功,这个应该是个webelement控件,用spy看下其属性,找到可以唯一识别它的属性,用描述性语言写下, 描述性参考如下:
Browser("xxxx").Page("xxxx").Frame("xxxx").WebElement("属性1:=aaa","属性2:=bbb").Click
如果有多个相同属性的话,可以添加index属性识别
作者:
crush
时间:
2011-8-5 10:28
回复
9#
shingo0109
click操作可以用Tab键来实现 现在的问题好像是 1-31号日期那部分 是录不出对象来的 识别不了 年份可以选择 但是选择不了日期 而且这个控件不能写入 好像是点击了日期之后 才会把年月日加起来生成一个值放入到里面 所以 选不了日期 就写不进去
作者:
crush
时间:
2011-8-5 10:28
回复
9#
shingo0109
click操作可以用Tab键来实现 现在的问题好像是 1-31号日期那部分 是录不出对象来的 识别不了 年份可以选择 但是选择不了日期 而且这个控件不能写入 好像是点击了日期之后 才会把年月日加起来生成一个值放入到里面 所以 选不了日期 就写不进去
作者:
wolaizhinidexin
时间:
2011-8-5 11:33
改变输入框的只读属性为false,然后直接对输入框赋值。摒弃从日期控件中选值的方法。
作者:
crush
时间:
2011-8-5 11:48
回复
12#
wolaizhinidexin
怎么改?让开发改不太现实~ 能否具体点?
作者:
wyqkl
时间:
2011-8-5 16:53
重新录制一下脚本,当前年份虽然自动弹出了,可还是要用鼠标点一下的,或者你选择别的年份试一下
作者:
crush
时间:
2011-8-5 17:07
回复
14#
wyqkl
不是脚本的问题 录完了就这两行代码 只录上了年份的select 日期录不上
作者:
wyqkl
时间:
2011-8-5 20:50
月份也要用鼠标点一下,月份和日期都改成其他的月份,不用用默认值,试一下。
作者:
crush
时间:
2011-8-8 10:50
自己再顶一下~
作者:
ddtianle
时间:
2011-8-8 13:54
本帖最后由 ddtianle 于 2011-8-8 13:55 编辑
12楼说的是正解
Browser("...").Page("...").WebEdit("...").Object.ReadOnly=False
Browser("...").Page("...").WebEdit("...").Set Date
作者:
Gasgoo
时间:
2011-8-8 15:18
在选择 年份 前 加 wait()方法试试。让脚本停留几秒试试。
作者:
datouniuniu
时间:
2011-8-8 15:24
这种控件用录制的方法是行不通的,肯定要用描述性语言来写。。。。
作者:
lyscser
时间:
2011-8-8 17:03
如果不是要 测试这个空间本身的话就用:Browser("Browsername").Page("Pagename").Frame("meizzCalendarIframe").WebEdit("出生日期").Object.Value = "2032-01-01"就行了
如果要是特意测试这个控件,建议你手工测试,不要使用QTP,根本就不值得
作者:
crush
时间:
2011-8-9 09:41
回复
21#
lyscser
感谢楼上的几位 再次声明这不是webedit 不能用.object.value
我也不是测试这个东西 我是录制制造数据的脚本 因为这个页面表单太多了 还需要参数化
作者:
rogerliu0303
时间:
2011-8-13 14:57
这因该是个ActiveX吧
作者:
rogerliu0303
时间:
2011-8-13 19:04
calendar需要点击webedit才会弹出来吧。而你的代码中并没有点击edit的操作。所有回放时,系统找不到calendar,就更找不到winlist。
其实最方便的方法是winedit.set,如果edit是只读的,可以用.object.readonly=false修改,然后写入值。
如果非要点击来获取日期,也可以,但是很麻烦。需要通过DOM获取很多页面属性,来控制控件。
下面是我写的携程网的calendar通过点击获取日期的部分代码,你可以参考一下。
Function SplitStr(str)
arr_tmp=split(str," ")
arr=split(arr_tmp(1),"月")
SplitStr=arr(0)
End Function
strTargetDate="2011-10-21"
arrDate=split(strTargetDate,"-")
strMonth=arrDate(1)
strDay=arrDate(2)
Set desc1=Description.Create
Set desc2=Description.Create
desc1("micclass").value="WebElement"
desc1("html id").value="calendar_title1"
desc1("html tag").value="SPAN"
desc2("micclass").value="WebElement"
desc2("html id").value="calendar_title2"
desc2("html tag").value="SPAN"
set titleCollection1=browser("携程旅行网: 酒店预订, 机票预订, 旅游度假,").Page("携程旅行网: 酒店预订, 机票预订, 旅游度假,").ChildObjects(desc1)
set titleCollection2=browser("携程旅行网: 酒店预订, 机票预订, 旅游度假,").Page("携程旅行网: 酒店预订, 机票预订, 旅游度假,").ChildObjects(desc2)
Set title1=titleCollection1(0)
Set title2=titleCollection2(0)
strTitle1=title1.GetROproperty("innertext")
strTitle2=title2.GetROproperty("innertext")
title_month1=SplitStr(strTitle1)
title_month2=SplitStr(strTitle2)
If cint(strMonth)<cint(title_month1) Then
cnt=title_month1-strMonth
For i=0 to cnt -1
browser("携程旅行网: 酒店预订, 机票预订, 旅游度假,").Page("携程旅行网: 酒店预订, 机票预订, 旅游度假,").WebEdit("DDatePeriod1").Click
browser("携程旅行网: 酒店预订, 机票预订, 旅游度假,").Page("携程旅行网: 酒店预订, 机票预订, 旅游度假,").WebElement("prevMonBtn").Click
Next
End If
If cint(strMonth)>cint(title_month2) Then
cnt=strMonth-title_month2
For i=0 to cnt -1
browser("携程旅行网: 酒店预订, 机票预订, 旅游度假,").Page("携程旅行网: 酒店预订, 机票预订, 旅游度假,").WebEdit("DDatePeriod1").Click
browser("携程旅行网: 酒店预订, 机票预订, 旅游度假,").Page("携程旅行网: 酒店预订, 机票预订, 旅游度假,").WebElement("nextMonBtn").Click
Next
End If
复制代码
作者:
harui
时间:
2011-8-15 09:25
北漂测试群:141528110
作者:
samson_wsx
时间:
2011-8-15 12:01
用描述性语言来实现很简单,首先点击输入框,让它弹出日期控件,再对日期控件做描述性编程就搞定了.
作者:
fjfhsn
时间:
2011-8-15 14:35
这问题我也遇到过,只能在点击之后,选择之前加个wait等几秒,否则回放时因为太快,导到没弹出日期选择框,就执行下一步,所以报错。
作者:
vickywang_no1
时间:
2011-8-15 16:46
这种日期输入框,还是不要操作控件的好,直接针对那个日期输入框编写脚本。方法:
1)获取那个日期输入框对象(应该是一个WebEdit对象吧。如果录制时没有录制到该对象,可以在对象仓库中通过“添加”的方式手动获取)
2)一个步骤就可以解决:
XXX.WebEdit("XXX").Object.value="
2011-07-09 10:08
"
当然,那个日期值的格式要视具体情况而定,有的只需要输入日期值“2011-07-09”。
作者:
Ganve_001
时间:
2011-8-15 17:19
实在不行,就用要输入的年份与当前日期的年份比较,差是多少,就循环点几下那个<< 或者>>,月份也一样。日期用WEBTABLE 点。
作者:
binllyyu
时间:
2011-8-17 13:09
12楼的方法可以。我平常就是这么做的,不要按照年、月、日的去选,直接在日前编辑框 输入一个合法的日期。比喻 2011-8-17, Browser("...").Page("...").WebEdit("...").Set “2011-8-17”
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2