使用Selenium Python点击两个同类下载按钮的问题
解决Selenium Python依次点击同类别名下载按钮的问题
你当前的代码使用find_element_by_xpath只会定位到第一个匹配的按钮,要实现依次点击两个按钮,需要改用复数形式的元素定位方法获取所有匹配的按钮,再循环遍历点击。
具体实现代码
# 导入所需模块(如果未提前导入) from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time # 获取所有符合类名条件的下载按钮元素列表 download_buttons = driver.find_elements_by_xpath("//button[@class='MuiButtonBase-root MuiIconButton-root IconButton-sc-iv40hv-1 cLszZl IconButton-sc-iv40hv-0 hbJxSM DownloadButton-sc-19l7ggt-0 gHtfyl MuiIconButton-colorPrimary']") # 遍历列表,依次点击每个按钮 for button in download_buttons: # 等待按钮处于可点击状态,规避页面动态加载导致的交互异常 WebDriverWait(driver, 10).until(EC.element_to_be_clickable(button)) # 执行点击操作 driver.execute_script("arguments[0].click();", button) # 点击后添加短暂等待,确保下载操作触发或页面状态更新 time.sleep(2)
关键说明
- 使用
find_elements_by_xpath(复数形式)替代find_element_by_xpath,会返回页面上所有匹配该XPath的元素,而非仅第一个。 - 等待逻辑是为了适配页面动态渲染,保证按钮在点击时处于可交互状态,避免抛出元素不可点击的异常。
- 点击后的
time.sleep可根据实际下载速度调整时长,确保每个下载操作有足够的触发时间。
内容的提问来源于stack exchange,提问作者CodeChiyu
相关产品推荐
相关产品推荐

