cs_william 发表于 2010-3-29 15:19:07

关于readonly属性用来定位无法识别的问题,在线等,急!!!!!!!!!

关于readonly属性用来定位无法识别的问题


set editObject=description.Create
editObject("name").value="wd"
editObject("readonly").value=0
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit(editObject).Set "测试一下"


请问我上面的语句为什么会失败?加上editObject("readonly").value=0后就失败了,readonly应该是BOOL型的,我0, "0", false都试过都会失败,提示无法识别对象

shotstar 发表于 2010-3-29 15:25:40

没必要开新帖吧。。。
要么你用disabled这个属性试试看。我印象里disabled和readonly有时候这个有效,有时候另一个有效。

cs_william 发表于 2010-3-29 15:30:51

这两个都是BOOL型的属性值,目前看,这一类的属性都有这个问题,你说的list方法能获取到一个子对象,也能操作,但是为什么用描述性语言定位不行呢?

shotstar 发表于 2010-3-29 15:32:07

俺也没办法了。:(

cs_william 发表于 2010-3-29 15:49:05

QTP就是这么变态啊,有没有人试过这个问题啊?

Haereticus 发表于 2010-3-29 16:21:25

看了下那个输入框的属性,没有readonly这个属性,只有isDisabled属性,value为false。

skyzhu 发表于 2010-3-29 16:33:20

WebEdit(editObject) 这样直接描述属性,听说用于识别的属性是不能乱用BOOL型的,会有反效果
一般用于ChildObjects      description的方式中

cs_william 发表于 2010-3-29 16:51:55

SkyZhu:你确定么?就是用描述性语言里面不能用BOOL属性?
Haereticus:你说的是那里看的属性啊,的确 百度页面没有readonly属性,那缺省就是false啊,另外我也没有看见isDisabled属性啊

skyzhu 发表于 2010-3-29 17:52:40

反正大致看了下用了BOOL的属性都会不识别。。没用过那种东西
disabled 属性是有的,isDisabled肯定是没的,disabled 也是BOOL型,但是效果是一样的,帮你试过了

你是要得到控件readonly属性的这个值?还是利用这个做什么其他的?

cs_william 发表于 2010-3-29 18:00:28

多谢skyzhu,我是想总结一下QTP的所有属性,都看看怎么用,能不能用,我现在在封装一个框架啊,这样的话看来就用不了这些BOOL属性了,我的框架全部用描述性语言啊,但是奇怪,QTP对象仓库里面录制出来的类似属性是0,好像可以识别哦

skyzhu 发表于 2010-3-29 18:07:37

可能对象库的方式就是用 description 一样的方式,都是用的对象传进去
而描述语言直接是字符串进去的
可能处理不太一样吧,具体也就不知道了,非bool属性也不是个个都能用的,这些东西一般只有用了才知道

cs_william 发表于 2010-3-29 18:29:14

skyzhu:   hehe ,描述性语言里面还有哪些属性不能识别啊?你所知道的能不能列举一下,谢谢

就我实验来看QTP确实很多毛病啊,我刚用childobject找子对象,结果用set lists = Browser("version:=internet explorer.*","openedbytestingtool:=true").Page("url:=.*").childobjects(objDesc)这种写法都找不到对象(我只打开一个浏览器窗口),而同样用描述性语言...WebEdit(objDesc)却能识别到

我有试了给上面那句set语句的浏览器和Page加上title属性,马上就能识别到子对象了,呵呵,开始深刻的鄙视QTP,呵呵,这么大一公司和我的水平差不多啊:lol

skyzhu 发表于 2010-3-30 10:00:27

回复 12# 的帖子

这个问题的原因是,正则属性有的时候不能直接单独使用.*来识别所有,效果就和没写这个属性一样,这个我也碰到过,但也不是绝对的
描述语言里直接用的正则是在9.0以后的版本才有的,难免的
对于page我的做法是使用预期的url去识别,如果出错说明没有匹配到,记录错误。
或者使用description取Browser下的childobjects,Class Name =page ,item(0)作为page对象
Browser推荐用 openurl识别,1个就行,这样只要在IE启动时带上链接参数即可,就算开多个也没问题,只要知道启动时的链接是什么就能分辨是哪个Browser

[ 本帖最后由 skyzhu 于 2010-3-30 10:26 编辑 ]

cs_william 发表于 2010-3-30 11:15:20

回复 13# 的帖子

SKYZHU:谢谢你的回复和帮助,不好意思你可能还是猜错了吧,set lists = objContainer.ChildObjects(objAttrs),没有获取到对象的原因是他执行太快了,页面还没有加载完,尽管我之前用了page.sync,而描述性语言:objContainer.WebEdit(XXX).Exist(n),有一个超时等待设置,就是说用前者的话要自己控制循环超时等待对象被加载完毕,我现在在犹豫要不要全部改为前者ChildObjects的方式,好处是能多识别几个定位属性,呵呵
页: [1]
查看完整版本: 关于readonly属性用来定位无法识别的问题,在线等,急!!!!!!!!!