51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3880|回复: 12
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-1-8 10:04:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在测试NET控件swfTable验证一个保存测试时要拿到表中一小格的值,如我的列名为“有效状态”,第一行的此列显示的是有效是我要拿到的对比值。通常在QTP用GETcelldata(0,"有效状态")是可以取到的,可是我用了后GETcelldata(0,"有效状态")得到的不是有效,是1。其它列值得到的都是可见本文如编号是789,GETcelldata(0,"编号")也是789。
后来找开发查问后,他们说显示的文本是有效,但值确实为1的。那现在我就没法取得表中显示的文本。用GETcelldata得到的是值不是表中显示的可见文本。现在好急需解决请高手指点下如何做。因为我不知在那上传图可能这样难以说明。还请说知在那可上传图和附件啊?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2009-1-8 10:33:58 | 只看该作者
我不怎么怎么取得那个列格坐标X,Y的值去定位,还有你查询不同位置可能有所变化的。我见有一个方法是getvisbleText()也就是你所说的要指明坐标位置的。但我就是不会取它的X Y坐标。

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2009-1-8 10:48:55 | 只看该作者
我把图放在附件了,那位朋友热心请帮下忙看下情况。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2009-1-8 18:16:09 | 只看该作者
怎么没高手提点到呢。我想了好久还是没法解到。
回复 支持 反对

使用道具 举报

该用户从未签到

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

[ 本帖最后由 asoqa 于 2009-1-10 13:49 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2009-1-11 00:36:47 | 只看该作者

回复 1# 的帖子

...

[ 本帖最后由 kakamissyou 于 2009-1-14 22:32 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2009-1-15 17:28:37 | 只看该作者
cell不是一个对象控件后面没有方法可选,因此GetCellProperty获取Cell的属性试了是不行的.现在我已决解了问题了,QTP支持C#的方法调用,只要用C#有方法取得显示值,QTP也能成功引用到.问题解决关键是Object对象.其后是C#的好多方法和相关的属性.
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2009-9-16 09:44:35 | 只看该作者
我在用QTP录制的时候也是那样的问题,遇到gridControl控件,用那个getcelldata()取不出来单元格中个值,运行到那个地方的时候,出现一个对话框,提示说"发生意外",不知道咋弄的.请教高手指导一下.
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2009-9-16 09:55:45 | 只看该作者
我在用QTP录制的时候也是那样的问题,遇到gridControl控件,用那个getcelldata()取不出来单元格中个值,运行到那个地方的时候,出现一个对话框,提示说"发生意外",不知道咋弄的.请教高手指导一下.
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2009-9-17 17:38:39 | 只看该作者
回答1楼:displaytext和value是不一样的。
其实你获取到的有效状态,如果是有效,无效分别等于 1,0。这对你代码实现也不会有什么问题。
你先试试无效是不是=0.
可以试试 GetCellProperty
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 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:::
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2009-9-17 18:35:29 | 只看该作者
那个控件可以用GetCellProperty这个函数,第一个输入行数,第二个数参数输入列数,第三参数,我是直接输入"Value"的,这样可以取里面的值
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-27 05:40 , Processed in 0.072607 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表