在介绍WebDriver浏览器封装方法之前,先简单介绍自动化测试框架Python+unittest+selenium。selenium 是一个用于Web应用程序测试的开源自自动化工具。selenium测试直接运行在浏览器中,模拟真正的用户在操作。selenium具有兼容性好的特性,不管是操作系统、还是浏览器、还是脚本编程语言,它都能覆盖主流,堪称“万能”工具,因此很受用户欢迎。unittest是一款Python自带的测试框架,使用简单,与常见的测试框架一样,使用套件、组件实现自动化测试封装。这里也简单给大家阐述环境搭建:
(1)Python建议大家使用Python3,可以通过官方地址下载安装,官方下载地址:,再添加环境变量“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不严格区分32/64位,对应浏览器版本、系统版本即可。
较高版本(Chrome70以后)Chrome与chromedriver版本号一致,根据Chrome大版本下载即可,若一个Chrome对应多个chromedriver可根据详细版本号或时间顺序对应查找。如下图:
低版本的Chrome,Chrome版本号与chromedriver版本号不同,对应下表查找:
chromedrivr参考下载地址:。
二、Firefox
Firefox的驱动是。Firefox需要匹配Selenium、Firefox版本,Selenium2内置驱动向前支持默认路径安装的Firefox。Selenium3以上版本Firefox47向后支持,但目前没有严格的版本对照,但区分32/64位,推荐大家根据浏览器版本时间、geckodriver版本时间,对照下载。如下图:
geckodriver参考下载地址:。
三、IE/Edge
IE的驱动是。IEDriverServer版本与Selenium版本对应,注意区分到详细版本,根据Selenium版本下载,区分32/64位。另外需要注意的是,需要在浏览器的Internet选项中的安全页里有4个安全选项,Internet、本地Internet、受信任的站点、受限制的站点,这4个里面都有一个启用保护模式,都需要勾选上。如下图:
IEDriverServer参考下载地址:。
Edge的驱动是(Legacy)/。旧版Edge18及以上会自动提供WebDriver更新。旧版Edge17及以下,根据Edge版本对应MicrosoftWebDriver版本下载。旧版Edge在如下图:
注意区分新/旧版本MicrosoftWebDriver下载,如下图:
MicrosoftWebDriver/edgedriver参考下载地址:。
四、浏览器驱动封装实例(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启动项
= Options()
# 屏蔽自动化受控提示 && 开发者提示
("excludeSwitches", ['enable-automation', 'load-extension'])
# 屏蔽'保存密码'提示框
= {}
["credentials_enable_service"] = False
[""] = False
("prefs", )
# 启动谷歌浏览器
(options=)
# 线程等待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"
("Chrome")