onlonely 发表于 2009-3-18 17:31:12

描述性编程中《javascript:AddBook();》连接的使用问题。

今天在描述性编程中遇到一个问题,怎么都不能解决。只要来此请教了。
问题描述:请先看代码
...
Set ehome=browser("name:=我家日记 - eHome 网家 — 记录家庭成长").Page("title:=我家日记 - eHome 网家 — 记录家庭成长")
ehome.link("text:=[创建日记本]","url:=javascript:AddBook();").click
ehome.WebEdit("name:=txtBookName").set"日记本1"
ehome.WebEdit("name:=txtDesc").set"日记本简介"
ehome.WebEdit("name:=txtLabel").set"日记本标签"
ehome.Image("name:=image","file name:=diarybook_thumb3.jpg").Click
ehome.WebRadioGroup("onAddDiary").Select "1101"
ehome.WebRadioGroup("onReadDiary").Select "1021"
ehome.WebButton("确 定").Click

如上面代码,link对象里面已经使用了2个属性,在回放中依然无法识别对象。我再增加几个属性,同样提示无法识别对象。
但是,如果你使用录制的方式的话,就能回放这个操作。

所以我的问题就是:
1,在描述性编程中,如此类使用A标签的,但是是javascript操作的。对象应该如何设置属性,才能使用呢。

onlonely 发表于 2009-3-19 09:28:53

:Q 高手,高手快出来。

jinsen 发表于 2009-3-19 09:38:31

我的经验是描述对象的属性并不是越多越好,而是应该只要能确定唯一的对象就行了。
代码:< ehome.link("text:=[创建日记本]","url:=javascript:AddBook();").click >
一般来说,同一个画面上,是不会出现两个相同名称的Link或是Button的,
因此,一般只要使用对象的“Name”或是“Text”属性就足以描述一个对象。
当然,特殊的情况也是有的,例如:在登录页面中,GridView,DataTable中会有多行出现。
这个时候,QTP会对有相同描述属性的对象添加一个“Index”属性,从 0 开始分配,依次增加。
所以,楼主所用的 <url:=javascript:AddBook();>,诸如此类的属性我会极力避免。
我对个问题的解决提案是先把 <url:=javascript:AddBook();> 去掉试一试,不行的话,
那就可能要用到转义符——“\”,我记得在“(”和“)”之前是要加的,你先试试看。

Haereticus 发表于 2009-3-19 19:41:38

ehome.link("text:=[创建日记本]","url:=javascript:AddBook();").click
text:=[创建日记本]使用描述性编程,QTP默认为正则表达式,[ ],签要使用“\”转义字符
改为:ehome.link("text:=\[创建日记本\]","url:=javascript:AddBook();").click

onlonely 发表于 2009-3-20 12:15:28

回复 4# 的帖子

原帖由 Haereticus 于 2009-3-19 19:41 发表 http://bbs.51testing.com/images/common/back.gif
ehome.link("text:=[创建日记本]","url:=javascript:AddBook();").click
text:=[创建日记本]使用描述性编程,QTP默认为正则表达式,[ ],签要使用“\”转义字符
改为:ehome.link("text:=\[创建日记本\]","url:=ja ...
你的回答是正确的,原来并不是插件支持,也不是属性用多了,或者用错了。
是某些符号需要转义,因为这些符号是用来正则表达式时使用的,
不转义,QTP会按照正则表达式的规则来处理。而造成没有这个对象了。
页: [1]
查看完整版本: 描述性编程中《javascript:AddBook();》连接的使用问题。