Selenium自动化-如何遍历类元素
如何使用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]
)
);