Загрузка PDF из всплывающего окна / формы с помощью Selenium Python ChromeDriver - PullRequest
0 голосов
/ 03 декабря 2018

Возникают проблемы с определением следующего шага, попыткой загрузить файл pdf с веб-сайта и застревание.

"https://www.southtechhosting.com/SanJoseCity/CampaignDocsWebRetrieval/Search/SearchByElection.aspx"

Страница со ссылками на файлы PDF

PDF-файл для загрузки

Мне удалось щелкнуть ссылку pdf со страницы «Страница со ссылками» с помощью Selenium & ChromeDriver, но затем вместо загрузки я получил всплывающую форму.

Я попытался отключить Chrome PDF Viewer («plugins.plugins_list»).": [{" enabled ": False," name ":" Chrome PDF Viewer "}]), но это не работает.

Всплывающая форма (отображается в" PDF-файл для загрузки ") имеетссылка для загрузки файла PDF. Я пробовал ActionChains (), но я получаю это исключение после запуска этой строки:

from selenium.webdriver.common.action_chains import ActionChains

element_to_hover = driver.find_element_by_xpath("//paper-icon-button[@id='download']")
hover = ActionChains(driver).move_to_element(element_to_hover)
hover.perform()

enter image description here

Ищете наиболее эффективный способ загрузки файлов PDF в такой ситуации. Спасибо!

1 Ответ

0 голосов
/ 03 декабря 2018

Пожалуйста, попробуйте это:

chromeOptions = webdriver.ChromeOptions()
prefs = {"plugins.always_open_pdf_externally": True}
chromeOptions.add_experimental_option("prefs",prefs)
driver = webdriver.Chrome(chrome_options=chromeOptions)
driver.get('https://www.southtechhosting.com/SanJoseCity/CampaignDocsWebRetrieval/Search/SearchByElection.aspx')

#Code to open the pop-up
driver.find_element_by_xpath('//*[@id="ctl00_DefaultContent_ASPxRoundPanel1_btnFindFilers_CD"]').click()
driver.find_element_by_xpath('//*[@id="ctl00_GridContent_gridFilers_DXCBtn0"]').click()
driver.find_element_by_xpath('//*[@id="ctl00_DefaultContent_gridFilingForms_DXCBtn0"]').click()

driver.switch_to.frame(driver.find_element_by_tag_name('iframe'))
a = driver.find_element_by_link_text("Click here")
ActionChains(driver).key_down(Keys.CONTROL).click(a).key_up(Keys.CONTROL).perform()

ОБНОВЛЕНИЕ: Чтобы выйти из всплывающего окна, вы можете попробовать это:

driver.switch_to.default_content()
driver.find_element_by_xpath('//*[@id="ctl00_GenericPopupSizeable_InnerPopupControl_HCB-1"]/img').click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...