当同一页面上有许多看似相同的下载按钮时,使用 Selenium 选择特定的下载按钮

问题描述 投票:0回答:2

我正在使用一个在线教育平台,该平台每天生成 Excel 电子表格。当我访问门户时,我可以单击特定日期或查看日期列表,每个日期都有一个内联下载按钮。我是 Python 中的 Selenium 新手,我正在尝试从列表页面下载其中的部分或全部。 这是示例列表的屏幕截图。 “下载 Excel”按钮位于列表中每个条目末尾的下拉列表中 这是下载按钮检查的屏幕截图

我无法找到任何 css id、html、xpath 等区别来指定我要单击哪个下载按钮。当我尝试仅指定 css 选择器时,仅下载了列表的顶部项目。

python-3.x selenium-webdriver selenium-firefoxdriver
2个回答
0
投票

您可以尝试获取所有按钮并仅单击您想要的按钮。

# Find all
download_buttons = driver.find_elements(By.XPATH, '//div[@class="download-button"]/button')

specific_button_index = 2 # the index of the button
download_buttons[specific_button_index].click()

0
投票

每个下拉菜单点都有一个增量 x 路径。 例如,在这个 Stack-overflow 页面的左侧,有一个选项列表:

  • /html/body/div[3]/div[1]/div[1]/nav/ol/li[1]/ol/li[1]
  • /html/body/div[3]/div[1]/div[1]/nav/ol/li[1]/ol/li[2]
  • /html/body/div[3]/div[1]/div[1]/nav/ol/li[1]/ol/li[3]

注意每个选项如何比下一个更高? 因此,按照该示例,您可以按如下方式迭代堆栈交换:

for i in range(1,3):
  xpath = "/html/body/div[3]/div[1]/div[1]/nav/ol/li[1]/ol/li[" + str(i) + "]"
  menu = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH, xpath)))
  menu.click()
  #now do the same for the "Download Excel" option to click on it
© www.soinside.com 2019 - 2024. All rights reserved.