51Testing软件测试论坛

标题: asp.net中的日期控件QTP无法识别,这么做妥否? [打印本页]

作者: pxwcypx    时间: 2007-10-30 10:34
标题: asp.net中的日期控件QTP无法识别,这么做妥否?
其实这几天关于这个问题没有少伤脑筋,论坛上面的东西很多可楞是看不懂,什么虚拟控件,参数传入,.NET插件啊。
由于刚学习QTP所以还是不开窍啊,.net插件装了但问题还在。所以我实在没办法,自己想了个办法,虽然可以获取指定的日期但是总感觉不托,所以大家给参详下。我发帖的最终目的是想大家告诉我虚拟控件的使用,在此我会尽量描述清楚我的问题,希望大家帮帮我。不然太痛苦了我。
=====================================================================================
[attach]34567[/attach]
从点击日期控件按钮----出现日期列表------选取特定的日期后,会将选取的日期如2007-10-01显示在输入框中。
针对上面的操作QTP只录制了这么点东西:下面红色标识部分

With Browser("欢迎使用 KJLINK CRM系统")
With .Page("欢迎使用 KJLINK CRM系统")
  .WebEdit("tbxUserName").Set "admin"
  .WebEdit("tbxPassword").SetSecure "47268a91d3b4053ed27702ee"
  .Image("ImgBtnLogin").Click 40,17
End With
.Page("Untitled Page").Link("我的任务").Click
.Page("Untitled Page_2").Image("ctl00$ContentPlaceHolder1$imgb").Click 23,11
With .Page("Untitled Page_3")
  .WebList("ctl00$ContentPlaceHolder1$drop").Select "上级决定"
  .WebList("ctl00$ContentPlaceHolder1$drop_2").Select "完成"
  .Image("icon_date1").Click
  .Image("icon_date1_2").Click
  .WebEdit("ctl00$ContentPlaceHolder1$tbxP").Set "1111111"
  .WebEdit("ctl00$ContentPlaceHolder1$tbxR").Set "222222"
  .WebEdit("ctl00$ContentPlaceHolder1$tbxN").Set "qqqqq"
  .WebList("ctl00$ContentPlaceHolder1$drop_3").Select "高"
  .Image("ctl00$ContentPlaceHolder1$imgb").Click 8,12
  .Image("ctl00$ContentPlaceHolder1$imgb_2").Click 26,15
  .Image("ctl00$ContentPlaceHolder1$imgb_2").Click 25,10
End With
.Page("Untitled Page_2").Sync
End With

它把日期控件当成一个Image,click后出现日期列表就完事。我在日期列表中选取的日期的动作和输入栏中显示的时间都没有,回放时候时间输入栏中为空,所以就会出错,不知道大家看懂没啊。
==========================================================================
于是我自己就手动添加我在日期列表中选取日期的动作。
在.Image("icon_date1").Click 后建立new step-----step generator--然后在日期列表上(显示的日历)点击“1”,把该对象给捕获下来。脚本为:Browser("欢迎使用 KJLINK CRM系统").Page("Untitled Page_3").WebElement("1").Click
这样在回放的时候问题是到解决了,可对日期不好参数化。很苦恼。
给我个好的方法。最好虚拟对象
用虚拟对象我也做过不过是门外汉哈哈,搞得问题一大堆:
问题1:我在虚拟对象库中定义多个对象时为什么在录制中虚拟对象被去错,(本来我没给该对象设置虚拟对象,可录制的时候怎么当作虚拟对象处理了)我保证我没看错;
问题2:我设置虚拟对象就上面的例子来看我到底设置哪个对象为虚拟对象:日期控件按钮还是显示出来的日历还是在日历上选取的日期
嘿嘿三个我都试了到最后只取第一个,但问题依旧没解决。
说了这么多就是想兄弟姐妹们帮我解决下难题:能真正的把日期控件问题给解决好。


作者: pxwcypx    时间: 2007-10-30 13:19
没人帮我看看吗?急
作者: hsjzfling    时间: 2007-10-30 20:01
这样看来对象是可以识别的,那么就不需要用虚拟对象的,你可以参考一下http://bbs.51testing.com/thread-92119-1-1.html中讨论的一些情况
记得最后是用描述性编程解决问题的吧,可以任意选择指定的日期,实现起来也比较简单~
若还是搞不定可以加我QQ或MSN帮你调试下~
作者: pxwcypx    时间: 2007-10-31 11:06
呵呵还是搞不定啊,对了你的MSN是多少啊,我的wangcy@china.kjlink.com
描述性编程的确不太行啊
作者: hsjzfling    时间: 2007-10-31 14:55
已经加了你的msn了,我的email在个人资料中应该有显示了吧~
作者: pxwcypx    时间: 2007-10-31 15:19
怎么老是看你不在线上啊? ,那个问题我还真解决不了,如何描述性编程,接触时间太短,学习已经到了个瓶颈阶段,每周学习还必须有成果。不然会被挨揍的
作者: pxwcypx    时间: 2007-10-31 15:24
怪不得看不到我的MSN号码搞错了,上面的是我的邮箱,MSN:wangcy.china@kjlink.com
呵呵,不好意思。
作者: pxwcypx    时间: 2007-10-31 17:20
With Browser("欢迎使用 KJLINK CRM系统")
With .Page("欢迎使用 KJLINK CRM系统")
  .WebEdit("tbxUserName").Set "admin"
  .WebEdit("tbxPassword").SetSecure "4728337f866f06268862935c"
  .Image("ImgBtnLogin").Click 2,15
