51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4870|回复: 24
打印 上一主题 下一主题

[原创] 如何处理会动态变化的对像

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-9-9 16:24:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的问题是这样的:

      如附件所示,我要对 Web element 对像 "Hot Brands"进行编辑. "Hot Brands"里面包括order之类的属性,当对这些属性进行修改之后, "Hot Brands"也发生了变化.因此回放的时候出现错误,找不到这个对像了.请指教如何解决这个问题. 谢谢

      以下是我录制的脚本:其中100,99之类的数字为order. "Hot Brands"他还有一个属性cartridge id, 录制的时候没有把这个信息捕获到,请问该项如何把这个属性捕获到呢?这个ID是惟一的。

Browser("Merchandising Tool").Page("Page").WebElement("Hot Brands : 100").Click
Browser("Merchandising Tool").Page("Page").WebElement("Hot Brands : 100").Click
Browser("Merchandising Tool").Page("Page").WebEdit("edtCat_CatDescription").Click
Browser("Merchandising Tool").Page("Page").WebEdit("edtCat_CatDescription").Set "test1"
Browser("Merchandising Tool").Page("Page").WebButton("Save").Click
Browser("Merchandising Tool").Page("Page").WebElement("Hot Brands : 100").Click
Browser("Merchandising Tool").Page("Page").WebEdit("edtCat_Order").Click
Browser("Merchandising Tool").Page("Page").WebEdit("edtCat_Order").Set "99"
Browser("Merchandising Tool").Page("Page").WebButton("Save").Click
Browser("Merchandising Tool").Page("Page").WebElement("Hot Brands : 99").Click
Browser("Merchandising Tool").Page("Page").WebEdit("edtCat_CatName").Click
Browser("Merchandising Tool").Page("Page").Link("Logout").Click
Browser("Merchandising Tool").Page("Merchandising Tool_2").Sync
Browser("Merchandising Tool").Close

本帖子中包含更多资源

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

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

使用道具 举报

该用户从未签到

2#
发表于 2008-9-9 18:06:04 | 只看该作者
提供一下你要处理的“WebElement”的html源码,这样比较好明确问题。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-9-9 18:16:02 | 只看该作者
正则表达式
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-9-9 18:32:48 | 只看该作者
用描述性编程就可以解决了
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2008-9-10 09:47:20 | 只看该作者
原帖由 chenyb85 于 2008-9-9 18:06 发表
提供一下你要处理的“WebElement”的html源码,这样比较好明确问题。


是这个吗?

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2008-9-10 09:48:09 | 只看该作者
原帖由 lantianwei 于 2008-9-9 18:16 发表
正则表达式


我试了,但没成功,不知道是不是我用错了
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-9-10 10:19:33 | 只看该作者
先试一下以下这个。如果不行的话,那请提供源代码。就是页面上点击右键,“查看源码文件”中有关此控件的那段程序。
Browser("Merchandising Tool").Page("age").WebElement("html tag:=SPAN","innertext:=Hot.*Brands.*(\d*)").click
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2008-9-10 10:23:25 | 只看该作者
原帖由 chenyb85 于 2008-9-9 18:06 发表
提供一下你要处理的“WebElement”的html源码,这样比较好明确问题。



是这个吧: 那个cCartridgeID是惟一的,但是录制的时候没有录制下来.
<span class="active_tree" id="db_cartridgeID_contentTypeID" title="%7B%22cImageID%22%3A0%2C%22cAppID%22%3A102003%2C%22cMenuText%22%3A%22Hot%20Brands%22%2C%22cOrder%22%3A99%2C%22cCartridgeID%22%3A341502%2C%22cArchiveApp%22%3A0%2C%22cMenuTypeID%22%3A1%2C%22cCartridgeDescription%22%3A%22test1%22%2C%22cActionID%22%3A0%2C%22cEndDate%22%3Anull%2C%22woymNode%22%3Anull%2C%22cContentTypeID%22%3A8%2C%22cMenuID%22%3A152610%2C%22cStartDate%22%3A%2207%2F25%2F2008%2022%3A00%3A00%22%7D">Hot Brands : 99</span>
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2008-9-10 10:36:59 | 只看该作者
你可以直接用手动的方式修改识别此控件的属性,这个就不讲了。就是工具的应用。
也可以用描述性编程:
如,试一下吧
Browser("Merchandising Tool").Page("Page").WebElement("html tag:=SPAN","html id:=db_cartridgeID_contentTypeID").Click

