【问题标题】:QTP 11: Load Environment Variable using AOMQTP 11:使用 AOM 加载环境变量
【发布时间】:2017-02-07 15:00:06
【问题描述】:

我正在尝试使用 AOM 设置环境变量

Set objFSO = CreateObject("Scripting.FileSystemObject")
curDir = objFSO.GetParentFolderName(WScript.ScriptFullName) & "\"
Set qtApp = CreateObject("QuickTest.Application")
If qtApp.Launched <> True Then
    With qtApp
        .Launch
        .Visible = True
        .Options.Run.RunMode = "Fast"
        .Options.Run.ViewResults = False
        .Open "C:\_Work\MAIN\TestDriver", False

        Set qtTest = .Test
        With qtTest
            .Settings.Run.OnError = "NextStep"
            .Settings.Resources.Libraries.RemoveAll
            .Environment.LoadFromFile "C:\_Work\MAIN\Configuration\Test2.xml"
            .Run
        End With
    End With
End If

在 QTP 脚本中,我使用的是用户定义的环境变量(在 Test2.xml 中定义),但它不起作用,因为没有加载文件。我也检查了设置,没有用户定义的 EV。

【问题讨论】:

    标签: qtp hp-uft


    【解决方案1】:

    我不确定这是来自 UFT 的错误,还是我们遗漏了某些内容,但 .vbs 文件中的 Environment.LoadFromFile 无法正常工作。

    到目前为止,解决方法是在 UFT 测试脚本中加载环境变量文件 - TestDriver

    将此代码放在代码的顶部。

    'Check if an External Environment file is loaded and if not, load it.
    Dim fileName
    fileName = Environment.ExternalFileName
    If (fileName = "") Then
        Environment.LoadFromFile("C:\_Work\MAIN\Configuration\Test2.xml")
    End If
    Msgbox Environment.Value("Your_Variable_Name")
    ...
    'your rest of the code
    

    如果您不想走这条路,您可能需要联系惠普。

    【讨论】:

    • 我就是这么想的。 Environment.LoadFromFile 通过 AOM 出现问题。尽管您的解决方法很好,但它不适合我的需求。我需要根据环境指定不同的 EV 文件(我将在外部 VBS 文件中设置)。所以必须有一种方法可以让 QTP 脚本在一开始就了解它正在处理的环境
    • 有道理。那么你每次如何运行你的脚本呢?使用 VBScript?
    • 是的。在运行 QTP 之前,我必须做一些设置,我会使用 VBS 和 BAT 文件混合使用。试图使环境变量动态化(在测试开始之前)......但现在我想我将不得不做一些肮脏的解决方法
    • 然后在这种情况下,将输入参数分配给 UFT 脚本并从 VbScript 传递参数。
    【解决方案2】:
    Dim App 'As Application
    Set App = CreateObject("QuickTest.Application")
    App.Launch
    App.Visible = True
    App.Open "C:\Automation\OracleEBS", False
    App.Test.Settings.Launchers("Java").Active = False
    App.Test.Settings.Launchers("Java").CommandLine = ""
    App.Test.Settings.Launchers("Java").WorkingDirectory = ""
    App.Test.Settings.Launchers("Oracle").Active = False
    App.Test.Settings.Launchers("Oracle").Address = ""
    App.Test.Settings.Launchers("Oracle").AutoLogin = False
    App.Test.Settings.Launchers("Oracle").User = ""
    App.Test.Settings.Launchers("Oracle").Password = ""
    App.Test.Settings.Launchers("Oracle").LogoutOnExit = False
    App.Test.Settings.Launchers("Oracle").CloseOnExit = False
    App.Test.Settings.Launchers("Web").Active = True
    App.Test.Settings.Launchers("Web").Browser = "CHROME"
    App.Test.Settings.Launchers("Web").Address = "http://newtours.demoaut.com "
    App.Test.Settings.Launchers("Web").CloseOnExit = True
    App.Test.Settings.Launchers("Windows Applications").Active = True
    App.Test.Settings.Launchers("Windows Applications").Applications.RemoveAll
    App.Test.Settings.Launchers("Windows Applications").RecordOnQTDescendants = True
    App.Test.Settings.Launchers("Windows Applications").RecordOnExplorerDescendants = True
    App.Test.Settings.Launchers("Windows Applications").RecordOnSpecifiedApplications = True
    App.Test.Settings.Run.IterationMode = "rngAll"
    App.Test.Settings.Run.StartIteration = 1
    App.Test.Settings.Run.EndIteration = 1
    App.Test.Settings.Run.ObjectSyncTimeOut = 20000
    App.Test.Settings.Run.DisableSmartIdentification = False
    App.Test.Settings.Run.OnError = "Dialog"
    App.Test.Settings.Resources.DataTablePath = "<Default>"
    App.Test.Settings.Resources.Libraries.RemoveAll
    App.Test.Settings.Resources.Libraries.Add("C:\UFTAutomation\function_Libraray\FL.txt")
    App.Test.Environment.LoadFromFile "C:\Users\uftuser01\Desktop\env.xml"
    App.Test.Settings.Web.BrowserNavigationTimeout = 60000
    App.Test.Settings.Web.ActiveScreenAccess.UserName = ""
    App.Test.Settings.Web.ActiveScreenAccess.Password = ""
    App.Test.Settings.Recovery.Enabled = True
    App.Test.Settings.Recovery.SetActivationMode "OnError"
    App.Test.Settings.Recovery.Add "C:\tmp\FRecovery.qrs", "First Recovery Scenario", 1
    App.Test.Settings.Recovery.Item(1).Enabled = True 
    App.Test.Settings.Java.EditSet.KeyPressed = True
    App.Test.Settings.Java.EditSet.KeyTyped = True
    App.Test.Settings.Java.EditSet.KeyReleased = True
    App.Test.Settings.Java.EditSet.InputMethod = False
    App.Test.Settings.Java.EditSet.FocusLost = False
    App.Test.Settings.Java.EditSet.JavaAPI = False
    App.Test.Settings.Java.EditSet.JavaAPICharactersToExclude = "\t\n\r"
    App.Test.Settings.Java.DeviceReplay.Click = False
    App.Test.Settings.Java.DeviceReplay.DoubleClick = False
    App.Test.Settings.Java.DeviceReplay.Type = False
    App.Test.Settings.Java.DeviceReplay.DragDrop = False
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' System Local Monitoring settings
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    App.Test.Settings.LocalSystemMonitor.Enable = false
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Log Tracking settings
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    With App.Test.Settings.LogTracking 
        .IncludeInResults = False 
        .Port = 18081 
        .IP = "127.0.0.1" 
        .MinTriggerLevel = "ERROR" 
        .EnableAutoConfig = False 
        .RecoverConfigAfterRun = False 
        .ConfigFile = "" 
        .MinConfigLevel = "WARN" 
    End With
    

    【讨论】:

    • 如何将它附加到测试中?例如,C:_Work\MAIN\TestDriver
    • 好的。当前更新的答案只是设置它(我也使用 QTP 的生成脚本获得了类似的脚本)。但问题是我无法将 env 文件附加到上述测试(我正在尝试使用 env var)
    • 第 5 行和第 34 行可以解决问题。 5 - 打开给定的测试,34 附加了 environment.xml
    • 我不知道您的解决方案与我尝试过的有什么不同。在您的解决方案中,测试甚至没有运行。该文件已附加到测试中,但问题仍然存在。 QTP 拒绝识别我原来的问题的外部变量。
    • 上面的代码对我来说很好用。我可以在 Settings->Environment->User Defined 下验证用户定义的环境变量是否成功加载。您介意发布您的 xml 文件吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 2020-05-20
    • 1970-01-01
    • 2017-01-03
    • 2020-11-30
    相关资源
    最近更新 更多