前言:

  当我们在使用Selenium运行自动化测试时,偶尔需要用到下载功能,但浏览器的下载可能会弹出下载窗口,或者下载路径不是我们想要保存的位置,所以在通过Selenium启动浏览器时需要做相关的设置,将使这些设置在启动的浏览器中生效果。
要素设置FireFox()配置项:
browser.download.folderList
设置成 0 代表下载到浏览器默认下载路径, 设置成 2 则可以保存到指定目录。
browser.download.dir
用于指定所下载文件的目录。 os.getcwd() 函数不需要传递参数, 用于返回当前的目录。
browser.helperApps.neverAsk.saveToDisk
指定要下载页面的 Content-type 值, “binary/octet-stream” 为文件的类型。下载的文件不同,这里的类型也会有所不一样。如果不清楚你下载的文件什么类型,请用Fiddler抓包。

附上代码(用于点击下载bugFree内的附件)

 #coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
import time,os,SendKeys def setFireFoxProfile():
'''#配置Firefox:修改firefox_profile
1. 配置保存文件的路径
2. 设置文件是否保存在默认下载文件夹中
3. 设置文件类型允许下载
'''
# 获取到火狐浏览器的配置选项
profile = webdriver.FirefoxProfile()
# 配置火狐浏览器的下载路径
profile.set_preference("browser.download.dir",os.getcwd()+'\\download')
# 设置成 0 代表下载到浏览器默认下载路径, 设置成 2 则可以保存到指定目录。
profile.set_preference("browser.download.folderList",2)
# 指定要下载页面的 Content-type 值, “binary/octet-stream” 为文件的类型
# 响应头中的Content-Type: application/x-zip-compressed(zip压缩包) image/png(png图片)
profile.set_preference("browser.helperApps.neverAsk.saveToDisk","application/x-zip-compressed")
# 设置不弹出窗口
profile.set_preference("profile.default_content_settings.popups", 0);
#实例化浏览器webdriver
driver = webdriver.Firefox(firefox_profile=profile)
#设置全局等待时间
driver.implicitly_wait(10)
#最大浏览器窗口
driver.maximize_window()
return driver def loadAndDownload(driver):
'''点击下载
:param driver: 浏览器对象
:return: None
'''
# 打开bugfree主页(前置条件:已搭建bugfree)
driver.get(r'http://192.168.7.19:8080/bugfree')
driver.find_element_by_id('LoginForm_username').clear()
# 输入用户名
driver.find_element_by_id('LoginForm_username').send_keys('admin')
driver.find_element_by_id('LoginForm_password').clear()
# 输入密码
driver.find_element_by_id('LoginForm_password').send_keys('')
# 登录
driver.find_element_by_id('SubmitLoginBTN').click()
time.sleep(3)
#选择产品
ele = driver.find_element_by_id('product_name')
Select(ele).select_by_visible_text('Sample Product')
time.sleep(3)
#通过部分文本进行定位: 标签名[contains(.,'部分文本值')]
#d.find_element_by_xpath('td[contains(.,\'12\')]')
#ActionChains(d).click_and_hold(d.find_element_by_xpath('//td[contains(.,\'12\')]')).perform()
'''
contains:模糊查询
., :根据文本匹配
../ :父节点
//td[contains(.,\'12\')]: 查找HTML页面上标签名为td的且文本包含12的元素
'''
# ../元素的父节点路径
driver.find_element_by_xpath('//td[contains(.,\'12\')]/../td[5]/span/a').click()
# 切换到bug详情页面
driver.switch_to.window(driver.window_handles[-1])
# 定位到zip文件,并点击
driver.find_element_by_css_selector('#file3>a').click() if __name__ == '__main__':
# 调用配置并返回浏览器
driver = setFireFoxProfile()
# 调用点击下载
loadAndDownload(driver)

