美文网首页
selenium学习笔记15——封装浏览器初始化方法

selenium学习笔记15——封装浏览器初始化方法

作者: 满船清梦压星河ya_ | 来源:发表于2018-12-11 17:48 被阅读0次

浏览器初始化写在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

相关文章

网友评论

      本文标题:selenium学习笔记15——封装浏览器初始化方法

      本文链接:https://www.haomeiwen.com/subject/xgpehqtx.html