xpath - 如何根据具有特定内容选择超链接?

时间:2012-12-11 20:36:32

标签: html dom xpath

我想在表格行中选择某个超链接。我的链接有两个类别'mf'和'6day'。我希望能够选择具有上述其中一个的行(现在只有1行正常),然后移动到第二个锚标记,然后存储链接(storeAttribute)。

所以我有一张这样的表:

  ______________________________________
th |  td   | role|  td |  td |  td | td |
 _________________________________________
tr |  6day | a   | txt | txt | txt | a9 |
tr |  6day | a   | txt | txt | txt | a9 |
tr |  mf   | a   | txt | txt | txt | a1 | <-- the a1 here (2nd anchor link)
tr |  6day | a   | txt | txt | txt | a9 |
tr |  6day | a   | txt | txt | txt | a9 |

我想要包含纯文本“mf”的行。

然后我想要“下一个”'a'(锚)标签,即 a1 链接(它实际上是'a'而不是'a1',但我用a1来区分它。)

我可以选择我想要的

带有storeAttribute

xpath=(//table/tbody/tr/td[contains(text(),'Monday - Friday')])

但是尝试然后选择该行中的下一个标签让我感到困惑。

我已经尝试了上述各种/..//a..//a等等,但没有运气

我可以使用它:xpath=(//table/tbody/tr[3]/td[8]/a)但这取决于表的布局,因此对我的需求来说太脆弱了。

“真正的”HTML表位于:http://jsfiddle.net/8LJMu/

1 个答案:

答案 0 :(得分:1)

你想要(//table[@id='practitioners']/tbody/tr[td[contains(@class, 'calendar') and contains(.,'Monday - Friday')]]//td[@class='']/a[@target='_blank'])[1] - 从字面上看,“节点列表的第一项由所有具有”_blank“目标属性的锚元素组成,其中包含任何单元格中没有包含CSS类的任何单元格'包含“日历”单元格的表格,其中包含“星期一 - 星期五”。如果您要查找所有此类单元格,只需删除前导(和尾随)[1]