无法通过XPATH将第二个匹配元素作为目标

2024-05-14 15:58:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的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 tries


Tags: div角色内容htmlngusersclassstar
2条回答

所以你可以用下面的方法

((//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()

在这种情况下,可以使用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

相关问题 更多 >

    热门问题