首页 > 解决方案 > 单击没有 ID 或唯一名称 selenium python 的下载按钮

问题描述

我有一个网站,我想下载一个 excel 文件。https://www.rivm.nl/media/smap/eenzaamheid.html

我希望能够单击菜单中的下载按钮。要打开“下载菜单”(或下拉菜单,如果你喜欢),我正在执行以下操作:

 WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='highcharts-container ']//*[name()='svg']//*[name()='g' and @aria-label='View export menu']//*[name()='rect']"))).click()

打开菜单后,我希望能够单击“XLS Downloaden”(非常具体,因为我想要 excel 文件)

我尝试通过执行以下操作在 div 元素中查找文本来单击按钮:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH("//*[contains(text(),'XLS downloaden')]")))).click()

然而,这会导致“对象不可调用”错误

我也尝试了以下方法,但这会导致超时错误:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='highcharts-menu-item ']//*[name()='svg']//*[contains(text(),'XLS downloaden')]"))).click()

那么,我将如何点击“XLS 下载”?

标签: pythonselenium

解决方案


经过反复试验,我自己找到了一种方法:

 download = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='highcharts-container ']//*[name()='svg']//*[name()='g' and @aria-label='View export menu']//*[name()='rect']")))  
download.click()
WebDriverWait(download, 10).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='highcharts-menu']//*[contains(text(),'XLS downloaden')]"))).click()

如果有人知道更好的方法,请告诉我


推荐阅读