End With
.Page("Untitled Page").Link("我的任务").Click
.Page("Untitled Page_2").Image("ctl00$ContentPlaceHolder1$imgb").Click 28,7
With .Page("Untitled Page_3")
  .WebList("ctl00$ContentPlaceHolder1$drop").Select "上级决定"
  .WebList("ctl00$ContentPlaceHolder1$drop_2").Select "进行中"
  .Image("icon_date1").Click           '点击日期按钮(可录制部分)
’在该步骤后面通过step generate手动添加如下几步,主要是在显示的日历上选取年月日的操作

Browser("Untitled Page").Page("Untitled Page").WebElement("October, 2007").Click
[attach]34645[/attach]
Browser("Untitled Page").Page("Untitled Page").WebElement("WebElement").Click

[localimg=400,300]2[/localimg]
Browser("Untitled Page").Page("Untitled Page").WebElement("Oct").Click
[localimg=400,300]3[/localimg]
Browser("Untitled Page").Page("Untitled Page").WebElement("10").Click

[localimg=400,300]4[/localimg]
wait 3
  .Image("icon_date1_2").Click
  .WebEdit("ctl00$ContentPlaceHolder1$tbxP").Set "111111"
  .WebEdit("ctl00$ContentPlaceHolder1$tbxR").Set "2222"
  .WebEdit("ctl00$ContentPlaceHolder1$tbxN").Set "11111111"
  .WebList("ctl00$ContentPlaceHolder1$drop_3").Select "高"
  .WebCheckBox("ctl00$ContentPlaceHolder1$chkR").Set "ON"
  .Image("ctl00$ContentPlaceHolder1$imgb").Click 34,16
  .Image("ctl00$ContentPlaceHolder1$imgb_2").Click 35,8
  .Image("ctl00$ContentPlaceHolder1$imgb_2").Click 33,5
End With
.Page("Untitled Page_2").Sync
End With
=============================================================================
这样通过step generate手动添加后回放就一切正常,但是有几个问题?
1:第一步,我点击的“October, 2007”为当前年月,要是下个月,启不是找不到对象?
2:现在我想参数化下时间:年月日在内,例如去做取随机的时间2007-09-09和2006-08-08
有些糊涂,希望帮忙解决下
作者: pxwcypx    时间: 2007-10-31 17:23
[attach]34646[/attach]
[attach]34647[/attach]
[attach]34648[/attach]
上面三行蓝色脚本对应的图示
作者: hsjzfling    时间: 2007-10-31 19:04
1、 先获得随机的日期,并分别得到该日期的年、月、日,可以通过如下方法
Dim iDate,RndYear,RndMonth,RndDay

Call RndDate("2006-06-06","2007-07-07")

Function RndDate(StartDate,EndDate)
        days = CDate(EndDate) - CDate(StartDate)
        iDate = CDate(StartDate) + RandomNumber(0,days)
        RndYear = Year(iDate)
        RndMonth = Month(iDate)
        RndDay = Day(iDate)
        RndDate = iDate
End Function

2、 将随机得到的年份与系统日期中的年份进行比较,以决定如何进行选择年的操作
iYear = RndYear
While iYear <> Year(Date)
        If iYear > Year(Date) Then
                <翻到下一年>
                iYear = iYear - 1
        Else
                <翻到前一年>
                iYear = iYear + 1
        End If
Wend

3、 此时就会停留到随机到的年份上,然后选择月份
可以使用个Select Case,不过使用描述性编程与正则表达式比较方便,年份可以直接参数化为RndYear(和下面选择日期的方式类似,可以用其它属性加index属性来识别,("index:=" & RndMonth-1))

4、 选择日期,可以使用描述性编程
比如 Browser("B").Page("P").Frame("F").WebTable("W").WebElement("innertext:=" & RndDay).Click
需要再加个识别属性,将灰色的日期与正常的日期区分开来,你自己用spy查看下它们之间有什么区别吧

如是无法识别诸如WebTable等对象,则可以再添加其它的识别属性来区分日期的WebElement与页面上的其它WebElement

[ 本帖最后由 hsjzfling 于 2007-11-1 11:28 编辑 ]
作者: chbacheng    时间: 2007-11-1 10:49
标题: 回复 1# 的帖子
试试最新版的QTP9.2应该已经解决了这个问题。
作者: chbacheng    时间: 2007-11-1 10:54
标题: 回复 1# 的帖子
很是专业啊,学习中......
作者: hsjzfling    时间: 2007-11-1 11:29
10楼的帖子我重新编辑了下,修改了一点随机日期函数中的问题
作者: 51mobile    时间: 2007-11-1 12:50
收藏了
作者: pxwcypx    时间: 2007-11-1 15:44
呵呵问题总算解决了,但我的代码很臃肿啊,还有就是那个日历上的日期选取,灰色的和黑色的区别实在找不到,我就自己加了一个属性,没想到就可以了,不会因为同事出现2个相同的数据而报错了,不知道为什么。
作者: publicaccount    时间: 2007-11-7 16:53
标题: ddddddd
ddddddddddddddddddd
作者: czh84063149    时间: 2008-6-11 15:55
我用的就是9.2,也有类似问题,已经装了.net的插件,但是根本没录到选择日期和提交日期的内容,有没有人帮忙解决下




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2