自动化测试-20.selenium之FireFox下载项配置的更多相关文章

  1. 自动化测试-20.selenium常用JS代码执行

    前言: 在工作中有些控件定位不到,需要操作,使用JS代码去修改或者操作达到selenium不能做的操作. 1.Web界面的滑动 1 #coding:utf-8 2 from selenium impo ...

  2. selenium下firefox自动下载配置及问题

    在做自动化测试时,需要从网页上下载相关的文件到指定的目录,一直未能实现 网上正好有个blog文章介绍了如何下载 直接上代码: from selenium import webdriver import ...

  3. 自动化测试-14.selenium加载FireFox配置

    前言 有小伙伴在用脚本启动浏览器时候发现原来下载的插件不见了,无法用firebug在打开的页面上继续定位页面元素,调试起来不方便 . 加载浏览器配置,需要用FirefoxProfile(profile ...

  4. Selenium+Python:下载文件(Firefox 和 Chrome)

    引自  https://blog.csdn.net/Momorrine/article/details/79794146 1.      环境 操作系统 Win10 IDE Eclipse (Oxyg ...

  5. firefox插件-自动化测试工具-selenium IDE

    教程:http://www.yiibai.com/selenium/selenium_download_ide.html 下载地址:https://addons.mozilla.org/en-US/f ...

  6. selenium自动化测试资源整理(含所有版本chrome、chromedriver、firefox下载链接)

    今天把手头有的一些关于selenium测试的资源整理了一下,分享出来. 1. 所有版本chrome下载 是不是很难找到老版本的chrome?博主收集了几个下载chrome老版本的网站,其中哪个下载的是 ...

  7. web自动化测试python+selenium学习总结----selenium安装、浏览器驱动下载

    一.安装selenium 命令安装selenium库 :pip  install -U selenium 查看selenium是否安装成功:pip list PS:有时会有异常,安装失败,可以尝试去s ...

  8. 篇5 python自动化测试应用-Selenium环境篇

    篇5                            python自动化测试应用-Selenium环境篇 --lamecho 1.1概要 大家好!我是lamecho(辣么丑),从本篇开始我将开始 ...

  9. AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(三):配置ActiveXForm运行环境

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

随机推荐

  1. git merge和git rebase的区别

    git merge是用来合并两个分支的.# 将b分支合并到当前分支git merge b git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作.例如,假设我 们有 ...

  2. 可以进行SHA-1,SHA-224,SHA-256,SHA-384,SHA-512五种算法签名的工具类,以及简单说明

    import java.security.MessageDigest; public class SignatureSHA { public static String signSHA(String ...

  3. 1003. Check If Word Is Valid After Substitutions Medium检查替换后的词是否有效

    网址:https://leetcode.com/problems/check-if-word-is-valid-after-substitutions/ 参考:https://leetcode.com ...

  4. 一、JDBC

    一.CRUD(增删改查) C:增加Create R查询(Retrieve) U更新(Update) D删除(Delete) 在JDBC中,增加,删除,修改,操作都基本一样,只是传递不同SQL语句,最后 ...

  5. ifcfg-eth配置详解(CentOS6)

    1.基本配置形式 1.1 动态IP基本配置 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=dhcp DEVICE--网卡名,要与ifcfg-ethx中的 ...

  6. anglar cli的 rxjs_1.of is not a function

    按照官网敲例子遇到 rxjs_1.of is not a function import { Observable,of } from 'rxjs'; 改为 import { Observable} ...

  7. SPA单页面应用

    什么是单页应用 单页Web应用,就是只有一张Web页面的应用.浏览器一开始会加载必需的HTML.CSS和JavaScript,之后所有的操作都在这张页面完成,这一切都由JavaScript来控制.因此 ...

  8. laravel 连表查询数据库

    $this->model ->select($field) ->leftJoin('b', 'b.cid', '=', 'a.id') ->orderBy("a.ad ...

  9. U帮忙U盘装系统工具使用教程

    在用U盘装系统时首先我们需要了解一下U帮忙U盘启动盘的制作以及BIOS设置U盘启动和U盘装系统步骤后才能让操作更顺利的完成,下面就来说说U帮忙U盘装系统工具使用教程,希望对大家有所帮助! 如果您不了解 ...

  10. day038 navicat pymysql

    今日内容: 1.navicat 2.pymysql 1.navicat 需要掌握 #1. 测试+链接数据库 #2. 新建库 #3. 新建表,新增字段+类型+约束 #4. 设计表:外键 #5. 新建查询 ...