【问题标题】:Using XPath: find link in cell 3 rows up使用 XPath:在单元格 3 行中查找链接
【发布时间】:2010-10-02 06:27:30
【问题描述】:

我在一个表中有多行,其中一个是我想自动点击的链接。对于我的起点,我有最后一个实例,即一行包含文本“测试问题?”:

ID: 1416

编辑/批准 忽视 电子邮件 姓名: 提交人姓名

打开 不适用 地点: 提交者位置

成员: 不

问题文本: 测试题? 响应 1 文本:

响应 2 文本:

ID: 1417

编辑/批准 忽视 电子邮件 姓名: 提交人姓名

打开 不适用 地点: 提交者位置

成员: 不

问题文本: 测试题? 响应 1 文本:

响应 2 文本:

所以,//tr[td='Test Question?'][last()] 类似于“问题文本:测试问题?”

无论如何,从那之后的三排中有一排有一堆链接。我想要第一个单元格中链接的 xpath。

现在我尝试使用 position(),但类似 ​​//tr[position()=(//tr[td='Test Question?'][last()][position()])-3]只是不是正确的方法,我找不到任何好的例子。

感谢

戴夫

【问题讨论】:

    标签: hyperlink cell xpath


    【解决方案1】:

    至少可以说,这将是一个非常粗糙的 xpath,但您正在查看以 ancestor::tr 开头的 axes,然后是前同级。隧道向上到达<tr>,然后穿过三个(我认为您需要在这里引用position()),然后以正常方式从那里向下到达您的目标。


    编辑:比我想象的要容易,前面的兄弟倒数。

    ./ancestor::tr/preceding-sibling::tr[3]/td[1]/a
    

    【讨论】:

    • 所以,如果 //ancestor::tr[td='Test Question?'][last()]/preceding-sibling::tr[3]/td[1]/a 得到我所有的“测试题?”链接,我如何获得最后一个?
    • (当我使用 XPather 时,//ancestor::tr[td='Test Question?'][last()]/preceding-sibling::tr[3]/td[1]/ a 让我得到与 //ancestor::tr[td='Test Question?']/preceding-sibling::tr[3]/td[1]/a 相同的东西,所以你可能已经回答了这个问题,而我'我只是在尝试验证它时遇到了麻烦。)
    • 我以为你已经有了起始节点?尽管如此,你还是让自己变得过于复杂。分离寻找种子的问题,并在上​​面加上前缀。试试这个: //td[self::td='Test Question?']/ancestor::tr/preceding-sibling::tr[3]/td[1]/a
    • 是的,//ancestor::tr[td='Test Question?'][last()]/preceding-sibling::tr[3]/td[1]/a 有效。谢谢
    猜你喜欢
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多