xPath奇怪行为-即使设置了[1]也选择所有元素
今天我偶然发现了一个非常有趣的案例(至少对我来说)。我正在处理Selenium和xPath,并试图获取一些元素,但得到了一个奇怪的行为:xPath奇怪行为-即使设置了[1]也选择所有元素,xpath,Xpath,今天我偶然发现了一个非常有趣的案例(至少对我来说)。我正在处理Selenium和xPath,并试图获取一些元素,但得到了一个奇怪的行为: <div class="resultcontainer"> <div class="info"> <div class="title"> <a> some text </a> </div> </di
<div class="resultcontainer">
<div class="info">
<div class="title">
<a>
some text
</a>
</div>
</div>
</div>
<div class="resultcontainer">
<div class="info">
<div class="title">
<a>
some other text
</a>
</div>
</div>
</div>
<div class="resultcontainer">
<div class="info">
<div class="title">
<a>
some even unrelated text
</a>
</div>
</div>
</div>
结果我得到了所有的,而不是第一个。但如果我质疑:
//div[@class="resultcontainer"][1]/div[@class="info"]/div[@class="title"]/a
我只得到第一个,不是全部
这背后有什么神圣的原因吗
致以最良好的祝愿,
比斯科我想你想要
(//div[@class="title"])[1]/a
这:
选择所有(
元素的子元素)
元素,这些元素具有@class
的'title'
,它们是其父元素的第一个子元素(在此上下文中)。这意味着:它选择了所有这些
工作XPath选择所有
元素,这些元素的@class
值为'title'
,并且选择第一个元素
谓词(方括号中的表达式[]
)分别应用于与前面位置步骤匹配的每个元素(即“//div”
)。要将谓词应用于已筛选的节点集,需要使用括号明确分组
因此,这:
//div[1][@class="title"]/a
将选择所有
元素,获取第一个元素,然后通过检查@class
值进一步筛选它。也不是你想要的。;-)
//div[@class="title"][1]/a
//div[1][@class="title"]/a