python - 单击没有 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 下载”?
解决方案
经过反复试验,我自己找到了一种方法:
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()
如果有人知道更好的方法,请告诉我
推荐阅读
- django - DJANGO + SAML2 + CSRF
- javascript - Javascript:检查屏幕宽度并删除 HTML 元素
- wordpress - 如何将插件简码打印到 wordpress 管理页面
- docker - 如何在 Docker 容器中为 kubectl 生成 admin.conf 文件
- python - 在树莓派中安装 QtVirtualkeyboard?
- asp.net - OWIN 使用什么机制来确定用户在阅读其声明之前已通过身份验证?
- html - 没有方案的 HTML 锚点 href
- ruby-on-rails - All scheduled sidekiq jobs are not excuting in rails
- google-cloud-platform - Frequent errors on firestore: StructuredQuery.from cannot have more than one collection selector
- python - GCP 为目标存储桶中的文件添加时间戳