美文网首页
ChromeDriver简介

ChromeDriver简介

作者: Domibaba | 来源:发表于2023-08-18 23:56 被阅读0次

    ChromeDriver简介

    ChromeDriver是一个用于自动化测试浏览器的开源工具,它提供了web页面导航、用户输入、JavaScript执行等多种能力。ChromeDriver是基于W3CWebDriver标准的一个实现,可用于在AndroidPC桌面(MacLinuxWindowsChromeOS)对Chrome浏览器进行自动化测试。

    简而言之就是,可以通过多种语言编写客户端自动化脚本,通过webDriver规范定义的标准发送到ChromeDriverChromeDriver按照客户端的执行执行对浏览器的控制,执行结果或获取的信息再返回给客户端,从而实现自动化测试。

    ChromeDriverChrome浏览器之间有版本匹配要求,具体可以参考这里

    本文使用的环境信息:

    名称 版本信息
    操作系统 Ubuntu 22.04
    JDK 20.0.1
    Android SDK 33
    AVD(模拟器) 模拟器名称testPhone
    Python 3.10.12

    1、如何使用WebDriverPC桌面测试Chrome

    1.1、在编写自动化测试脚本之前,需要提前准备

    • 已经安装好Chrome浏览器,并下载对应的ChromeDriver,由于者两者有版本匹配要求,因此推荐从这里选择版本下载,对于每个版本它会同时提供ChromeChromeDriver,不用担心匹配问题。本文下载的版本是114.0.5731.1,下载chrome-linux.zipchromedriver_linux64.zip两个包,并假设它们解压之后放置的路径分别为/home/chrometest/chrome//home/chrometest/chromedriver/下。

    1.2、编写测试脚本

    本文的例子客户端脚本、Chrome浏览器和ChromeDriver都位于一台机器上。

    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.chrome.options import Options
    import time
    
    def test_chromedriver_for_pc():
    
     # 启动chromedriver
     chromedriver_path = "/home/chrometest/chromedriver/chromedriver" # 指定ChromeDriver的路径
     service = Service(chromedriver_path)
     service.start() 
    
     # 建立会话
     options = Options()
     options.binary_location = "/home/chrometest/chrome/chrome" # 指定Chrome浏览器的路径
     driver = webdriver.Remote(service.service_url, options=options)
    
     driver.get('https://www.linux.org/')
     time.sleep(3)
    
     driver.quit()
    

    2、如何使用WebDriverAndroid系统测试Chrome

    2.1、在编写自动化测试脚本之前,需要提前准备

    • 搭建Android自动化测试环境,请参考Appium环境搭建

    • 注意ChromeDriver版本要与Android设备上的Chrome浏览器版本匹配。具体请参考version-selection

    • 执行如下命令:

      启动ADB
      adb start-server
      
      如果是早期的版本( Chrome 33 版本及之前),需要执行如下命令获取路径读写权限
      adb shell su -c chmod 777 /data/local
    

    2.2、编写测试脚本

     def test_chromedrvier_for_android():
     options = webdriver.ChromeOptions()
     options.add_experimental_option('androidPackage', 'com.android.chrome') # 打开Android设备上的Chrome浏览器
    
     chromedriver_path = "/home/chrometest/chromedriver/chromedriver"
     service = Service(chromedriver_path)
     driver = webdriver.Chrome(service=service, options=options)
     driver.get('https://www.linux.org/')
    
     driver.quit()
    

    3、能力参数和选项介绍

    能力参数用于定制和配置一个与ChromeDriver的连接会话,根据客户端实现语言不一样,提供的API接口可能有差异,但是基本上都可以通过如下两种方式实现能力参数的设置:

    • ChromeOptions类,使用实例(Python语言)
     def test_chromedriver_options():
        options = webdriver.ChromeOptions()
        options.add_extension("extension.crx")
        options.set_capability("platformName", "Linux")
       
        # 命令行参数
        # 启动Chrome时就最大化
        options.add_argument("start-maximized")
        # 指定Chrome位置
        options.binary_location = "/path/to/chrome"
       
        dirver = webdriver.Chrome(options=options)
    
    • DesiredCapabilities
    def test_chromedriver_desiredcapabilities():
     desire = webdriver.DesiredCapabilities.CHROME.copy()
     desire['platformName'] = "Linux"
     driver = webdriver.Remote(desired_capabilities=desire)
    

    W3CWebDriver标准能力参数见WebDriver简介,接下来介绍一些ChromeDriver支持的Chrome浏览器独有的能力参数定义。

    • 如下支持的能力参数在Python中都可以在ChromeOptions类中进行添加(部分能力参数最终存在以`goog:chromeOptions"为键的字典中)
    能力名称 类型 默认值 具体描述 对应PythonAPI接口举例
    args string列表 启动Chrome时候传入的命令行参数,参数和值之间使用=连接(例如['start-maximized', 'user-data-dir=/tmp/temp_profile']),支持的参数列表可以参考这里 options = webdriver.ChromeOptions() options.add_argument("start-maximized")
    binary string Chrome可执行文件的路径(在MacOs上,这个路径必须指向真实的二进制文件,而不是app options = webdriver.ChromeOptions() options.binary_location = "/path/to/chrome"
    extensions string列表 启动Chrome时需要下载的扩展,列表中的每一项都是基于base64编码打包的Chrome扩展(.crx)。 options = webdriver.ChromeOptions() options.add_extension("extension.crx")
    localState 字典 包含首选项及其值的字典,这些选项应用到用户数据文件夹下的本地状态文件。 options = webdriver.ChromeOptions() options.add_experimental_option("localState", {"key":"value"})
    prefs 字典 包含首选项及其值的字典,这些选项只应用于使用中的用户属性文件。 options = webdriver.ChromeOptions() options.add_experimental_option("prefs", {"key":"value"})
    detach boolean false 如果该值为false,当ChromeDriver退出时,不管会话是否关闭,Chrome都会终止。如果设置为true,那么Chrome只会在会话关闭时终止。注意:如果设置为true,会话未关闭的情况下,ChromeDriver无法清理临时用户数据目录因为Chrome还在运行。 options = webdriver.ChromeOptions() options.add_experimental_option('detach', True)
    debuggerAddress string Chrome调试服务器地址,格式为<hostname/ip:port>,例如127.0.0.1:38947 options = webdriver.ChromeOptions() options.debugger_address = "127.0.0.1:38947"
    excludeSwitches string列表 排除启动ChromeChromeDriver默认传递的开关列表。开关不需要加前缀-- options = webdriver.ChromeOptions() options.add_experimental_option("excludeSwitches", "switches")
    minidumpPath string Chromedump文件路径(仅在Linux下支持)。 options = webdriver.ChromeOptions() options.add_experimental_option("minidumpPath", "/path/to/dumpfile")
    mobileEmulation 字典 指定模拟器相关的信息,包含deviceNamedeviceMetricsuserAgent值的字典。 options = webdriver.ChromeOptions() options.add_experimental_option("mobileEmulation", {"deviceName" : "emulator-5554"})
    perfLoggingPrefs 字典 指定日志选项性能,具体取值见下表。 options = webdriver.ChromeOptions() options.add_experimental_option("perfLoggingPrefs", {"enableNetwork" : True})
    windowTypes string列表 可能出现在窗口处理中的窗口类型列表,例如,为了访问<webview>元素,把webview加入到该列表中。 options = webdriver.ChromeOptions() options.add_experimental_option("windowTypes", ["webview"])

    perfLoggingPrefs字典的取值:

    力名称 类型 默认值 具体描述
    enableNetwork boolean true 是否从网络域收集事件。
    enablePage boolean true 是否从页面域收集事件。
    traceCategories string 指定Chrome跟踪项中的的跟踪事件,是以分号分隔的字符串。
    bufferUsageReportingInterval 非负整数 1000 DevTools跟踪缓冲区使用事件请求间隔的毫秒数。例如,如果是1000,那么DevTools将每秒报告一次跟踪缓冲区的使用情况。如果缓冲区使用率为100%,则会发出警告。

    参考链接

    1. ChromeDriver官方介绍链接

    相关文章

      网友评论

          本文标题:ChromeDriver简介

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