51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3261|回复: 13
打印 上一主题 下一主题

[求助] 新手求助,文本框变化赋值的问题(已解决,谢谢版主)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-2-4 17:22:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用qtp录制脚本时,遇到一个问题,一个页面有多个文本输入框,必须输入值,但是,文本框的名字是变化的,name后面的那串数字是自动根据不同条件生成的,录制完脚本回放时,总是提示找不到这个对象,无法赋值
下面是页面的源文件,可能页面有3个文本框,也可能有5个,名字是不同的

<input type="text" name="per361447" value="0.0" class="input3">
<input type="text" name="per361448" value="0.0" class="input3">
<input type="text" name="per361449" value="0.0" class="input3">

请高手指点,怎么为这些文本框赋值。

该页面如下图,标红处的分标百分比那一列都需要填入数据
该页面的源代码见附件一

[ 本帖最后由 小澈 于 2008-2-18 14:37 编辑 ]

本帖子中包含更多资源

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

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

使用道具 举报

该用户从未签到

2#
发表于 2008-2-4 17:31:36 | 只看该作者
可以用描述性编程结合正则表达式解决。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2008-2-4 17:38:05 | 只看该作者
我试过,但是总是提示我不行,
比如我加入过 abs_x,abs_y的属性来区分文本框,可是还不行,提示我不匹配
描述性编程时,该使用什么条件来描述文本框的属性值用来区分开不同的文本框呢
这里只有name是不一样的,可是我事先不知道name的值

比如,我这么写过
browser("删除").Page("网_4").Frame("main_frame_right_3").WebEdit("x:=800","y:=133","class:=input3","type:=text").Set "60"

可是还是不行

[ 本帖最后由 小澈 于 2008-2-4 17:48 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2008-2-4 17:52:38 | 只看该作者
Cannot identify the object "[ WebEdit ]" (of class WebEdit). Verify that this object's properties match an object currently displayed in your application.

还是这个错误。。。

我是查看了对象的所有属性,感觉只有x,y,或者abs_x,abs_y能作为区别这些文本框的条件阿,为什么不行呢
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-2-4 18:23:12 | 只看该作者
装个msdn用IHtmlDocument2接口吧,网页的东西应该用com的那一套东西来的。那个接口貌似应该可以获取网页上的全部元素,好久没用过了,不太记得了。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2008-2-18 09:11:56 | 只看该作者
楼上的,能详细说下吗?谢谢了
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-2-18 11:09:34 | 只看该作者
不清楚具体的情况,不过我觉得可以取得页面上所有的WebEdit对象,然后按照“序号”进行赋值
Set Desc=description.create
Desc("micclass").value="WebEdit"
Set List=Browser().page().childobjects(Desc)
List(0).Set "hello"                                '这里序号0为页面上第一个WebEdit对象,要在哪个对象上赋值按系统具体情况而定
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2008-2-18 11:34:36 | 只看该作者
谢谢版主,这个方法也许可以。我回去试试看
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2008-2-18 12:04:30 | 只看该作者
我把我需要录制的这个页面详细说一下,如下图
我需要在标红的文本框中那一列中,都填上数据

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2008-2-18 12:05:56 | 只看该作者
该页面的源代码如附件

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2008-2-18 12:06:54 | 只看该作者
很想知道,遇到类似的问题,用什么方法来解决最好,怎么能准确迅速的在分标百分比那一行的文本框中输入数据,谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2008-2-18 14:34:43 | 只看该作者
已经解决了,非常感谢斑竹。就是版主告诉我的办法。具体方法如下
Set Desc = description.Create ()
Desc("micclass").value = "WebEdit"
Set Lists = Browser("").Page("").ChildObjects (Desc)
'这里可以用count求出当前有多少个框,然后作循环,用变量代替lists中的值,我因为页面是固定的4个,所以就不用做循环了,直接写4次就可以了
Lists(0).Set "60"
Lists(1).Set "60"
Lists(2).Set "60"
Lists(3).Set "60"
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2008-2-18 14:51:40 | 只看该作者
年前就给你了解决方案啊,一定要把代码贴出来啊?何况 denisye已经有参考代码了。这是我根据你的附件写的简单代码。在我本机验证通过。你看下再根据实际情况调整吧。

Set oDescWebEdit = Description.Create()
oDescWebEdit("micclass").Value = "WebEdit"
oDescWebEdit("name").Value = "per[0-9]{6,6}"

Set WebEditCol = Browser("在建项目").Page("在建项目").ChildObjects(oDescWebEdit)

cPercentage = CStr(CLng(100/WebEditCol.Count))

For i = 0 To WebEditCol.Count -1
        WebEditCol(i).Set cPercentage
Next

Set oDescWebEdit = Nothing
Set WebEditCol = Nothing
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2008-2-18 15:16:49 | 只看该作者
再次感谢热心的楼上
您的想法跟版主告之的解决办法基本一致,谢谢了
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-27 11:05 , Processed in 0.078015 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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