0

在单击该元素之前,我正在使用等待元素功能的可见性。但是,HTML 中有多个元素可以满足我对元素使用的搜索,这就是我想要的。如何使用等待可见性来等待多个元素中的第 N 个元素变得可见?

例如,这是我的代码的一部分,其结果是等待多个元素中的第一个元素的可见性,然后单击它:

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

driver = webdriver.Firefox()
wait = WebDriverWait(driver, 10)

Start_Element = wait.until(expected_conditions.visibility_of_element_located((By.XPATH, "//*[@class='start' and starts-with(text(), '7')]")))
Start_Element.click()

我希望能够等待第一个、第二个、第三个等 Start_Element 可见,然后单击它。

我知道如果我只想点击第 N 个元素,我可以做这样的事情,最后的 [n] 决定我点击哪个元素:

driver.find_elements_by_xpath("//*[@class='start' and starts-with(text(), '7')]")[0].click()

但是,我想不通的是如何将其合并到等待可见性功能中,以等待第 n 个元素的可见性,然后再单击它。

谢谢!

4

1 回答 1

0

您可以修改 xpath 以查找第 n 个元素,如下所示:

eleXpath = "(//*[@class='start' and starts-with(text(), '7')])["+str(3)+"]"
Start_Element = wait.until(expected_conditions.visibility_of_element_located((By.XPATH, eleXpath )))
Start_Element.click()

现在上面的代码将等待第 3 个元素被加载。//*[@class='start' and starts-with(text(), '7')]

于 2020-08-23T07:40:33.990 回答