首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用相对Xpath访问第二个元素

如何使用相对Xpath访问第二个元素
EN

Stack Overflow用户
提问于 2015-06-11 01:59:50
回答 4查看 4.6K关注 0票数 0

给定此页面片段

代码语言:javascript
运行
AI代码解释
复制
<section id="mysection">
    <div>
        <div>
            <div>
                <a href="">
                <div>first</div>
                </a>
            </div>
            <div>
                <a href="">
                <div>second</div>
                </a>
            </div>
        </div>
    </div>
</section>

我希望使用相对Xpath访问第二个a-元素。在FF (以及使用Selenium定位)中,

代码语言:javascript
运行
AI代码解释
复制
//section[@id='mysection']//a[1]

工作,但这不匹配

代码语言:javascript
运行
AI代码解释
复制
//section[@id='mysection']//a[2]

第二个表达式有什么问题?

编辑:实际上,我并不太关心Selenium (只需使用它进行快速验证)。我想让它与机器人框架中的selenium2library一起运行。在这里,输出是:

ValueError:不支持前缀为‘(//节[@id’)的元素定位器

对于建议的解决方案,(//section[@id='mysection']//a)[2]

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-06-12 05:11:24

你可以用这个。这将选择节的锚后代,并为您获取第二个节点。这适用于xslt处理器,希望这适用于Selenium。

代码语言:javascript
运行
AI代码解释
复制
//section[@id='mysection']/descendant::a[2]
票数 3
EN

Stack Overflow用户

发布于 2015-06-11 02:12:59

试着这样做:

代码语言:javascript
运行
AI代码解释
复制
(//section[@id='mysection']//a)[2]

//a[2]在同一个父元素中查找<a>元素。因为每个父<div>只包含一个<a>子元素,所以您的xpath没有匹配任何内容。

票数 2
EN

Stack Overflow用户

发布于 2015-06-11 05:14:40

在这方面:

代码语言:javascript
运行
AI代码解释
复制
//section[@id='mysection']//a[1]

在任何上下文中(例如,在一个div中),您首先要匹配所有'a‘元素,但是使用以下方法

代码语言:javascript
运行
AI代码解释
复制
//section[@id='mysection']//a[2]

您正在尝试将任何第二个'a‘元素与任何上下文匹配,但是在任何节点中都没有超过一个'a’元素。因此,结冰的同级节点应该是那些'a‘标记的父div节点。

非常简单:

代码语言:javascript
运行
AI代码解释
复制
//section[@id='mysection']//a[1] - both elements

这就是为什么之前对整件事有偏执的回答是正确的。

代码语言:javascript
运行
AI代码解释
复制
//section[@id='mysection']//div[1]/a - only first element
//section[@id='mysection']//div[2]/a - only second elemnt

另一种分别处理a的方法:

代码语言:javascript
运行
AI代码解释
复制
//section[@id='mysection']//a[div[text()='first']]
//section[@id='mysection']//a[div[text()='second']]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30777566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档