Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xPath奇怪行为-即使设置了[1]也选择所有元素_Xpath - Fatal编程技术网

xPath奇怪行为-即使设置了[1]也选择所有元素

xPath奇怪行为-即使设置了[1]也选择所有元素,xpath,Xpath,今天我偶然发现了一个非常有趣的案例(至少对我来说)。我正在处理Selenium和xPath,并试图获取一些元素,但得到了一个奇怪的行为: <div class="resultcontainer"> <div class="info"> <div class="title"> <a> some text </a> </div> </di

今天我偶然发现了一个非常有趣的案例(至少对我来说)。我正在处理Selenium和xPath,并试图获取一些元素,但得到了一个奇怪的行为:

<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