Как я могу передать строку кода в виде строки, не заменяя каждую кавычку двойными кавычками? (VBScript в QTP) - PullRequest
0 голосов
/ 27 августа 2011

Я пытаюсь создать функцию VBScript (в контексте QuickTest Pro 10), которая может принимать строку кода в качестве параметра, например: JavaWindow("Export Control Notice").JavaButton("OK").Click

Проблема заключается в том, когдаЯ пытаюсь передать эту строку в виде строки, VBScript по понятным причинам душит кавычки.В этом и заключается подвох: у меня много строк кода, похожих на приведенную выше, поэтому я хотел бы взять строку кода и передать ее как есть.Я не хочу удваивать кавычки для этих строк кода, не говоря уже о каждой новой строке, которую записывает QTP.(Найти / Заменить все может легко выйти из-под контроля)

Как я могу передать вышеуказанную строку кода?Если преобразование в строку - это путь, как я могу закодировать эту строку, чтобы VBscript не подавился кавычками?

Кроме того, я не смог найти способ изменитьразделитель чего-либо, кроме кавычек, чтобы назначить строку кода в виде строки.Поиск способа изменить разделитель, вероятно, решил бы эту проблему.

С другой стороны, я также попытался передать JavaWindow("Export Control Notice").JavaButton("OK") как объект в функцию, и это сработало.К сожалению, кажется, нет способа превратить этот объект обратно в строку, чтобы добавить ".Click" (или какое-либо другое действие, сохраненное в виде строки) обратно в его конец.Я что-то пропускаю?

Ответы [ 2 ]

1 голос
/ 27 августа 2011

В зависимости от того, насколько точно у вас «есть» эти строки кода (в вашей голове, в текстовом документе, ...) и предпочитаете ли вы печатать или программировать, вы можете

  • поместите их в код VBScript, используя правильный escape (""):

    Dim sCodeLine : sCodeLine = "JavaWindow(""Export Control Notice"").JavaButton(""OK"").Click"
    WScript.Echo sCodeLine
    
    JavaWindow("Export Control Notice").JavaButton("OK").Click
    
  • поместите их в код VBScript с помощью выбранного вами разделителя и Replace ():

    Dim sCodeLine : sCodeLine = "JavaWindow('Export Control Notice').JavaButton('OK').Click"
    WScript.Echo Replace( sCodeLine, "'", """" )
    
    JavaWindow("Export Control Notice").JavaButton("OK").Click
    
  • поместить их во внешний файл (.txt, .xls, .xml, ...) (соответственно использовать данный документ);загрузить и проанализировать файл в подходящую структуру данных (массив, словарь, ...).Используйте эту коллекцию, чтобы кормить свою функцию.

0 голосов
/ 01 сентября 2011

Способ, которым мы в конечном итоге передали объекты и действия 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

... и т. Д.

...