关于QTP对Java插件的识别问题(JavaTable下拉框)
如图红圈圈内所示,一个JavaTable下拉控件,可以选择下拉列表的值,也可以手动输入。
1、用QTP直接录制时脚本为:
JavaWindow("测试程序").JavaTable("数据列表").SetCellData 1,4,"平方米"
回放虽然没有出错,但值也未设置成功,SetCellData方法对下拉列表似乎无效。
2、添加辅助脚本:
JavaWindow("测试程序").JavaTable("数据列表").ClickCell 1,4 ‘单击网格,让其呈现为录入状态。
JavaWindow("测试程序").JavaTable("数据列表").SetCellData 1,4,"平方米"‘输入录入值。
第一行虽然回放成功,操作也有效,但根本不起作用,第二行代码不受第一行的影响。
3、修改录入方式
JavaWindow("测试程序").JavaTable("数据列表").SelectRow 2
这样也不行。
好像没有其它好的办法了,SendKey也不支持。图示SPY为捕捉到下拉框里的值的属性。但实际录制生成脚本里到JavaTable已经到底了,求高手指教!
太失望了
连51里都没有一个人知道或愿意回答吗?sdlkfj9在线等呀
有没人知道啊?给给建议……:(
汗
看来大家是真的都放假了。呵呵,我也放假了……sdlkfj2
现在用QTP的高手还不多.....
看来现在用QTP的高手还不多......sdlkfj9
顶上去
知心者难求也……sdlkfj9 虽然没有好的建议,但是还是冒冒泡,说明我已经放完假了呵呵 这几天大家在放假,过两天应该有人会回答的,可惜我的水平不够 原帖由 alex_82712 于 2007-5-5 15:13 发表 http://bbs.51testing.com/images/common/back.gif
……冒冒泡,说明我已经放完假了……
明天又要上班了,我今天下载了QTP9.2,结果和8.2完全一样,不能解决问题。
sdlkfj9
看来只能从代码级或高级设置中找答案了。
冒泡泡,路过的朋友们仁者见仁,智者见智啊……sdlkfj6 你把“.set”改成“.type”这个方法试一下。
可以运行成功
用TYPE方法,可以运行成功,但值没有输入成功,和SET方法结果一样。我尝试用他的FireEvent 来TypeKey,帮助文档写得太简单了。
网上的说明难以理解,没有一个例子可参考的。sdlkfj7 我参照了QTP中关于JavaTable的说明:
Recording on Custom Cell Editors in Swing JTable Tables (非标准表格控件)
When a JTable contains a custom (non-standard) cell editor, the default SetCellData statement cannot be recorded. For example, if a cell contains both a check box and a button that opens a dialog box, then a SetCellData statement may not always provide an accurate description of the operation(s) performed inside the cell.
里面也有举例说明,但是是对单选框的。
If you record an operation on a custom cell editor, QuickTest records a statement that reflects the operation you performed on the object inside of the cell. For example, if the cell editor contains a custom check box, QuickTest might record the following statement:
Browser("Periodic").Page("Periodic").JavaWindow("CoolJava").JavaDialog("SetOptions").JavaCheckBox("MyCheckBox").Set "ON"
instead of:
Browser("Periodic").Page("Periodic").JavaWindow("CoolJava").JavaDialog("SetOptions").JavaTable("MyTable").SetCellData "ON"
这个例子中,出错的原因是代码生成错误,然后改成SetCellData,
而我现在是JavaTable的自定义了一个下拉框,可以自动识别为SetCellData,但Set方法无效。
求救啊!此问题一直为解。 1,“值也未设置成功,SetCellData方法对下拉列表似乎无效” 到底是什么意思?请说清楚 你要达到的效果和 QTP回放脚本的实际效果或出现的问题,请精确描述,不要用“似乎”。我这里没有你那边的环境,只能根据你的描述来帮你解决问题。
2, “根本不起作用" 是什么意思?
3,”这样也不行“ 到底是什么意思?
回复 #13 walker1020 的帖子
1,“值也未设置成功,SetCellData方法对下拉列表似乎无效” 到底是什么意思
?请说清楚 你要达到的效果和 QTP回放脚本的实际效果或出现的问题,请精确描
述,不要用“似乎”。我这里没有你那边的环境,只能根据你的描述来帮你解决
问题。
“SetCellData方法对下拉列表似乎无效”是我的主观描述,用
SetCellData时,回放过程下拉列表没有被激活。(录制过程是打开下拉框,选中
列表中的值)
“值也未设置成功”也是我的主观描述,录制过程选择了下拉列表中的
值,回放过程没有选中任何值;修改脚本,直接用SetCellData赋值给对应单元格
,结果没有赋值成功,对应表格还是空的,没有任何数值。
我的描述是太含糊了。。。 :(
其实我的目的很简单,就是要给单元格设置一个指定值。
2, “根本不起作用" 是什么意思?
这个描述不当,“根本不起作用" 就是回放过程单元格没有发生任何改
变,没有输入数据进去。
3,”这样也不行“ 到底是什么意思?
”这样也不行“,描述不够客观。意思其实就是和上面一样,没有回放
成功。(QTP完成测试,但单元格中没有数据)
我已经让程序员帮忙写一个测试程序,现在他们比较忙,到时传到网上就好了
。
测试程序描述:
程序界面和Excel非常相似,由很多行和列组成,列是固定的,行是可增
删改的。
测试目的:
要输入一些数据进去,查看程序的处理结果是否正确。
目前的问题:
普通的单元格(直接输入数据)可以录制、回放成功。需要从下拉列表中选择数值的,回放过程值没有输入成功(空白)。
QTP脚本中没有 打开列表和选择列表值的记录,录制下拉列表生成的脚本和普通单元格是一样的,仅使用了SetCellData 。 看到你spy出来的是javalist
可以试试下面这个:
JavaWindow("测试程序").JavaTable("数据列表").ClickCell 1,4
JavaWindow("测试程序").JavaTable("数据列表").JavaList("JComboBox").Select("平方米")
当然首先在你的object repository里要有JavaList("JComboBox") 原帖由 yzem99 于 2007-5-8 16:06 发表 http://bbs.51testing.com/images/common/back.gif
看到你spy出来的是javalist
可以试试下面这个:
JavaWindow("测试程序").JavaTable("数据列表").ClickCell 1,4
JavaWindow("测试程序").JavaTable("数据列表").JavaList("JComboBox").Select("平方米")
当 ...
此方法我也试过了,ClickCell后,单元格呈图示状态(等待输入),并没有激活下拉框。
单元格已经是JavaTable的子元素了,好多方法都行不通,我尝试了JavaTable的好多属性和方法,都没有尝试成功,感觉好像是QTP的问题,QTP没有去识别这个动作。
可以用低级录制,但低级录制的可维护性就很差了,有几百行数据,低级录制无法进行参数化。
如果我会编程就好了,直接写一个测试程序上来,大家就可以直接尝试了,不用老看描述和想像了 sdlkfj8 既然识别出来的是javalist,就应该用javalist的方法去处理,因为javalist已经把javatable覆盖住了。一般这个这个时候就可以用javalist("").select "" 去做的。要是不行,你再点击后边的箭头或双击,这应该可以弹出list出来了吧,再select试试看
将整个过程分解如下:
将整个过程分析如图,在下拉框中选择值可分为以下步骤:
1、激活单元格,出现下拉按钮Button。 //可用ClickCell激活,出现下接按钮
2、单击下拉按钮,出现列表与下拉框。 //可用Button.Click打开列表
3、将鼠标移至下拉列表中,让下拉列表得到焦点。 //目前未能实现,JavaList.Activate方法没反应
4、单击下拉列表中的值,完成选择。 //用JavaList的方法都没有反应
方法二:
不在列表中选择,直接输入自定义的值。
1、激活单元格,呈现可编辑状态。//直接ClickCell即可实现。
2、输入自定义的值。 //用Type、SetCellData都没有反应。
此方法也尝试过了
原帖由 yzem99 于 2007-5-8 17:06 发表 http://bbs.51testing.com/images/common/back.gif既然识别出来的是javalist,就应该用javalist的方法去处理,因为javalist已经把javatable覆盖住了。一般这个这个时候就可以用javalist("").select "" 去做的。要是不行,你再点击后边的箭头或双击,这应该可以弹 ...
谢谢Yzem99!
这个方法理论上是可行了,我也尝试过了,可能问题的根本不在这里吧。
现在用JavaList的方法根本就没有任何反应(Action 、GetItem、Select…… ),苦闷!sdlkfj7 不知道你有没有试过javalist.Object.*里面的方法,这个里面是没有被封装的函数。
如果你要是能知道这个控件定义在哪个jar包的话,可以去研究一下Java Add-in Extensibility。详细内容可以看Java Add-in Extensibility Developer's Guide。
页:
[1]
2