该语句在QTP中包含一个或多个无效函数参数

时间:2014-04-23 00:30:30

标签: vbscript qtp hp-uft

我在下面写了这个函数。但是,我一直在QTP中获得无效的函数参数。 该对象是webtable中的一个链接,我不断收到“该语句包含一个或多个无效函数agrument”的错误消息。 有谁可以帮助我吗?

Function CheckData(Value_To_Match, Rpttext, ByRef Row_Num)
  Dim tab_val, arr_val(2), rowNum
  tab_val = Split(Value_To_Match,";")
  arr_val(0) = Browser("xyz").Page("abc").WebTable("xsw").getColumnIndex(tab_val(0))
  If UBound(tab_val ) > 0 Then
    arr_val(1) = tab_val(1)
    arr_val(2) = Browser("xyz").Page("abc").WebTable("xsw").getMatchingRow(arr_val)
    Row_Num = arr_val(2) 
    Browser("xyz").Page("abc").WebTable("xsw").MatchVal arr_val, Rpttext, "Verify"
  Else
    arr_val(1) = tab_val(0)
    arr_val(2) = Browser("xyz").Page("abc").WebTable("xsw").getMatchingRow(arr_val)
    Browser("xyz").Page("abc").WebTable("xsw").MatchVal arr_val, Rpttext, "Verify"
    arr_val(2) = Row_Num
    Browser("xyz").Page("abc").WebTable("xsw").MatchVal arr_val, Rpttext, "Check"
  End If
End Function

If Trim(Parameter("DraftsViewDraftIcon")) <> "" And _
     LCase(Trim(Parameter("DraftsViewDraftIcon"))) <> "[null]" And _
     LCase(Trim(Parameter("Wrapper_Mode"))) ="set" Then

  Set ViewDraftLink = Browser("xyz").Page("abc").WebTable("xsw").ChildItem(Row_Num, 4, "Link", 0)
  ViewDraftLink.click
End If

此功能用于获取匹配的行

Public Function getMatchingRow(byRef object, byVal arraydata)
  Dim introw
  Dim varComp
  On Error Resume Next
  If UBound(arraydata) = 0 Then
    Reporter.ReportEvent micFail, "Array Data", "No Data found in input parameter Array"
    getMatchingRow = 0
    Exit Function
  End If

  For introw = 1 to object.RowCount
    varComp = StrComp(Trim(object.GetCellData(introw, arrayData(0))), Trim(arrayData(1)), 0)
     If varComp = 0 And Not(isNull(varComp)) Then
       getMatchingRow = introw
       Exit Function
     End If
   Next
   getMatchingRow = 0
   On Error Goto 0

1 个答案:

答案 0 :(得分:0)

如果要将getMatchingRow函数注册为方法,则第一个正式参数必须是byVal参数:

Public Function getMatchingRow(byVal object, byVal arraydata)

您正在使用byRef参数:

Public Function getMatchingRow(byRef object, byVal arraydata)

这可能会导致您遇到的麻烦。

我现在没有机会验证这一点,但无论如何都请尝试一下。

(我对我的这个答案有一些疑问,特别是因为你说错误行是Set ViewDraftLink作业,而它应该在.getMatchingRow调用时发生。但你也提到{{该评论中有1}}和ViewDraftLink.Click行,所以无论如何你在这方面都是不确定的。

如果您将所有这些信息合并到问题中,进一步清理问题中的代码,并删除当时过时的评论,这确实会有所帮助。)