根据XPath中的锚文本选择HTML链接?

时间:2015-12-24 14:13:08

标签: html xml xpath

我需要在以下HTML中选择标有“保存”的元素:

<td id="glActionAreaItem_0" tabindex="401" widgetid="glActionAreaItem_0">
   <a class="actionItem" dojoattachevent="onclick:_onClick" tabindex="401" href="javascript:void(0);"> Reset </a>
</td>    

<td id="ActionAreaItem_1" tabindex="402" widgetid="glActionAreaItem_1">
   <a class="actionItem" dojoattachevent="onclick:_onClick" tabindex="402" href="javascript:void(0);"> Save </a>
</td>

我需要获取Save对象,但是Reset和Save对象之间只有很少的唯一字段,我不想依赖tabindex,因为我们无法保证永远保持402。

是否可以使用“保存”标签作为XPath?我该怎么做呢?或者也许我可以使用id="glActionAreaItem_1"并以某种方式获得那些对象的孩子,那会给我Save对象吗?对不起,大声思考。

Dim btn_Save

'page is the HTML page
Set btn_Save = page.FindChildByXPath("//a[@tabindex='402']:, True) 

我需要另一种方法来获取btn_Save对象,而不是使用tabindex属性,因为它总是不会是402。

2 个答案:

答案 0 :(得分:0)

这是另一种获取Save对象的方法。

Set lnk_Save = page.FindChildByXPath("//td[@id='glActionAreaItem_1']//a[@class='actionItem']", True)

答案 1 :(得分:0)

是的,您可以根据XPath中的字符串值选择元素。

此XPath将选择字符串值为“Save”的a元素:

//a[normalize-space(.) = 'Save']

这样,@tabindex或任何其他属性是否会发生变化无关紧要。

normalize-space()将修剪前导和尾随空格并合并内部空间(此处不适用)。)