Selenium 和 Xpath - 访问彼此相邻的元素

Selenium and Xpath - accessing elements adjacent to each other

在下面的示例中,我尝试单击 Follow Me,其中相邻的(ish)<div> 等于 David。这是页面上许多具有相同结构的 <div class='_1m' 之一。(这有意义吗?)

抱歉,第一次发帖有问题,忘记了一个主要细节。我知道我正在寻找 David,但我不知道 'Follow Me' 的值是多少。它在每条记录上都会发生变化。

<div class="_1m">
  <div class="_8h"><img src="/2323.GIF" /></div>
  <div class="_1j">
    <div class="_1c">David<span class="_13">abc</span></div>
    <div>
      <span class="_1v">ABCD</span>
      <span class="_1v">1234</span>
    </div>
    <div>7890</div>
  </div>
  <div class="_3h">
    <div class="_n0">
      <span class="_bn"><span class="_la">Follow Me</span></span>
    </div>
  </div>
</div>

在 xpath 下面使用 //div[@class='_1c'][contains(.,'David')]/../following-sibling::div//span[@class='_la'][contains(.,'Follow Me')]

解释:

  1. //div[@class='_1c'][contains(.,'David')] 找到 David
  2. /.. 移动到 David 的一个父节点,因为 follow me 元素是该父节点的兄弟节点 div
  3. /following-sibling::div 紧跟兄弟 div
  4. //span[@class='_la'][contains(.,'Follow Me')] 找到有 Follow me 文本的 span

要单击 Follow Me,其中相邻的 <div> 包含文本 David,您可以使用以下 :

  • 使用 xpath以下:

    //div[contains(., 'David')]//following::span[3]/span
    
  • 使用 xpath跟随text 跟我来:

    //div[contains(., 'David')]//following::span[3]/span[text()='Follow Me']