jiamin_ff 发表于 2009-1-8 10:04:22

高手请进.NET控件swfTable获取的某表格值不是表格内显示文本,有何办法解决?

我在测试NET控件swfTable验证一个保存测试时要拿到表中一小格的值,如我的列名为“有效状态”,第一行的此列显示的是有效是我要拿到的对比值。通常在QTP用GETcelldata(0,"有效状态")是可以取到的,可是我用了后GETcelldata(0,"有效状态")得到的不是有效,是1。其它列值得到的都是可见本文如编号是789,GETcelldata(0,"编号")也是789。
后来找开发查问后,他们说显示的文本是有效,但值确实为1的。那现在我就没法取得表中显示的文本。用GETcelldata得到的是值不是表中显示的可见文本。现在好急需解决请高手指点下如何做。因为我不知在那上传图可能这样难以说明。还请说知在那可上传图和附件啊?

鹭岛 发表于 2009-1-8 10:12:19

如果模块固定,可以使用坐标X,Y的值去定位,然后取值
一般来说C/S架构的很多都有一个特点:就是鼠标制动那个模块的时候就会显示该模块的值(按标准的程序设计基本都要这样)
那你就可以根据这点,对要检查的值使用X,Y来让鼠标点击一下,然后把鼠标指向该模块后,显示的值取出来对比。(这样的做法是比较麻烦的,因为如果检查多的话就繁琐了)

jiamin_ff 发表于 2009-1-8 10:33:58

我不怎么怎么取得那个列格坐标X,Y的值去定位,还有你查询不同位置可能有所变化的。我见有一个方法是getvisbleText()也就是你所说的要指明坐标位置的。但我就是不会取它的X Y坐标。

[ 本帖最后由 jiamin_ff 于 2009-1-8 10:47 编辑 ]

jiamin_ff 发表于 2009-1-8 10:48:55

我把图放在附件了,那位朋友热心请帮下忙看下情况。

jiamin_ff 发表于 2009-1-8 18:16:09

:( 怎么没高手提点到呢。我想了好久还是没法解到。

asoqa 发表于 2009-1-10 12:43:57

因为不太清楚SwfTable的程序,所以这里只给一下参考意见。首先SwfTable肯定是映射到某个.net的grid控件,我想显示成“有效”还是“1”应该是有两种途径:
1.通过控件的属性设定
这种情况下,我猜想有一个属性值显示是“1”,另一个属性显示是“有效”。你可以通过GetCellProperty获取Cell的属性,看看是不是可以拿到你想要的值。
2.程序员通过代码转换,例如如果遇到1就显示成“有效”。
这种情况下,我不太清楚更好的方法。可能需要写代码判断,我想列表中的值应该取自数据库,数据库中应该存的是1。为什么编号那些显示是正常的,我猜应该他们都是直接读的数据库,不需要做转换。

[ 本帖最后由 asoqa 于 2009-1-10 13:49 编辑 ]

kakamissyou 发表于 2009-1-11 00:36:47

回复 1# 的帖子

...

[ 本帖最后由 kakamissyou 于 2009-1-14 22:32 编辑 ]

jiamin_ff 发表于 2009-1-15 17:28:37

cell不是一个对象控件后面没有方法可选,因此GetCellProperty获取Cell的属性试了是不行的.现在我已决解了问题了,QTP支持C#的方法调用,只要用C#有方法取得显示值,QTP也能成功引用到.问题解决关键是Object对象.其后是C#的好多方法和相关的属性.

闪闪金光 发表于 2009-9-16 09:44:35

我在用QTP录制的时候也是那样的问题,遇到gridControl控件,用那个getcelldata()取不出来单元格中个值,运行到那个地方的时候,出现一个对话框,提示说"发生意外",不知道咋弄的.请教高手指导一下.

闪闪金光 发表于 2009-9-16 09:55:45

我在用QTP录制的时候也是那样的问题,遇到gridControl控件,用那个getcelldata()取不出来单元格中个值,运行到那个地方的时候,出现一个对话框,提示说"发生意外",不知道咋弄的.请教高手指导一下.

假装不在 发表于 2009-9-17 17:38:39

回答1楼:displaytext和value是不一样的。
其实你获取到的有效状态,如果是有效,无效分别等于 1,0。这对你代码实现也不会有什么问题。
你先试试无效是不是=0.
可以试试 GetCellProperty

假装不在 发表于 2009-9-17 17:45:46

我在用QTP录制的时候也是那样的问题,遇到gridControl控件,用那个getcelldata()取不出来单元格中个值,运行到那个地方的时候,出现一个对话框,提示说"发生意外",不知道咋弄的.请教高手指导一下.


你们公司是使用dexpress控件对吧。
你代码这写:
msgbox swfwindow().swfobject("gridControl").object.mainview.gettype.name
一般情况下,在gridControl下面的VIEW一般有3种,分别是cardview,gridview,treeview。你要先获取到它的类型后再去做操作,目前QTP封装的也只是gridview,cardview需要自己写方法,我估计你这个控件也是cardview。cardview的特点就是行和列是相反的。嘿嘿。
你获取到mainview的类型后,就可以开始做操作,例如GetRowCellDisplayText 之类的方法。但这个方法的参数需要注意的,rowhandle只是普通的Inde,但是columns的,你就必须传那个colunm对象进去,也就是它的句柄。::yiwusuoyou:::

闪闪金光 发表于 2009-9-17 18:35:29

那个控件可以用GetCellProperty这个函数,第一个输入行数,第二个数参数输入列数,第三参数,我是直接输入"Value"的,这样可以取里面的值
页: [1]
查看完整版本: 高手请进.NET控件swfTable获取的某表格值不是表格内显示文本,有何办法解决?