自动化测试框架Python+selenium+unittest系列 之 WebDriver浏览器驱动(Python)

作者:cai.ruiying [ZSK]

前言:Python+selenium+unittest

  在介绍WebDriver浏览器封装方法之前,先简单介绍自动化测试框架Python+unittest+selenium。selenium 是一个用于Web应用程序测试的开源自自动化工具。selenium测试直接运行在浏览器中,模拟真正的用户在操作。selenium具有兼容性好的特性,不管是操作系统、还是浏览器、还是脚本编程语言,它都能覆盖主流,堪称“万能”工具,因此很受用户欢迎。unittest是一款Python自带的测试框架,使用简单,与常见的测试框架一样,使用套件、组件实现自动化测试封装。这里也简单给大家阐述环境搭建:

  (1)Python建议大家使用Python3,可以通过官方地址下载安装,官方下载地址:https://www.python.org/downloads/,再添加环境变量“path”-“Python安装路径”即可;

  (2)selenium安装,安装Python完成后,可以使用pip直接安装selenium,cmd→pip install selenium;

  (3)unittest,由于它是Python自带的测试框架,我们使用时只需要直接写入代码“import unittest”即可。 

  WebDriver是selenium的核心组件,通过浏览器驱动driver来驱动浏览器,执行测试脚本。在我们日常脚本的编写过程中,不同的系统可能需要不同的浏览器来执行,不同的浏览器也有不同的配置方法,我们通过封装了浏览器驱动方法,实现一个统一的浏览器驱动方法。

  《自动化测试框架Python+selenium+unittest》将为大家呈现一个框架系列讲解,陆续为大家介绍Web UI自动化测试常用方法的封装及使用。 

  本篇是通过自己对浏览器驱动的经验,为大家梳理三大主流浏览器的WebDriver驱动方法,及浏览器驱动注意事项:Chrome、Firefox、IE/Edge。包括:浏览器驱动的选用、浏览器驱动方法编写、驱动方法调用。下面按顺序为大家介绍。

一、Chrome

  Chrome的驱动是chromedriver.exe。chromedriver不严格区分32/64位,对应浏览器版本、系统版本即可。
  较高版本(Chrome70以后)Chrome与chromedriver版本号一致,根据Chrome大版本下载即可,若一个Chrome对应多个chromedriver可根据详细版本号或时间顺序对应查找。如下图:

 

  低版本的Chrome,Chrome版本号与chromedriver版本号不同,对应下表查找:

  chromedrivr参考下载地址:http://npm.taobao.org/mirrors/chromedriver/。

二、Firefox

  Firefox的驱动是geckodriver.exe。Firefox需要匹配Selenium、Firefox版本,Selenium2内置驱动向前支持默认路径安装的Firefox。Selenium3以上版本Firefox47向后支持,但目前没有严格的版本对照,但区分32/64位,推荐大家根据浏览器版本时间、geckodriver版本时间,对照下载。如下图:

  geckodriver参考下载地址:http://npm.taobao.org/mirrors/geckodriver/。

三、IE/Edge

  IE的驱动是IEDriverServer.exe。IEDriverServer版本与Selenium版本对应,注意区分到详细版本,根据Selenium版本下载,区分32/64位。另外需要注意的是,需要在浏览器的Internet选项中的安全页里有4个安全选项,Internet、本地Internet、受信任的站点、受限制的站点,这4个里面都有一个启用保护模式,都需要勾选上。如下图:

 

  IEDriverServer参考下载地址:http://selenium-release.storage.googleapis.com/index.html。

  Edge的驱动是MicrosoftWebDriver.exe(Legacy)/edgedriver.exe。旧版Edge18及以上会自动提供WebDriver更新。旧版Edge17及以下,根据Edge版本对应MicrosoftWebDriver版本下载。旧版Edge在如下图:

  注意区分新/旧版本MicrosoftWebDriver下载,如下图:

  MicrosoftWebDriver/edgedriver参考下载地址:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/。

四、浏览器驱动封装实例(Python)

from selenium import webdriver


class browser_Wrapper(object):

    def browser_wrapper(self, item):
        '''
        启动浏览器
        :param item:Chrome/Firefox/IE/Edge
        :return:
        '''
        # 本方法中的driver使用环节变量配置,将对应版本driver放置Python安装路径中即可
        if item == "Chrome":
            print("===为您启动Chrome...")
            # 配置Chrome启动项
            self.option = webdriver.ChromeOptions()
            # 屏蔽自动化受控提示 && 开发者提示
            self.option.add_experimental_option("excludeSwitches", ['enable-automation', 'load-extension'])
            # 屏蔽'保存密码'提示框
            self.prefs = {}
            self.prefs["credentials_enable_service"] = False
            self.prefs["profile.password_manager_enabled"] = False
            self.option.add_experimental_option("prefs", self.prefs)
            # 启动谷歌浏览器
            webdriver.Chrome(options=self.option)
            # 线程等待2秒
        elif item == "Firefox":
            # 火狐浏览器无需进行配置,注意这里的火狐是安装在默认路径的,自定义路径安装的需要配置火狐的绝对路径
            print("===为您启动Firefox...")
            # 启动火狐浏览器
            self.driver = webdriver.Firefox()
            # 线程等待2秒
        elif item == "IE":
            print("===为您启动IE...")
            # 注意iedriver版本需要与selenium版本对应
            self.driver = webdriver.Ie()
        elif item == "Edge":
            print("===为您启动Edge...")
            # 注意与Edge版本匹配
            self.driver = webdriver.Edge()
        else:
            print("===未找到您的浏览器配置,请使用其他浏览器()...")


if __name__ == '__main__':
    browser = browser_Wrapper()

# 调用启动浏览器方法browser_wrapper(),入参为:"Chrome"/"Firefox"/"IE"/"Edge"
browser.browser_wrapper("Chrome")
原文地址:https://www.cnblogs.com/ustcinfo-qc/p/13879585.html