自动化测试-20.selenium之FireFox下载项配置

前言:

  当我们在使用Selenium运行自动化测试时,偶尔需要用到下载功能,但浏览器的下载可能会弹出下载窗口,或者下载路径不是我们想要保存的位置,所以在通过Selenium启动浏览器时需要做相关的设置,将使这些设置在启动的浏览器中生效果。
要素设置FireFox()配置项:
browser.download.folderList

设置成 0 代表下载到浏览器默认下载路径, 设置成 2 则可以保存到指定目录。
browser.download.dir
用于指定所下载文件的目录。 os.getcwd() 函数不需要传递参数, 用于返回当前的目录。
browser.helperApps.neverAsk.saveToDisk
指定要下载页面的 Content-type 值, “binary/octet-stream” 为文件的类型。下载的文件不同,这里的类型也会有所不一样。如果不清楚你下载的文件什么类型,请用Fiddler抓包。


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

 1 #coding:utf-8
 2 from selenium import webdriver
 3 from selenium.webdriver.common.action_chains import ActionChains
 4 from selenium.webdriver.support.select import Select
 5 import time,os,SendKeys
 6 
 7 def setFireFoxProfile():
 8     '''#配置Firefox:修改firefox_profile
 9     1. 配置保存文件的路径
10     2. 设置文件是否保存在默认下载文件夹中
11     3. 设置文件类型允许下载
12     '''
13     # 获取到火狐浏览器的配置选项
14     profile = webdriver.FirefoxProfile()
15     # 配置火狐浏览器的下载路径
16     profile.set_preference("browser.download.dir",os.getcwd()+'\\download')
17     # 设置成 0 代表下载到浏览器默认下载路径, 设置成 2 则可以保存到指定目录。
18     profile.set_preference("browser.download.folderList",2)
19     # 指定要下载页面的 Content-type 值, “binary/octet-stream” 为文件的类型
20     # 响应头中的Content-Type: application/x-zip-compressed(zip压缩包)     image/png(png图片)
21     profile.set_preference("browser.helperApps.neverAsk.saveToDisk","application/x-zip-compressed")
22     # 设置不弹出窗口
23     profile.set_preference("profile.default_content_settings.popups", 0);
24     #实例化浏览器webdriver
25     driver = webdriver.Firefox(firefox_profile=profile)
26     #设置全局等待时间
27     driver.implicitly_wait(10)
28     #最大浏览器窗口
29     driver.maximize_window()
30     return driver
31 
32 def loadAndDownload(driver):
33     '''点击下载
34     :param driver: 浏览器对象
35     :return: None
36     '''
37     # 打开bugfree主页(前置条件:已搭建bugfree)
38     driver.get(r'http://192.168.7.19:8080/bugfree')
39     driver.find_element_by_id('LoginForm_username').clear()
40     # 输入用户名
41     driver.find_element_by_id('LoginForm_username').send_keys('admin')
42     driver.find_element_by_id('LoginForm_password').clear()
43     # 输入密码
44     driver.find_element_by_id('LoginForm_password').send_keys('123456')
45     # 登录
46     driver.find_element_by_id('SubmitLoginBTN').click()
47     time.sleep(3)
48     #选择产品
49     ele = driver.find_element_by_id('product_name')
50     Select(ele).select_by_visible_text('Sample Product')
51     time.sleep(3)
52     #通过部分文本进行定位:  标签名[contains(.,'部分文本值')]
53     #d.find_element_by_xpath('td[contains(.,\'12\')]')
54     #ActionChains(d).click_and_hold(d.find_element_by_xpath('//td[contains(.,\'12\')]')).perform()
55     '''
56         contains:模糊查询
57         .,  :根据文本匹配
58         ../  :父节点
59         //td[contains(.,\'12\')]:  查找HTML页面上标签名为td的且文本包含12的元素
60     '''
61     # ../元素的父节点路径
62     driver.find_element_by_xpath('//td[contains(.,\'12\')]/../td[5]/span/a').click()
63     # 切换到bug详情页面
64     driver.switch_to.window(driver.window_handles[-1])
65     # 定位到zip文件,并点击
66     driver.find_element_by_css_selector('#file3>a').click()
67 
68 
69 if __name__ == '__main__':
70     # 调用配置并返回浏览器
71     driver = setFireFoxProfile()
72     # 调用点击下载
73     loadAndDownload(driver)

 

 

posted @ 2018-05-26 15:22  JustLittle  阅读(1093)  评论(0编辑  收藏  举报