Selenium:自动下载

时间:2015-11-16 07:47:04

标签: windows python-2.7 selenium selenium-webdriver

我在Python版本中使用了Selenium。 但我陷入了最后一步。我可以打开浏览器,登录并打开下载链接,但文件不会自动下载。

我已阅读文档,从技术上讲,我只需要使用正确的值设置fp.set_preference("browser.helperApps.neverAsk.saveToDisk","..."),但仍然无效。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import os

fp = webdriver.FirefoxProfile()

fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", os.getcwd())
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/EDI-X12, application/EDIFACT, application/javascript, application/octet-stream, application/ogg, application/pdf, application/xhtml+xml, application/x-shockwave-flash, application/json, application/xml, application/zip, audio/mpeg, audio/x-ms-wma, audio/vnd.rn-realaudio, audio/x-wav, image/gif, image/jpeg, image/png, image/tiff, image/vnd.microsoft.icon, image/vnd.djvu, image/svg+xml, multipart/mixed, multipart/alternative, multipart/related, text/css, text/csv, text/html, text/javascript(obsolete), text/plain, text/xml, video/mpeg, video/mp4, video/quicktime, video/x-ms-wmv, video/x-msvideo, video/x-flv, video/webm, application/vnd.oasis.opendocument.text, application/vnd.oasis.opendocument.spreadsheet, application/vnd.oasis.opendocument.presentation, application/vnd.oasis.opendocument.graphics, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-powerpoint, application/vnd.openxmlformats-officedocument.presentationml.presentation, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.mozilla.xul+xml")

browser = webdriver.Firefox(firefox_profile=fp)
browser.get('https://www4.webcas.net/mail02/menu')


browser.find_element_by_xpath("//input[@type='text']").send_keys('login')
browser.find_element_by_xpath("//input[@type='password']").send_keys('pass' + Keys.RETURN)


time.sleep(2) # delays for 2 seconds
browser.get('https://www4.webcas.net/mail02/fm/onetime-ticket?to=enquete')
time.sleep(2) # delays for 2 seconds
browser.get('https://www4.webcas.net/form02/operator/formulator/download?enquete_id=4770')
time.sleep(2) # delays for 2 seconds

最后,我总是有firefox弹出窗口“你想打开还是保存”。 DL pic

我有什么问题吗?

2 个答案:

答案 0 :(得分:0)

我找到了解决方案。

方法是正确的,但参数不正确。 我不得不检查文件 C:\用户\用户\应用程序数据\漫游\ Mozilla的\火狐\概况\ tofzlgfm.default \ mimeTypes.rdf

我在哪里找到以下行

  <RDF:Description RDF:about="urn:mimetype:text/*"
                   NC:value="text/*"
                   NC:editable="true"
                   NC:fileExtensions="zip"
                   NC:description="WinZip File">
    <NC:handlerProp RDF:resource="urn:mimetype:handler:text/*"/>
  </RDF:Description>

所以,我刚修改了我的行,将text / *添加到其他值

我希望这对某人有用。

答案 1 :(得分:0)

我遇到了与pdf文件相同的问题,为了解决方法,我还在配置文件中添加了以下内容

fp.set_preference("browser.helperApps.neverAsk.openFile", "application/pdf")
fp.set_preference("pdfjs.disabled", True)

因此,在您的情况下,您应该更改文件类型以匹配您想要的文件类型,并且可以忽略第二行。希望这会有所帮助,欢呼。

加分点:要提高性能,请使用

禁用图片加载
fp.set_preference("permissions.default.image", 2)