使用Selenium在列表中定位html元素

问题描述 投票:0回答:2

我正在使用selenium,我需要从元素列表中定位商店的第一个和第二个文本。

例如“Title 1”和“Title 2”..

<div class="this-list">
   <div class="item">
       <div class="title">Title 1</title>
   </div>
   <div class="item">
       <div class="title">Title 2</title>
   </div>
   <div class="item">
       <div class="title">Title 3</title>
   </div>
</div>
<div class="not-this-list">
   <div class="item">
       <div class="title">Wrong Title 1</title>
   </div>
   <div class="item">
       <div class="title">Wrong Title 2</title>
   </div>
   <div class="item">
       <div class="title">Wrong Title 3</title>
   </div>
</div>

什么是文本“标题1”和“标题2”的xPath

html selenium selenium-ide
2个回答
1
投票

选项1:

//div[@class='this-list']/div[@class='item']/div[@class='title' and normalize-space(text()='Title 1')]

选项2:

//div[@class='title'][text()[normalize-space() = 'Title 1']]

1
投票

使用position()指数

(//div[@class='this-list']//div[@class='title'])[position()=1 or position()=2]

演示:

var xpath = "(//div[@class='this-list']//div[@class='title'])[position()=1 or position()=2]";
var xpathRes = document.evaluate(xpath, document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
var matched = xpathRes.iterateNext();
while (matched) {
  console.log(matched.textContent)
  matched= xpathRes.iterateNext();
}
<div class="this-list">
  <div class="item">
    <div class="title">Title 1</div>
  </div>
  <div class="item">
    <div class="title">Title 2</div>
  </div>
  <div class="item">
    <div class="title">Title 3</div>
  </div>
</div>
<div class="not-this-list">
  <div class="item">
    <div class="title">Wrong Title 1</div>
  </div>
  <div class="item">
    <div class="title">Wrong Title 2</div>
  </div>
  <div class="item">
    <div class="title">Wrong Title 3</div>
  </div>
</div>
© www.soinside.com 2019 - 2024. All rights reserved.