繁体   English   中英

无法通过 XPATH 定位第二个匹配元素

[英]Not able to target 2nd matching element by XPATH

我有这样的 html 内容

<div class="ng-star-inserted">
  <span class="ng-star-inserted">
    <a href="#/users/roledetail/875">Seismic interpreter</a>
  </span>
  <span class="ng-star-inserted">
    <a href="#/users/roledetail/876">Geophysicist</a>
  </span>
</div>

我有一个 selenium 脚本,我试图在其中获取第一个角色名称和第二个角色名称。 我试过这个,但它没有像预期的那样给我第一个和第二个元素。 知道我错过了什么吗? 谢谢!

'//div[@class="ng-star-inserted"]//span//a[1]'
'//div[@class="ng-star-inserted"]//span//a[2]'

Xpath 尝试

在这种情况下,您可以使用 xpath 索引:

所以而不是这个:

'//div[@class="ng-star-inserted"]//span//a[1]'
'//div[@class="ng-star-inserted"]//span//a[2]'

用这个 :

"(//div[@class='ng-star-inserted']//span//a)[1]"
"(//div[@class='ng-star-inserted']//span//a)[2]"

或者如果您认为文本不会改变,您也可以使用LINK_TEXTPARTIAL_LINK_TEXT

示例代码:-

wait = WebDriverWait(driver, 10)
button1 = wait.until(EC.element_to_be_clickable((By.LINK_TEXT, "Seismic interpreter")))
button1.click()

进口:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

所以你可以使用下面的方式

((//a[contains(text(),'Seismic interpreter')])[2])
((//a[contains(text(),'Geophysicist')])[2])

clickLink=WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"((//a[contains(text(),'Seismic interpreter')])[2])")))
checkbox.click()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM