Python 如何使用selenium WebDriver下载PDF

Python 如何使用selenium WebDriver下载PDF,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,我想使用SeleniumWebDriver下载Python中的PDF。但是,由于某些原因,我无法选择/单击下载按钮。可能是因为按钮不可聚焦 这是按钮: 由于所需元素位于中,因此要在元素上调用单击(),您必须: 将所需的帧的WebDriverWait设置为可用,并将其切换为可用() 将所需元素的WebDriverWait设置为可单击() 您可以使用以下任一选项: 使用CSS\u选择器: WebDriverWait(driver, 10).until(EC.frame_to_be_availa

我想使用SeleniumWebDriver下载Python中的PDF。但是,由于某些原因,我无法选择/单击下载按钮。可能是因为按钮不可聚焦

这是按钮:


由于所需元素位于
中,因此要在元素上调用
单击()
,您必须:

  • 将所需的
    帧的WebDriverWait设置为可用,并将其切换为可用()
  • 将所需
    元素的WebDriverWait设置为可单击()
  • 您可以使用以下任一选项:

    • 使用
      CSS\u选择器

      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, "iframe.rc-reader-frame")))
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "menu-button.download span"))).click()
      
    • 使用
      XPATH

      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, "//iframe[@class='rc-reader-frame']")))
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//menu-button[@class='download']//span[text()='PDF']"))).click()
      
    • 注意:您必须添加以下导入:

      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support import expected_conditions as EC
      
  • 浏览器快照:


参考文献 您可以在以下内容中找到一些相关讨论:


您可能只想下载该文件,而不使用selenium。这只是一个示例,因此我想了解它是如何与selenium一起工作的。我不得不对第二行进行了一些编辑,但后来它成功了!{WebDriverWait(driver,10).until(EC.element_to_be__可点击((By.XPATH,//menu button[@class='download']))))。click()}@user27074我怀疑在我的设置中呈现的DOM和您看到的DOM之间可能存在一些差异,因为存在视觉不匹配。但是,我相信答案会让你走得更近。很高兴能够帮助你!!!
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, "//iframe[@class='rc-reader-frame']")))
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//menu-button[@class='download']//span[text()='PDF']"))).click()
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC