浏览器初始化写在setUp()中,每个.py文件中都写一次初始化浏览器的方法,如果想要修改,必须每个.py文件都修改一次,如果有30个.py文件,修改太麻烦。
所以封装一个浏览器初始化的方法,在setUp()中直接调用该方法。
新建浏览器引擎模块
新建浏览器引模块 selectbrowser.py
# -*- coding: utf-8 -*-
# @Time : 2018/12/7 11:18
# @Author : 银河以北
# @Email : smilegks@163.com
# @Introduction : XXX
from selenium import webdriver
import re
class SelectBrowser(object):
'''
定义一个浏览器引擎类,根据传入参数的不同,控制初始化不同的浏览器
'''
def __init__(self, driver):
self.driver = driver
browser_type = "firefoxDownloadHeadless" # maybe chrome, firefox, ie...
downPath = "d:\\" # 设置文件默认下载位置
def setHeadless(self):
'''
设置firefox浏览器headless模式
:return:
'''
# 设置无头模式
options = webdriver.FirefoxOptions()
options.add_argument('-headless')
return options
def setDownloadPath(self):
'''
设置firefox浏览器下载exe文件到指定位置
:return:
'''
# 设置Firefox下载exe格式的文件,不弹出下载窗,直接下载到指定路径
profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.dir', self.downPath)
profile.set_preference('browser.download.folderList', 2)
profile.set_preference('browser.download.manager.showWhenStarting', False)
# 参数 application/octet-stream 表示下载exe文件无需弹窗确认,直接下载
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/octet-stream')
return profile
def selectBrowser(self):
'''
通过if语句,控制启用不同的浏览器
'''
if re.search(self.browser_type, 'chrome', re.IGNORECASE): # re.search()判断string是否一样, re.IGNORECASE忽略大小写
driver = webdriver.Chrome()
elif re.search(self.browser_type, 'firefox', re.IGNORECASE):
driver = webdriver.Firefox()
elif re.search(self.browser_type, 'ie', re.IGNORECASE):
driver = webdriver.Ie()
# 初始化火狐浏览器无头模式
elif re.search(self.browser_type, 'firefoxHeadless', re.IGNORECASE):
driver = webdriver.Firefox(options=self.setHeadless())
# 初始化火狐浏览器下载文件到指定位置
elif re.search(self.browser_type, 'firefoxDownload', re.IGNORECASE):
driver = webdriver.Firefox(firefox_profile=self.setDownloadPath())
# 初始化火狐浏览器无头模式,下载文件到指定位置
elif re.search(self.browser_type, 'firefoxDownloadHeadless', re.IGNORECASE):
driver = webdriver.Firefox(firefox_profile=self.setDownloadPath(),options=self.setHeadless())
else:
print("!!!!!!!!!!!driver初始化失败!!!!!!!!!!!")
driver.maximize_window()
driver.implicitly_wait(10)
return driver
调用封装的浏览器初始化方法
# -*- coding: utf-8 -*-
# @Time : 2018/7/23 11:07
# @Author : 银河以北
# @Email : smilegks@163.com
# @Introduction : XXX
import unittest
from selectbrowser import SelectBrowser
class TestBaidu(unittest.TestCase):
def setUp(self):
browserengine = SelectBrowser(self)
self.driver = browserengine.selectBrowser()
self.base_url = "https://www.baidu.com/"
def test_case1(self):
pass