技术开发 频道

解决Grid自动化测试的思路

    虽然赋值成功,但是 datagrid 无法显示你需要的数据(这里需要研究一下),因为时间的缘故,就用第二种方式坐标的方式来实现,考虑多平台共享使用,写 SetGridFocus 函数,思路这样得到 tdbgrid 对象,得到其中 column 的属性宽高,计算坐标(这些都在函数内部实现),其中移动有个固定值 24 是追踪 tdbgrid 代码中 defaultHeight 为 24

    最后代码如下:

Sub SetGridFocus(strObject as String, strCol as String, strRow as String, strValue as String)

Dim iResult as Integer

Dim iCount as Integer

Dim ColWidth() as integer

Dim iWidth as Integer

Dim strColPos as Integer

Dim strRowPos as Integer

Dim strCor as String

Dim iTemp as integer

strColPos = 0

strRowPos = 0

iTemp = 0

SQAGetProperty strObject ,"Columns.Count", iCount

if iCount <> 0 then

Redim ColWidth(iCount - 1)

While iTemp < iCount

iResult = SQAGetProperty (strObject, "Columns.Items(" + CStr(iTemp) +").Width",iWidth)

ColWidth(iTemp) = iWidth

iTemp = iTemp + 1

wend

End if

strColPos = 20

if CInt(strCol) <> 1 then

for iTemp = 1 to CInt(strCol)-1

strColPos = strColPos+ ColWidth(iTemp-1)

next iTemp

End if

for iTemp = 1 to CInt(strRow)

strRowPos = 24 +strRowPos

next iTemp

strCor = "Coords=" & strColPos &","+CStr(strRowPos)

GenericObject Click, strObject, strCor

InputKeys strValue

stop

strCor = "Coords=" & strColPos &","+CStr(strRowPos + 24)

GenericObject Click, strObject, strCor

End Sub
 

    上编写的还有很多疏漏的地方,对于浮动文本框赋值成功,却无法改动 tdbgrid 中的值没有深入研究,该函数在实际应用中还有个小问题,没有做到很完全“周到“ ,下回有时间改正。

    备注:

    最后我把代码进行优化和扩展,开发了针对 grid 的相关函数,下边是其中之一

// 得到列数

Function GetColCount(sGridRecogStr as String) as Integer

Dim Result as Integer

Dim vValue as Variant

Dim sLogMessage as String

Dim sErrorMessage as String

grdGetRowCount = -1

Result = SQAGetProperty(sGridRecogStr, "Column.Count", vValue)

If Result = sqaSuccess Then

GetRowCount = CInt(vValue)

Else

sLogMessage = " 无法得到 Grid 的列数 ”

sErrorMessage = "[" & CStr(Result) & " = " & Error(Result) &"]"

SQALogMessage sqaFail, sLogMessage, sErrorMessage

End If

End Function
 

    就到这里吧。

0
相关文章