Способ, которым мы в конечном итоге передали объекты и действия QTP в функцию, заключался в том, чтобы сохранить объект QTP в качестве объекта, а затем передать действие в виде строки, через которую должен был бы сортироваться Select Case. У нас не так много действий, поэтому в этом случае хорошо работает Select Case.
Например, вот код для выполнения действия:
До:
If existCheck JavaWindow("Certificate Management").JavaWindow("Import Key Store").JavaEdit("* Certificate Name").Exist(2) Then
existCheck JavaWindow("Certificate Management").JavaWindow("Import Key Store").JavaEdit("* Certificate Name").Set "Personal"
Reporter.ReportEvent micPass,"OK button clicked on Export Control Notice","Ok"
Else Reporter.ReportEvent micFail,"Export Control Notice is not found","Step Fail" End If
После того, как:
existCheck JavaWindow("Certificate Management").JavaWindow("Import Key Store").JavaEdit("* Certificate Name"), "Set", "Personal", Null, 2, Null, Null
Теперь у нас есть действие, занимающее только одну строку, что очень помогает читабельности кода, но также позволяет нам улучшить функцию проверки на ошибки и составления отчетов в одном месте.
Вот некоторые из функций проверки ошибок, за исключением отчетной части.
Функция:
'existCheck provides error-checking by determining if the object exists right before we interact with it.
'Afterwards, it reports on the results. This function has parameters for:
'object: an object (such as a button or field)
'strAction: the action to perform on that object (such as "Click")
'strParameter1 (and two): the parameter that is passed when the action is performed
'intWait: the time in seconds to wait for the object to appear
'strPass: the string to report for a success. If not string is provided, a default one will be used.
'strFail: the string to report for a failure. If not string is provided, a default one will be used.
Function existCheck(object, strAction, strParameter1, strParameter2, intWait, strPass, strFail)
'Before we can perform any action, we must see if the object exists. This determines much of what we do next.
If object.Exist(intWait) Then
'Chooses the action to be performed on the object (and then performs it)
Select Case strAction
Case "Click"
object.Click
Case "Select"
object.Select strParameter1
Case "Press"
object.Press strParameter1
Case "Set"
object.Set strParameter1
Case "SetSecure"
object.SetSecure strParameter1
Case "Type"
object.Type strParameter1
Case "SelectCell"
object.SelectCell strParameter1, strParameter2
End Select
... и т. Д.