Selenium自动化-如何遍历类元素

0 投票
2 回答
22 浏览
提问于 2025-04-12 12:20

如何使用Selenium和Python遍历多个类元素

launch_box = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[contains(@class, 'launch-button') and contains(@class, 'ml-2') and contains(@class, 'btn') and contains(@class, 'btn-link')]")))

我想访问那个类中的第3个或第4个元素。我该怎么做呢?

2 个回答

0

你可以返回一组元素,然后用数组的方式来访问它们,比如这样:

launch_boxes = wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "button.launch-button.ml-2.btn.btn-link")))
launch_boxes[3].click()

注意:我把定位器改成了CSS选择器,因为它的语法简单、短,而且更容易阅读。

参考资料:
CSS选择器

0

你可以使用一个叫做lambda的东西,它可以返回一个元素,作为element_to_be_clickable()的参数。

launch_box = WebDriverWait(driver, 20).until(
  EC.element_to_be_clickable(
    lambda driver: driver.find_elements(By.XPATH,"//button[contains(@class, 'launch-button') and contains(@class, 'ml-2') and contains(@class, 'btn') and contains(@class, 'btn-link')]")[3]
  )
);

也许这个简单的选择器对你有用。

launch_box = WebDriverWait(driver, 20).until(
  EC.element_to_be_clickable(
    lambda driver: driver.find_elements(By.CSS_SELECTOR,"button.launch-button.ml-2.btn.btn-link")[3]
  )
);

撰写回答