【问题标题】:Avoid download pop up in python3 using serelinum Download pdf使用serelinum避免在python3中弹出下载下载pdf
【发布时间】: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


    【解决方案1】:

    “选择”弹出窗口不是一个不同的窗口/选项卡,它只是一个 HTML 弹出窗口。您可以告诉这一点,因为如果您右键单击对话框,您将看到正常的上下文菜单。您只需选择“语言”和“文件类型”,然后单击“下载所选”按钮。

    【讨论】:

    • 您有获取窗口句柄的代码,例如window_before。弹出的对话框不是一个新窗口(在浏览器方面),它只是一个 HTML 对话框。您可以像对待页面上的所有其他 HTML 一样对待它。我假设这就是您所说的您无法处理的“下载弹出窗口”……至少当我在网站上手动遵循您的代码时,我看到的是这种情况。
    • 同意。这是来自 OS 的 HTML 对话。问题是,出现此框询问我是保存 pdf 文件还是打开它。我想跳过这个框直接保存文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 2020-11-04
    • 2013-05-01
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多