两个不同标签中两个不同属性的X路径

时间:2015-03-05 07:06:16

标签: html xpath qtp

HTML代码段

<TH class="abcd" style="WIDTH: 70%">03 Mar 2014</TH>
<TH style="WIDTH: 58%" height=18>27 Feb 2014</TH>
<TH class="abcd" style="WIDTH: 70%">03 Jun 2014</TH>
<TH style="WIDTH: 58%" height=18>12 Jun 2014</TH>

说明

我们需要从上面的HTML代码段中检索日期。所有日期都出现在两个标签中的任何一个中,并且需要使用单个XPATH检索所有日期

到目前为止已尝试过的内容:

我能够使用两个不同的xpath获取日期值。一个用于第一个标记<TH class=.... >,另一个用于<THstyle = ....>

Xpath one : //TH[@class = 'abcd']
Xpath two : //TH[@height = '18'] 'Not sure if this is right

需要什么:

只有一个xpath是从上面的HTML中获取日期值。

  1. 这可能吗'跟我一起做这个,我是初学者:)
  2. 如果是,请求您提供相同的指导
  3. 更新:

    首先非常感谢@MathiasMüller。我试过但没有运气。它返回0个元素。可能是我错过了一些东西而不是你提出的xpath的任何东西:)。所以我在这里发布一个更新的代码.. Vbscript&amp; QTP。如果这是对的,请告诉我,我在这里缺少什么

    注意:所有这些日期值都在网表中

    Set odesc=Description.Create()
        odesc("micclass").value="WebElement" 
        odesc("xpath").value="//th[@class = 'abcd' or @height = 18]/text()" 
    
    set test = Browser("asdfasdf").Page("asdfasdf").WebTable("xyz").ChildObjects(odesc)
        For i = 1 To test.count-1
            val=test(i).GetROProperty("innertext")
            MsgBox val
        Next
    

2 个答案:

答案 0 :(得分:3)

假设输入文档格式正确,请使用

//TH[@class = 'abcd' or @height = 18]/text()

将产生(个别结果由-----分隔):

03 Mar 2014
-----------------------
27 Feb 2014
-----------------------
03 Jun 2014
-----------------------
12 Jun 2014

路径表达式还将检索存在两个属性的节点,例如

<TH class="abcd" style="WIDTH: 70%" height="18">03 Jun 2014</TH>

答案 1 :(得分:1)

您的代码应该是这样的。从XPath描述中删除文本

Set odesc=Description.Create()
    odesc("micclass").value="WebElement" 
    odesc("xpath").value="//th[@class = 'abcd' or @height = 18]" 

set test = Browser("asdfasdf").Page("asdfasdf").WebTable("xyz").ChildObjects(odesc)
    For i = 1 To test.count-1
        val=test(i).GetROProperty("innertext")
        MsgBox val
    Next