【发布时间】:2019-07-12 12:50:59
【问题描述】:
对象:
自动执行以下流程。 1. 打开特定网页,在搜索框中填写信息,提交。 2. 从搜索结果中点击第一个结果并下载 PDF
已完成的工作:
为了达到这个对象,我已经编写了一个代码作为第一步。该代码工作正常,但打开下载弹出窗口。直到我无法摆脱它,我无法进一步自动化该过程。搜索了很多解决方案。但没有一个奏效。
例如,This 解决方案对我来说很难理解,我认为它更多的是与 Java 而非 Python 相关。我按照许多人的建议更改了火狐的个人资料。 This 剂量匹配虽然不完全相同。我没有尝试过,因为没有太大区别。甚至this 也谈到了更改火狐的配置文件,但这不起作用。
我的代码如下
import selenium.webdriver as webdriver
import selenium.webdriver.support.ui as ui
from time import sleep
import time
import wget
from wget import download
import os
#set firefox Profile
profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.folderList', 2)
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference("browser.download.manager.showAlertOnComplete", False)
profile.set_preference('browser.download.dir', os.getcwd())
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/pdf')
#set variable driver to open firefox
driver = webdriver.Firefox(profile)
#set variable webpage to open the expected URL
webpage = r"https://documents.un.org/prod/ods.nsf/home.xsp" # edit me
#set variable to enter in search box
searchterm = "A/HRC/41/23" # edit me
#open the webpage with get command
driver.get(webpage)
#find the element "symbol", insert data and click submit.
symbolBox = driver.find_element_by_id("view:_id1:_id2:txtSymbol")
symbolBox.send_keys(searchterm)
submit = driver.find_element_by_id("view:_id1:_id2:btnRefine")
submit.click()
#list of search results open up and 1st occarance is clicked by coppying its id element
downloadPage = driver.find_element_by_id("view:_id1:_id2:cbMain:_id135:rptResults:0:linkURL")
downloadPage.click()
#change windiows. with sleep time
window_before = driver.window_handles[0]
window_after = driver.window_handles[1]
time.sleep(10)
driver.switch_to.window(window_after)
#the actual download of the pdf page
theDownload = driver.find_element_by_id("download")
theDownload.click()
请指导。
【问题讨论】:
标签: python-3.x selenium firefox selenium-webdriver download