顺便提一句,如果使用描述性编程,默认是识别正则表达式的。如果不想让其识别为正则表达式,则要进行转义或设置“RegularExpression”.
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2008-9-10 10:43:12 | 只看该作者
原帖由 chenyb85 于 2008-9-10 10:19 发表
先试一下以下这个。如果不行的话,那请提供源代码。就是页面上点击右键,“查看源码文件”中有关此控件的那段程序。
Browser("Merchandising Tool").Page("age").WebElement("html tag:=SPAN","innertext:=Hot. ...


嗯,真的可以了耶,谢谢哦.
请问这是什么方法?
如果我要编辑这个element的名字又要怎么做呢?也就是innertext变了
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2008-9-10 10:50:59 | 只看该作者
建议还是少用“innertext”来识别吧。除非“innertext”的值是比较稳定的或是有规则的。
上面用到的是描述性编程,而默认是支持正则表达式的。也用到正则表达式“Hot.*Brands.*(\d*)”
----------------------------------------------
“如果我要编辑这个element的名字又要怎么做呢?也就是innertext变了”
这个没看懂要问什么。
你还是试一下以下这个能不能用,能用就用这个:
Browser("Merchandising Tool").Page("age").WebElement("html tag:=SPAN","html id:=db_cartridgeID_contentTypeID").Click
-------------------------------------------------
建议先把“Main_Users_Guide”完整且仔细的看一遍。此文档,本论坛搜搜就有。

呵呵。有空多交流哦。共同提高测试的地位。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2008-9-10 10:51:07 | 只看该作者
原帖由 chenyb85 于 2008-9-10 10:36 发表
你可以直接用手动的方式修改识别此控件的属性,这个就不讲了。就是工具的应用。
也可以用描述性编程:
如,试一下吧
Browser("Merchandising Tool").Page("Page").WebElement("html tag:=SPAN","html id:=db_cart ...


用Browser("Merchandising Tool").Page("Page").WebElement("html tag:=SPAN","html id:=db_cartridgeID_contentTypeID").Click 不行,因为db_cartridgeID_contentTypeID不是惟一的,其他的WebElement也有这个属性.

谢谢您的耐心指导
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2008-9-10 11:01:49 | 只看该作者
那你的“innertext”值有规则吗?
即<span> 和 </span>之间的值是否都符合上面的正则表达式“Hot.*Brands.*(\d*)”,否则会不识别的哦。
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2008-9-10 11:05:28 | 只看该作者

回复 13# 的帖子

innertext可能没有规则,因为我可能会对WebElement的名称进行编辑,也就是把Hot Brands改为其他的名字
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2008-9-10 11:11:53 | 只看该作者
能把这一块的界面截图发上来不?然后注明你要点击的点,并注明哪些是不动点或是有规则点。这样才好写适应性更好的代码。

[ 本帖最后由 chenyb85 于 2008-9-10 11:12 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

16#
 楼主| 发表于 2008-9-10 11:20:42 | 只看该作者
原帖由 chenyb85 于 2008-9-10 11:11 发表
能把这一块的界面截图发上来不?然后注明你要点击的点,并注明哪些是不动点或是有规则点。这样才好写适应性更好的代码。



我要执行的操作是:
1. 点击 "Hot Brands", 然后下面就会出现有关他的相关信息.
2. 对"category name"进行编辑,也就是编辑"Hot Brands"把他改为其他的名字.
3. 点击"SAVE" button进行保存

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2008-9-10 11:32:34 | 只看该作者
根据这张图片和上面的聊天,个人感觉不适合直接识别这个控件。
但有一个问题,开发居然把控件“id”弄成一样的?这样不大好哦。

提供我的一点思路:首先,你怎么确定你要点的是哪一个“WebElement“,有什么特性?
点击后下面的编辑框是怎么识别并进行得理的?
查看一下,是不是有和主键类似的东西。
要真不行,可以扩展到旁边的对象,然后再通过旁边的对象获取要点击的对象。

[ 本帖最后由 chenyb85 于 2008-9-10 11:50 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2008-9-10 11:34:43 | 只看该作者
加QQ聊吧。不然这样太慢了。
回复 支持 反对

使用道具 举报

该用户从未签到

19#
 楼主| 发表于 2008-9-10 13:58:37 | 只看该作者
我们公司只能用MSN: lxjbiscuit@hotmail.com
回复 支持 反对

使用道具 举报

该用户从未签到

20#
 楼主| 发表于 2008-9-10 14:03:34 | 只看该作者
原帖由 chenyb85 于 2008-9-10 11:32 发表
根据这张图片和上面的聊天,个人感觉不适合直接识别这个控件。
但有一个问题,开发居然把控件“id”弄成一样的?这样不大好哦。

提供我的一点思路:首先,你怎么确定你要点的是哪一个“WebElement“,有什么特性 ...


录制的时候代码里显示的是WebElement的category name 和 order.
Browser("Merchandising Tool").Page("Page").WebElement("Voice Tones : 4").Click

其实识别这个WebElement的惟一标识是他的cartridge ID,但是在这个在录制的时候没有录制下来.
关于下面的编辑框直接点击这个"WebElement'就可以出来.
Browser("Merchandising Tool").Page("Page").WebEdit("edtCat_CatName").Click
Browser("Merchandising Tool").Page("Page").WebEdit("edtCat_CatName").Set "Voice Tones edit"
Browser("Merchandising Tool").Page("Page").WebButton("Save").Click

[ 本帖最后由 angelia_liu 于 2008-9-10 14:05 编辑 ]
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-28 08:46 , Processed in 0.088635 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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