51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4446|回复: 16
打印 上一主题 下一主题

[原创] asp.net中的日期控件QTP无法识别,这么做妥否?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-10-30 10:34:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
其实这几天关于这个问题没有少伤脑筋,论坛上面的东西很多可楞是看不懂,什么虚拟控件,参数传入,.NET插件啊。
由于刚学习QTP所以还是不开窍啊,.net插件装了但问题还在。所以我实在没办法,自己想了个办法,虽然可以获取指定的日期但是总感觉不托,所以大家给参详下。我发帖的最终目的是想大家告诉我虚拟控件的使用,在此我会尽量描述清楚我的问题,希望大家帮帮我。不然太痛苦了我。
=====================================================================================

从点击日期控件按钮----出现日期列表------选取特定的日期后,会将选取的日期如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:我设置虚拟对象就上面的例子来看我到底设置哪个对象为虚拟对象:日期控件按钮还是显示出来的日历还是在日历上选取的日期
嘿嘿三个我都试了到最后只取第一个,但问题依旧没解决。
说了这么多就是想兄弟姐妹们帮我解决下难题:能真正的把日期控件问题给解决好。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2007-10-30 13:19:06 | 只看该作者
没人帮我看看吗?急
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-10-30 20:01:40 | 只看该作者
这样看来对象是可以识别的,那么就不需要用虚拟对象的,你可以参考一下http://bbs.51testing.com/thread-92119-1-1.html中讨论的一些情况
记得最后是用描述性编程解决问题的吧,可以任意选择指定的日期,实现起来也比较简单~
若还是搞不定可以加我QQ或MSN帮你调试下~
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2007-10-31 11:06:47 | 只看该作者
呵呵还是搞不定啊,对了你的MSN是多少啊,我的wangcy@china.kjlink.com
描述性编程的确不太行啊
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-10-31 14:55:22 | 只看该作者
已经加了你的msn了,我的email在个人资料中应该有显示了吧~
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2007-10-31 15:19:50 | 只看该作者
怎么老是看你不在线上啊? ,那个问题我还真解决不了,如何描述性编程,接触时间太短,学习已经到了个瓶颈阶段,每周学习还必须有成果。不然会被挨揍的
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2007-10-31 15:24:08 | 只看该作者
怪不得看不到我的MSN号码搞错了,上面的是我的邮箱,MSN:wangcy.china@kjlink.com
呵呵,不好意思。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2007-10-31 17:20:22 | 只看该作者
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

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
有些糊涂,希望帮忙解决下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2007-10-31 17:23:00 | 只看该作者



上面三行蓝色脚本对应的图示

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-10-31 19:04:51 | 只看该作者
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 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-11-1 10:49:02 | 只看该作者

回复 1# 的帖子

试试最新版的QTP9.2应该已经解决了这个问题。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2007-11-1 10:54:33 | 只看该作者

回复 1# 的帖子

很是专业啊,学习中......
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2007-11-1 11:29:51 | 只看该作者
10楼的帖子我重新编辑了下,修改了一点随机日期函数中的问题
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2007-11-1 12:50:16 | 只看该作者
收藏了
回复 支持 反对

使用道具 举报

该用户从未签到

15#
 楼主| 发表于 2007-11-1 15:44:49 | 只看该作者
呵呵问题总算解决了,但我的代码很臃肿啊,还有就是那个日历上的日期选取,灰色的和黑色的区别实在找不到,我就自己加了一个属性,没想到就可以了,不会因为同事出现2个相同的数据而报错了,不知道为什么。
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2007-11-7 16:53:19 | 只看该作者

ddddddd

ddddddddddddddddddd
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2008-6-11 15:55:44 | 只看该作者
我用的就是9.2,也有类似问题,已经装了.net的插件,但是根本没录到选择日期和提交日期的内容,有没有人帮忙解决下
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-23 11:58 , Processed in 0.083204 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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