zoukankan      html  css  js  c++  java
  • Python WebDriver + Firefox 文件下载

    firefox可以通过 在地址栏输入:about:config 或about:aupport 来查看或修改配置信息。 

    这里有两种解决方式,

    1、设置自动保存下载

    如下图勾选:以后自动采用相同的动作处理此类文件

    这样下次在下载该类型的文件时就不会这样提醒了。

    如果想修改设置可以在 浏览器选项中进行修改

    如下图

     这样设置完成后,但是程序启动时打开的浏览器并没有按照这种配置打开。

     对比下图可以发现,通过webdriver打开的浏览器与手工打开的浏览器展示的不同,这是因为webdriver打开的浏览器没有按照浏览器设置的配置文件打开。如果想按照配置文件打开,在打开之前要先获取配置文件信息。

    加入代码如下: 

            profile =  webdriver.FirefoxProfile(r"C:UsersSkyyjAppDataRoamingMozillaFirefoxProfiles1rzh6139.default")
    
            self.driver = webdriver.Firefox(profile)

     2、第二种方法

    就是在代码中加入配置信息

    通过about:config

    通过%APPDATA%MozillaFirefoxProfiles找到默认配置  

    找到mimeTypes.rdf目录,用其它方式打开,查找你刚刚保存的文件类型

    mimeTypes.rdf 就存在上面 profile 的配置路径中

    C:UsersSkyyjAppDataRoamingMozillaFirefoxProfiles1rzh6139.default

    查找fileExtensions="xlsx"

    NC:value="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
    NC:editable="true"
    NC:fileExtensions="xlsx"
    NC:description="xlsx File">

    从文件中就可以得知我们需要的文件类型是什么

     代码如下:

            #profile =  webdriver.FirefoxProfile(r"C:UsersSkyyjAppDataRoamingMozillaFirefoxProfiles1rzh6139.default")
            profile = webdriver.FirefoxProfile()
    
            ##设置成0代表下载到浏览器默认下载路径;设置成2则可以保存到指定目录
            profile.set_preference("browser.download.folderList", 2)
            #这里设置与否不影响,没有发现有什么影响。
            #profile.set_preference("browser.download.manager.showWhenStarting", False)
            profile.set_preference("browser.download.dir", r"c:Down")
            profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
            #这里设置与否没有发现有什么影响
            #profile.set_preference("browser.helperApps.alwaysAsk.force", False);
            self.driver = webdriver.Firefox(profile)

    建议使用第二种,这样不需要设置浏览器,可移植性好。

  • 相关阅读:
    Python中的类(上)
    Django REST Framework API Guide 07
    Django REST Framework API Guide 06
    Django REST Framework API Guide 05
    Django REST Framework API Guide 04
    Django REST Framework API Guide 03
    Django REST Framework API Guide 02
    Django REST Framework API Guide 01
    Django 详解 信号Signal
    Django 详解 中间件Middleware
  • 原文地址:https://www.cnblogs.com/Skyyj/p/7103095.html
Copyright © 2011-2022 走看看