Python / Selenium загружает PDF с Firefox - PullRequest
0 голосов
/ 21 апреля 2020

В своем коде я использую Firefox в качестве браузера для навигации по сайту, проведения поиска и затем щелчка для просмотра каждого документа в формате PDF. Попав в документ (он загружается без запроса на загрузку), я хотел бы загрузить документ. Я нашел Java версию, как это сделать, но она не так легко работает в Python. Ниже я также пытаюсь выбрать элемент из среды Adobe (чтобы загрузить его напрямую, но еще раз, он не может найти объект xpath).

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import requests, time


driver = webdriver.Firefox(executable_path="geckodriver")
driver.get("https://www.okcc.online/")
driver.maximize_window()
options = webdriver.FirefoxOptions()
options.set_preference("browser.download.folderList", 2)
options.set_preference("browser.download.dir", "/Users/username/Desktop/oklahoma/oklahoma_county")
options.set_preference("browser.download.useDownloadDir", "true")
options.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf")
options.set_preference("pdfjs.disabled", "true")

wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.XPATH, "//*[@id='rod-menu-button']"))).click()
wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@id='rodDocTypeTxt']"))).send_keys('MTG')
wait.until(EC.element_to_be_clickable((By.XPATH, "//ul[@id='ui-id-1']//li//div"))).click()

driver.find_element_by_xpath('//*[@id="rod-date-toggle"]').click()

driver.find_element_by_xpath('//*[@id="rodFromDateTxt"]').send_keys('4/1/2020')
driver.find_element_by_xpath('//*[@id="rodToDateTxt"]').send_keys('4/20/2020')

search_button = driver.find_element_by_xpath('//*[@id="rod-submit-search"]').click()

time.sleep(2)

pdf = driver.find_elements_by_css_selector(".icon.pdf-icon")

for i in pdf:
    i.click()
    time.sleep(3)
    download_button = driver.find_element_by_xpath('//*[@id="download"]')
    download_button.click()
    close_button = driver.find_element_by_css_selector('.pdf-function-button.pdf-close')
    close_button.click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...