对象:
自动执行以下过程。 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()
请指导。
答案 0 :(得分:0)
“选择”弹出窗口与其他窗口/选项卡不同,只是HTML弹出窗口。之所以可以这样说是因为,如果右键单击该对话框,将看到普通的上下文菜单。您只需要选择“语言”和“文件类型”,然后单击“下载所选内容”按钮即可。