zoukankan      html  css  js  c++  java
  • QTP环境变量的动态生成与加载(深入篇)

    当然了,除了上一篇所讲的操作,对这三种文件的操作还包括了增删改查。幸运的是,txt格式跟ini格式因为保存的文件的样式是一样的,所以可以用相同的函数去操作,具体如下:

    '读取txt格式环境变量文件里的所有值,存储到Dictionary对象里

    Public Function ReadTxtIniEnvVars(fileName)

        Dim txtStream,txtStr,txtArray,txtDic,i

             Set txtStream = syFSO.OpenTextFile(fileName)

             Set txtDic = CreateObject("Scripting.Dictionary")

             txtStr = txtStream.ReadAll

             txtArray = Split(txtStr,vbcrlf)

             For i=1 to UBound(txtArray) -1

                        If Trim(Split(txtArray(i),"=")(0) )<>Empty And Trim(Split(txtArray(i),"=")(0) )<>"" Then

                                  txtDic.Add Trim(Split(txtArray(i),"=")(0) ),Trim(Split(txtArray(i),"=")(1) )

                        End If

             Next

             Set ReadTxtIniEnvVars = txtDic

             Set txtDic = nothing

    End Function

    '更新txt文件里指定的环境变量值

    'isRemove = true执行删除操作。否则执行更新

    Public Sub UpdateTxtIniEnvVars(fileName,varName,varValue,isRemove)

        Dim txtStream,txtStr,temp

             Set txtStream = syFSO.OpenTextFile(fileName,1)

             Do Until txtStream.AtEndOfLine

                       txtStr = txtStream.ReadLine

                       If Trim(Split(txtStr,"=")(0))=varName Then

                                If isRemove Then

                                         txtStr = ""

                                Else

                                         txtStr = varName & " = " & varValue

                                End If

                       End If

                       If txtStr<>"" Then

                                temp = temp + txtStr + vbcrlf

                       End If

             Loop

             txtStream.Close

             Set txtStream = syFSO.OpenTextFile(fileName,2)

             txtStream.Write temp

             txtStream.Close

             Set txtStr = nothing

    End Sub

    '增加环境变量到已经存在的txt配置文件里,加在原文件的末尾

    Public Sub AddTxtIniEnvVars(fileName,varName,varValue)

             Dim txtStream

             Set txtStream = syFSO.OpenTextFile(fileName,8)

             txtStream.WriteLine varName + " = " +varValue

             txtStream.Close

    End Sub

    '在txt文件里删除一个已经存在的环境变量

    Public Sub DelTxtIniEnvVars(fileName,varName)

       UpdateTxtIniEnvVars fileName,varName,"",True

    End Sub

    华丽丽的分割线:————————————————————

    下面的是关于xml文件里的环境变量的增删改查操作:

    '读取xml文件里所有环境变量,返回一个DIctionary对象

    Public Function ReadXmlEnvVars(fileName)

       Dim xmlObj,xmlDic

       Dim xmlRoot,xmlNode

       Dim varName,varValue

       Set xmlObj = CreateObject("MSXML.DOMDocument")

       Set xmlDic = CreateObject("Scripting.Dictionary")

       xmlObj.Load fileName

       Set xmlRoot = xmlObj.LastChild

       For i = 0 to xmlRoot.ChildNodes.Length - 1

                       Set xmlNode = xmlRoot.ChildNodes.Item(i)

                       varName = xmlNode.ChildNodes.Item(0).nodeTypedValue

                       varValue = xmlNode.ChildNodes.Item(1).nodeTypedValue

                       xmlDic.Add varName,varValue

       Next

       Set ReadXmlEnvVars = xmlDic

       Set xmlObj = nothing

       Set xmlDic = nothing

       Set xmlRoot = nothing

       Set xmlNode = nothing

    End Function

    '更新xml格式环境变量文件

    Public Sub UpdateXmlEnvVars(fileName,varName,varValue)

       Dim xmlObj

       Dim xmlRoot,xmlNode

       Dim nodeName,nodeValue

       Set xmlObj = CreateObject("MSXML.DOMDocument")

       xmlObj.Load fileName

       Set xmlRoot = xmlObj.LastChild

       For i = 0 to xmlRoot.ChildNodes.Length - 1

                       Set xmlNode = xmlRoot.ChildNodes.Item(i)

                       nodeName = xmlNode.ChildNodes.Item(0).nodeTypedValue

                       'nodeValue = xmlNode.ChildNodes.Item(1).nodeTypedValue

                       If UCase(Trim(nodeName)) = UCase(Trim(varName)) Then

                                xmlNode.ChildNodes.Item(1).nodeTypedValue = varValue

                       End If

       Next

       xmlObj.Save fileName

       Set xmlObj = nothing

       Set xmlRoot = nothing

       Set xmlNode = nothing

    End Sub

    '删除xml格式环境变量文件里的一个节点

    Public Sub DelXmlEnvVars(fileName,varName)

       Dim xmlObj

       Dim xmlRoot,xmlNode

       Dim nodeName,nodeValue

       Set xmlObj = CreateObject("MSXML.DOMDocument")

       xmlObj.Load fileName

       Set xmlRoot = xmlObj.LastChild

       If xmlRoot.ChildNodes.Length = 1 Then

                Exit Sub

       End If

       For i = 0 to xmlRoot.ChildNodes.Length - 1

                       Set xmlNode = xmlRoot.ChildNodes.Item(i)

                       nodeName = xmlNode.ChildNodes.Item(0).nodeTypedValue

                       'nodeValue = xmlNode.ChildNodes.Item(1).nodeTypedValue

                       If UCase(Trim(nodeName)) = UCase(Trim(varName)) Then

                                xmlRoot.RemoveChild(xmlNode)

                                Exit For

                       End If

       Next

       xmlObj.Save fileName

       Set xmlObj = nothing

       Set xmlRoot = nothing

       Set xmlNode = nothing

    End Sub

    '增加一个新的节点到xml格式的环境变量

    '可以增加判断,如果varName重复,则调用UpdateXmlEnvVars()

    Public Sub AddXmlEnvVars(fileName,varName,varValue)

       Dim xmlObj

       Dim xmlRoot,xmlNode

       Dim nodeName,nodeValue

       Dim index

       Set xmlObj = CreateObject("MSXML.DOMDocument")

       xmlObj.Load fileName

       Set xmlRoot = xmlObj.LastChild

       Set xmlNode = xmlRoot.ChildNodes.Item(0).CloneNode(1)

       xmlNode.ChildNodes.Item(0).nodeTypedValue = varName

       xmlNode.ChildNodes.Item(1).nodeTypedValue = varValue

       xmlRoot.AppendChild(xmlNode)

       xmlObj.Save fileName

       Set xmlObj = nothing

       Set xmlRoot = nothing

       Set xmlNode = nothing

    End Sub

    以上这些就是我最近总结的一套关于QTP三种格式的环境变量的动态存储,当然有兴趣的童鞋可以将它封装起来。欢迎关注我的博客:http://www.cnblogs.com/ryansunyu/

  • 相关阅读:
    macOS Big Sur 关闭 SIP 正确方法
    绕过CDN寻找真实IP的8种方法
    mycat 链接mysql提示ERROR 3009 (HY000): java.lang.IllegalArgumentExceptio解决方式
    【SpringBoot】SpringBoot 内嵌容器及性能
    【Java】基于NIO的聊天室
    【Java】基于BIO的聊天室
    【ZooKeeper】ZooKeeper源码编译
    【SpringBoot】 使用外部Tomcat方法及启动原理
    【Java】深入理解SPI机制
    【SpringBoot】SpringBoot 自动配置原理
  • 原文地址:https://www.cnblogs.com/ryansunyu/p/2648294.html
Copyright © 2011-2022 走看看