51Testing软件测试论坛

标题: 关于勾选固定checkbox的问题 [打印本页]

作者: shuishixingyu    时间: 2008-12-9 11:59
标题: 关于勾选固定checkbox的问题
[attach]47444[/attach]

比如说建了项目QTP,在审核时通过比对项目名称QTP来勾选checkbox,而不是通过checkbox的属性来勾选,请教应该怎么写代码?谢谢
作者: Jimmyshao    时间: 2008-12-9 12:51
GetRowWithCellText
Description
Returns the number of the first row found that contains a cell with the specified text.
Syntax
object.GetRowWithCellText (Text, [Column], [StartFromRow])
作者: walker1020    时间: 2008-12-9 12:55
先使用 WebTable 的 GetRowWithCellText  得到你要点击的行数,然后点击此行的 checkbox 即可。
作者: walker1020    时间: 2008-12-9 12:57
其实只要能得到 你要点击的行数,然后点击此行的任何Webelement 也可以实现点击此行的 checkbox 的效果。
作者: shuishixingyu    时间: 2008-12-9 13:28
谢谢两位,代码是
Dim Row
set Row = Description.Create()
Row = Browser("上海市电力公司工程招投标管理系统工程招投标管理系统").Page("上海电力公司--工程招标管理系统").Frame("mainboard_2").WebTable("name:=projectID").GetRowWithCellText("WIN")
Msgbox Row
Browser("上海市电力公司工程招投标管理系统工程招投标管理系统").Page("上海电力公司--工程招标管理系统").Frame("mainboard_2").WebCheckBox("html id:=projectID_"&Row-1).Set "ON"

可以找到指定的checkbox了
作者: shuishixingyu    时间: 2008-12-9 13:59
还有个问题,为什么常量用参数代替时,得到的行数会出错,比如
.WebTable("name:=projectID").GetRowWithCellText("WIN")  得到WIN项目所在行数为2
而用const Project ="WIN"
.WebTable("name:=projectID").GetRowWithCellText(Project )   得到WIN项目所在行数为3?
作者: Jimmyshao    时间: 2008-12-9 15:02
原帖由 shuishixingyu 于 2008-12-9 13:59 发表
还有个问题,为什么常量用参数代替时,得到的行数会出错,比如
.WebTable("name:=projectID").GetRowWithCellText("WIN")  得到WIN项目所在行数为2
而用const Project ="WIN"
.WebTable("name:=projectID").GetRo ...


我尝试了你说的Const定义的方法,没有发现行数和之前不一样的情况.
作者: shuishixingyu    时间: 2008-12-9 15:08
好像是前面代码写的有问题,我试了好多遍,得出的行数都比正确行数多了1,固定值也这样,能不能帮我代码看下,哪错了?谢谢
作者: 鹭岛    时间: 2008-12-9 15:50
像你那表,行和列肯定是从表头开始算的~~也就是你所谓的第一行其实是:图片中的那几个标题(项目编号...),有时候甚至提示的那个什么下表就开始算第一行了~~~你试着按这样算就OK了。。其他列应该不变。。。

[ 本帖最后由 鹭岛 于 2008-12-9 15:56 编辑 ]
作者: my_horse    时间: 2008-12-9 15:53
通常一个WebTable的实际结构跟看到的结构是不一样的。例如你看到“WIN”是在这个WebTable的第二行,但实际上“WIN”是在第三行。如果对GetRowWithCellText得到的行数有怀疑,可以GetCellData来验证一下。用GetCellData可以到某个单元格里面的内容。
作者: shuishixingyu    时间: 2008-12-9 16:32
确实是这样,谢谢
作者: 郝宁    时间: 2008-12-19 23:02
思路是先遍历table找到QTP所在的行,记为i,在check对应的checkbox
totalRowNumber=Browser().Page().Frame().WebTable().RowCount
For i=0 to totalRowNumber
if Browser().Page().Frame().WebTable().childitem(i,3,"WebElement",0)="QTP" Then
Browser().Page().Frame().WebTable().childitem(i,1,"WebCheckBox",0).Set “on”
else
end if
Next

[ 本帖最后由 郝宁 于 2008-12-20 21:53 编辑 ]




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2