angelia_liu 发表于 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

chenyb85 发表于 2008-9-9 18:06:04

提供一下你要处理的“WebElement”的html源码,这样比较好明确问题。:)

lantianwei 发表于 2008-9-9 18:16:02

正则表达式

pbng 发表于 2008-9-9 18:32:48

用描述性编程就可以解决了

angelia_liu 发表于 2008-9-10 09:47:20

原帖由 chenyb85 于 2008-9-9 18:06 发表 http://bbs.51testing.com/images/common/back.gif
提供一下你要处理的“WebElement”的html源码,这样比较好明确问题。:)

是这个吗?

angelia_liu 发表于 2008-9-10 09:48:09

原帖由 lantianwei 于 2008-9-9 18:16 发表 http://bbs.51testing.com/images/common/back.gif
正则表达式

我试了,但没成功,不知道是不是我用错了

chenyb85 发表于 2008-9-10 10:19:33

先试一下以下这个。如果不行的话,那请提供源代码。就是页面上点击右键,“查看源码文件”中有关此控件的那段程序。:)
Browser("Merchandising Tool").Page("Page").WebElement("html tag:=SPAN","innertext:=Hot.*Brands.*(\d*)").click

angelia_liu 发表于 2008-9-10 10:23:25

原帖由 chenyb85 于 2008-9-9 18:06 发表 http://bbs.51testing.com/images/common/back.gif
提供一下你要处理的“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>

chenyb85 发表于 2008-9-10 10:36:59

你可以直接用手动的方式修改识别此控件的属性,这个就不讲了。就是工具的应用。
也可以用描述性编程:
如,试一下吧
Browser("Merchandising Tool").Page("Page").WebElement("html tag:=SPAN","html id:=db_cartridgeID_contentTypeID").Click

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

angelia_liu 发表于 2008-9-10 10:43:12

原帖由 chenyb85 于 2008-9-10 10:19 发表 http://bbs.51testing.com/images/common/back.gif
先试一下以下这个。如果不行的话,那请提供源代码。就是页面上点击右键,“查看源码文件”中有关此控件的那段程序。:)
Browser("Merchandising Tool").Page("Page").WebElement("html tag:=SPAN","innertext:=Hot. ...

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

chenyb85 发表于 2008-9-10 10:50:59

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

呵呵。有空多交流哦。共同提高测试的地位。:)

angelia_liu 发表于 2008-9-10 10:51:07

原帖由 chenyb85 于 2008-9-10 10:36 发表 http://bbs.51testing.com/images/common/back.gif
你可以直接用手动的方式修改识别此控件的属性,这个就不讲了。就是工具的应用。
也可以用描述性编程:
如,试一下吧
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也有这个属性.

谢谢您的耐心指导

chenyb85 发表于 2008-9-10 11:01:49

那你的“innertext”值有规则吗?
即<span> 和 </span>之间的值是否都符合上面的正则表达式“Hot.*Brands.*(\d*)”,否则会不识别的哦。

angelia_liu 发表于 2008-9-10 11:05:28

回复 13# 的帖子

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

chenyb85 发表于 2008-9-10 11:11:53

能把这一块的界面截图发上来不?然后注明你要点击的点,并注明哪些是不动点或是有规则点。这样才好写适应性更好的代码。

[ 本帖最后由 chenyb85 于 2008-9-10 11:12 编辑 ]

angelia_liu 发表于 2008-9-10 11:20:42

原帖由 chenyb85 于 2008-9-10 11:11 发表 http://bbs.51testing.com/images/common/back.gif
能把这一块的界面截图发上来不?然后注明你要点击的点,并注明哪些是不动点或是有规则点。这样才好写适应性更好的代码。


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

chenyb85 发表于 2008-9-10 11:32:34

根据这张图片和上面的聊天,个人感觉不适合直接识别这个控件。
但有一个问题,开发居然把控件“id”弄成一样的?这样不大好哦。

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

[ 本帖最后由 chenyb85 于 2008-9-10 11:50 编辑 ]

chenyb85 发表于 2008-9-10 11:34:43

加QQ聊吧。不然这样太慢了。:)

angelia_liu 发表于 2008-9-10 13:58:37

我们公司只能用MSN: lxjbiscuit@hotmail.com

angelia_liu 发表于 2008-9-10 14:03:34

原帖由 chenyb85 于 2008-9-10 11:32 发表 http://bbs.51testing.com/images/common/back.gif
根据这张图片和上面的聊天,个人感觉不适合直接识别这个控件。
但有一个问题,开发居然把控件“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] 2
查看完整版本: 如何处理会动态变化的对像