xml - 如何处理 QTP/UFT 中对象所需的失败

标签 xml soap xpath qtp

我正在使用 Microsoft XML DOM 和 HTTP 在 UFT 中测试 Web 服务

当我触发请求 XML 时,我通过两种方式获得响应

方法1成功时

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <SearchResourceResponse xmlns="http://www.ICLNBI.com/ICLNBI.xsd">
         <MessageElements xmlns="">
            <MessageStatus>SUCCESS</MessageStatus>
            <MessageAddressing>
               <from>ICL</from>
               <to>QPortal</to>
               <messageId>1234</messageId>
               <action>SearchResource</action>
               <timestamp>2013-07-29T17:05:17.860Z</timestamp>
               <ServiceName>SearchResource</ServiceName>
               <ServiceVersion>2.0</ServiceVersion>
            </MessageAddressing>
       </SearchResourceResponse>
   </soap:Body>
</soap:Envelope>

方法 2 失败时

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body/>
</soap:Envelope>

我正在捕获 <MessageStatus>SUCCESS</MessageStatus>通过使用 xpath

set ObjXml = Createobject("Microsoft.XMLDOM")

Set ObjNode= ObjXml.SelectSingleNode("/soap:Envelope/soap:Body/*/MessageElements/MessageStatus")

ResultText=ObjNode.text

当它成功时,它工作得非常好,当它失败并且响应出现如方式 2 所示时,我收到一个类似 Object required 的错误,并且它不会进一步继续。

是否有任何方法可以使如果未找到对象,它不应该退出功能,并且应该返回失败状态并继续进一步

VB scipt iam 使用的是

Set ObjNode= ObjXml.SelectSingleNode("/soap:Envelope/soap:Body/*/MessageElements/messageStatus")
ResultText=ObjNode.text

If ResultText="SUCCESS" or ResultText="Success" Then 

TcStatus = "Passed"

Else if 

ResultText="FAIL" or ResultText= "FAILURE" Then

TcStatus = "Passed"

但是它在第 1 步中失败了:(我们可以处理这个吗?

最佳答案

我怀疑您在 SelectSingleNode 上遇到了错误,也许这只是您问题中的拼写错误?

我怀疑您在尝试访问 ObjNode.Text 时确实遇到了失败。这是因为如果 SelectSingleNode 找不到请求的节点,它将返回 Nothing。所以你只需要检查返回值即可决定是否访问.Text。

Set ObjXml = Createobject("Microsoft.XMLDOM")

'Presumably you have a step to load the XML here.

Set ObjNode = ObjXml.SelectSingleNode("/soap:Envelope/soap:Body/*/MessageElements/MessageStatus")
If ObjNode Is Nothing Then
    MsgBox "Oh no! Failure!"
Else
    ResultText = ObjNode.text
End If

哦,如果该元素从未出现在文档中的其他位置,您可以将 XPath 缩短为 //MessageStatus

关于xml - 如何处理 QTP/UFT 中对象所需的失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23557187/

相关文章:

c# - XmlDocument 无法从 ZipArchive 条目加载流

java - json 转 xml java

python - 在 Python 中使用 ElementTree 发出命名空间规范

python - Selenium XPath 逻辑 AND 连接多个 contains() 过滤器?

java - 自定义字体不适用于 Android 5.0,但适用于其他地方

java - 如何解析大型 SOAP 响应

java - 需要添加 SOAP 安全 token

xml - WCF 服务,SOAP 或纯 XML 响应,如何?

firefox - 使用 Firefox WebDriver 时选择所有具有文本的节点的 Xpath 表达式是什么?

xml - 如何在 Postgres 中使用 xpath 对齐 XML 元素