higkoo 发表于 2007-4-30 12:46:43

关于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已经到底了,求高手指教!

higkoo 发表于 2007-4-30 21:31:59

太失望了

连51里都没有一个人知道或愿意回答吗?sdlkfj9

higkoo 发表于 2007-5-1 09:17:21

在线等呀

有没人知道啊?给给建议……

   :(

higkoo 发表于 2007-5-2 21:27:40

看来大家是真的都放假了。

呵呵,我也放假了……sdlkfj2

RYU 发表于 2007-5-3 17:41:16

现在用QTP的高手还不多.....

看来现在用QTP的高手还不多......
sdlkfj9

higkoo 发表于 2007-5-4 20:24:13

顶上去

知心者难求也……sdlkfj9

alex_82712 发表于 2007-5-5 15:13:33

虽然没有好的建议,但是还是冒冒泡,说明我已经放完假了
呵呵

51mobile 发表于 2007-5-5 21:44:35

这几天大家在放假,过两天应该有人会回答的,可惜我的水平不够

higkoo 发表于 2007-5-7 20:01:48

原帖由 alex_82712 于 2007-5-5 15:13 发表 http://bbs.51testing.com/images/common/back.gif
……冒冒泡,说明我已经放完假了……


明天又要上班了,我今天下载了QTP9.2,结果和8.2完全一样,不能解决问题。


sdlkfj9


看来只能从代码级或高级设置中找答案了。


   冒泡泡,路过的朋友们仁者见仁,智者见智啊……sdlkfj6

hehemeimei 发表于 2007-5-8 09:37:08

你把“.set”改成“.type”这个方法试一下。

higkoo 发表于 2007-5-8 11:27:24

可以运行成功

用TYPE方法,可以运行成功,但值没有输入成功,和SET方法结果一样。

我尝试用他的FireEvent 来TypeKey,帮助文档写得太简单了。

网上的说明难以理解,没有一个例子可参考的。sdlkfj7

higkoo 发表于 2007-5-8 11:41:00

我参照了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方法无效。

求救啊!此问题一直为解。

walker1020 发表于 2007-5-8 14:24:58

1,“值也未设置成功,SetCellData方法对下拉列表似乎无效” 到底是什么意思?请说清楚 你要达到的效果和 QTP回放脚本的实际效果或出现的问题,请精确描述,不要用“似乎”。我这里没有你那边的环境,只能根据你的描述来帮你解决问题。
2, “根本不起作用" 是什么意思?
3,”这样也不行“ 到底是什么意思?

higkoo 发表于 2007-5-8 15:10:28

回复 #13 walker1020 的帖子


1,“值也未设置成功,SetCellData方法对下拉列表似乎无效” 到底是什么意思

?请说清楚 你要达到的效果和 QTP回放脚本的实际效果或出现的问题,请精确描

述,不要用“似乎”。我这里没有你那边的环境,只能根据你的描述来帮你解决

问题。

        “SetCellData方法对下拉列表似乎无效”是我的主观描述,用

SetCellData时,回放过程下拉列表没有被激活。(录制过程是打开下拉框,选中

列表中的值)
        “值也未设置成功”也是我的主观描述,录制过程选择了下拉列表中的

值,回放过程没有选中任何值;修改脚本,直接用SetCellData赋值给对应单元格

,结果没有赋值成功,对应表格还是空的,没有任何数值。
        我的描述是太含糊了。。。   :(
        其实我的目的很简单,就是要给单元格设置一个指定值。

2, “根本不起作用" 是什么意思?

        这个描述不当,“根本不起作用" 就是回放过程单元格没有发生任何改

变,没有输入数据进去。

3,”这样也不行“ 到底是什么意思?

        ”这样也不行“,描述不够客观。意思其实就是和上面一样,没有回放

成功。(QTP完成测试,但单元格中没有数据)


   我已经让程序员帮忙写一个测试程序,现在他们比较忙,到时传到网上就好了



测试程序描述:
        程序界面和Excel非常相似,由很多行和列组成,列是固定的,行是可增

删改的。
测试目的:
        要输入一些数据进去,查看程序的处理结果是否正确。
目前的问题:
        普通的单元格(直接输入数据)可以录制、回放成功。需要从下拉列表中选择数值的,回放过程值没有输入成功(空白)。
        QTP脚本中没有 打开列表和选择列表值的记录,录制下拉列表生成的脚本和普通单元格是一样的,仅使用了SetCellData 。

yzem99 发表于 2007-5-8 16:06:03

看到你spy出来的是javalist
可以试试下面这个:
JavaWindow("测试程序").JavaTable("数据列表").ClickCell 1,4
JavaWindow("测试程序").JavaTable("数据列表").JavaList("JComboBox").Select("平方米")

当然首先在你的object repository里要有JavaList("JComboBox")

higkoo 发表于 2007-5-8 16:58:26

原帖由 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

yzem99 发表于 2007-5-8 17:06:00

既然识别出来的是javalist,就应该用javalist的方法去处理,因为javalist已经把javatable覆盖住了。一般这个这个时候就可以用javalist("").select "" 去做的。要是不行,你再点击后边的箭头或双击,这应该可以弹出list出来了吧,再select试试看

higkoo 发表于 2007-5-8 17:44:12

将整个过程分解如下:

将整个过程分析如图,
在下拉框中选择值可分为以下步骤:
1、激活单元格,出现下拉按钮Button。 //可用ClickCell激活,出现下接按钮
2、单击下拉按钮,出现列表与下拉框。 //可用Button.Click打开列表
3、将鼠标移至下拉列表中,让下拉列表得到焦点。 //目前未能实现,JavaList.Activate方法没反应
4、单击下拉列表中的值,完成选择。 //用JavaList的方法都没有反应

方法二:
不在列表中选择,直接输入自定义的值。
1、激活单元格,呈现可编辑状态。//直接ClickCell即可实现。
2、输入自定义的值。   //用Type、SetCellData都没有反应。

higkoo 发表于 2007-5-8 17:47:35

此方法也尝试过了

原帖由 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

yzem99 发表于 2007-5-8 19:17:40

不知道你有没有试过javalist.Object.*里面的方法,这个里面是没有被封装的函数。
如果你要是能知道这个控件定义在哪个jar包的话,可以去研究一下Java Add-in Extensibility。详细内容可以看Java Add-in Extensibility Developer's Guide。
页: [1] 2
查看完整版本: 关于QTP对Java插件的识别问题(JavaTable下拉框)