zoukankan      html  css  js  c++  java
  • 自动化测试框架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")
  • 相关阅读:
    Samba 4.0 RC3 发布
    SymmetricDS 3.1.7 发布,数据同步和复制
    Express.js 3.0 发布,Node.js 的高性能封装
    GIFLIB 5.0.1 发布,C语言的GIF处理库
    jQuery UI 1.9.1 发布
    SVN Access Manager 0.5.5.14 发布 SVN 管理工具
    DynamicReports 3.0.3 发布 Java 报表工具
    HttpComponents HttpClient 4.2.2 GA 发布
    AppCan 2.0 正式发布,推移动应用云服务
    Ruby 2.0 的新功能已经冻结
  • 原文地址:https://www.cnblogs.com/ustcinfo-qc/p/13879585.html
Copyright © 2011-2022 走看看