如何用Selenium的WebDriverWait等待元素列表中第2个目标元素出现
解决方法
要等待元素列表中的第2个元素出现,不能直接用presence_of_element_located(它只会等待第一个匹配元素加载),需要自定义等待条件,确保匹配的元素列表长度至少为2,再选取目标元素。
重要提示:
Python列表是0索引的,你示例里的[2]实际取的是第3个元素,如果要获取第2个元素,应该用索引[1]。
修改后的代码:
# 等待列表中至少有2个匹配元素,然后取第2个(索引1) target_element = WebDriverWait(driver, 60).until( lambda driver: len(driver.find_elements(By.CLASS_NAME, 'container bg-black-100')) >= 2 )[1]
代码说明:
- 用
lambda表达式作为等待条件,每次检查时调用find_elements获取元素列表,判断其长度是否≥2 - 当条件满足时,
until方法会返回这个元素列表,之后通过索引[1]取出第2个元素 - 如果你的需求确实是取第3个元素,把索引改成
[2]即可
内容的提问来源于stack exchange,提问作者Abdul Hossein Charkhi
相关产品推荐
相关产品推荐

