hp quality center-在VBScript(QC11 OTA)中获取ALM项目和域名的列表



我试图在表单load()的组合框中列出QC11项目和域名,但我得到了所需的错误对象,我正在使用的代码:

Dim tdc As New TDAPIOLELib.TDConnection
Dim projectList As Customization
Dim Project As Customization
Dim Domain As Customization
Set tdc = CreateObject("TDApiOle80.TDConnection")
tdc.InitConnectionEx "https://xyz/omu"
For Each Domain In TheTDConnection.DomainsList
    Set projectList = tdc.GetAllVisibleProjectDescriptors
    For Each Project In projectList
        ComboBox1.AddItem (Project.Name)
        ComboBox2.AddItem (Project.DomainName)
    Next Project
Next Domain

如果这真的是你正在使用的代码,那么这一行可能会生成一个错误:

For Each Domain In TheTDConnection.DomainsList

根据您代码的其余部分,"TheTDConnection"应该是"tdc":

For Each Domain In tdc.DomainsList

哦,要做到这一点,你几乎肯定应该首先通过调用tdc.Login…登录,而不仅仅是连接到服务器。

与此相关的是,DomainsList属性已被弃用。我认为您可以循环浏览GetAllVisibleProjectDescriptor返回的ProjectDescriptor对象列表,因为它涵盖了当前登录用户可以访问的所有域下的所有项目。

编辑:这是基于原始问题的完整解决方案。以下是经过测试的工作代码,这些代码将在所提供的用户有权访问的域/项目中循环。这假设您安装了QC/ALM Connectivity外接程序(必需)。

如果您在64位计算机上运行这段VBScript,则需要使用32位版本的wscript.exe:C:WindowsSysWOW64wscript.exe "c:somewheremyscript.vbs" 运行它

msgbox "Creating connection object"
Dim tdc
Set tdc = CreateObject("TDApiOle80.TDConnection")
msgbox "Connecting to QC/ALM"
tdc.InitConnectionEx "http://<yourServer>/qcbin/"
msgbox "Logging in"
tdc.Login "<username>", "<password>"
Dim projDesc
msgbox "Getting project descriptors"
Set projectDescriptors = tdc.GetAllVisibleProjectDescriptors
For Each desc In projectDescriptors
    msgbox desc.DomainName & "" & desc.Name
Next
msgbox "Logging out"
tdc.Logout
msgbox "Disconnecting"
tdc.Disconnect
msgbox "Releasing connection"
tdc.ReleaseConnection

编辑2:

如果你想将sa.GetAllDomains的结果XML解析为服务器上所有域\项目项的列表,你可以这样做(这是VBScript,因为最初的问题和标签仍然提到它,并且已经过测试):

Set objDoc = CreateObject("MSXML.DOMDocument")
objDoc.Load "C:yourXmlFile.xml"
Set objRoot = objDoc.documentElement
For Each domain in objRoot.selectNodes("TDXItem")
  For Each project in domain.selectNodes("PROJECTS_LIST/TDXItem")
    msgbox domain.selectSingleNode("DOMAIN_NAME").text & "" & project.selectSingleNode("PROJECT_NAME").text
  Next
Next

最新更新