大数跨境
0
0

UI自动化常用库介绍及示例(二)

UI自动化常用库介绍及示例(二) AllTests软件测试
2025-12-01
1
1、TestComplete

1.1 简介

TestCompleteSmartBear公司推出的企业级UI自动化测试工具,支持WindowsWeb、移动(iOS/Android)多平台应用测试,涵盖原生应用、混合应用、Web应用等类型。它融合可视化录制与多语言脚本编写能力,兼容PythonJavaScript等语言,是企业级自动化测试项目的重要选择。


1.2 特点

  • 多技术栈兼容,支持.NETJavaWPFHTML5ReactVue等主流开发技术,无需为不同技术栈单独选型。

  • 智能对象识别引擎,可稳定识别动态变化UI元素,通过内在特征定位,降低脚本维护成本。

  • 可视化编辑器与脚本编辑器结合,非技术人员可快速创建用例,高级用户能编写复杂逻辑。

  • 内置丰富测试报告与分析功能,支持与JenkinsJIRADevOps工具集成,实现测试流程闭环。


1.3 安装

TestComplete为商业化工具,需从SmartBear官网下载Windows版本,提供免费试用期限。安装时配置许可证信息,试用版可体验完整功能,正式使用需购买商业许可证。

官网地址:

https://smartbear.com/product/testcomplete/


1.4 示例:Windows计算器减法操作(Python脚本)

注:需在TestComplete中创建Python项目,通过对象浏览器定位计算器控件后编写脚本。

# 公众号:AllTests软件测试
import sys
import os
sys.path.append(os.path.abspath(r"TestComplete安装路径\Bin\Extensions\Python"))
import TestComplete as tc

def calculator_subtraction():
    # 启动Windows计算器应用
    calc_app = tc.Application.Launch("calc.exe")
    # 获取计算器主窗口
    calc_window = calc_app.Window("CalcFrame""计算器")
    calc_window.Activate()
    
    # 定位并点击数字"5"
    calc_window.Button("num5").Click()
    # 点击减号"-"
    calc_window.Button("op_Subtract").Click()
    # 点击数字"3"
    calc_window.Button("num3").Click()
    # 点击等号"="
    calc_window.Button("eq").Click()
    
    # 获取计算结果
    result = calc_window.Edit("Edit").Text
    print(f"计算结果:5-3={result}")
    
    # 关闭计算器
    calc_app.Close()

if __name__ == "__main__":
    calculator_subtraction()

关键说明:TestComplete通过对象映射管理UI元素,控件识别名(如"num5")可从对象浏览器获取,支持拖拽控件到脚本编辑器自动生成定位代码。



2、SikuliX

2.1 简介

SikuliX是基于图像识别的跨平台UI自动化工具,支持WindowsmacOSLinux系统。它通过识别屏幕图像元素实现自动化操作,无需关注控件属性或应用内部结构,适用于Flash应用、自定义控件等传统定位困难的场景。


2.2 特点

  • 图像识别驱动,无需深入了解应用代码,降低脚本编写门槛,非技术人员也能快速上手。

  • 跨平台兼容性强,同一套脚本可在不同操作系统运行(需确保图像元素一致)。

  • 支持鼠标点击、拖拽、键盘输入、窗口切换、截图对比等多种交互操作。

  • 可与PythonJava集成,也提供独立图形化IDE,支持录制操作生成脚本。


2.3 安装

SikuliX有两种使用方式:

  • 独立IDE:从SikuliX官网下载对应系统安装包,直接安装即可使用图形化界面编写脚本。

    官网地址:

    https://sikulix-2014.readthedocs.io/en/latest/

  • Python集成:需先配置Java环境,再通过pip安装Python库:

pip install sikulixapi

2.4 示例:图像识别实现记事本操作

注意:

需提前截取"记事本图标"notepad_icon.png)、"保存输入框"save_input.png)、"保存按钮"save_btn.png)等关键图像。

# 公众号:AllTests软件测试
from sikulix import *
import time

# 初始化SikuliX屏幕对象
screen = Screen()

# 1. 双击桌面记事本图标打开应用
screen.doubleClick("notepad_icon.png")
time.sleep(2# 等待窗口打开

# 2. 在记事本中输入文本
screen.type("SikuliX 图像识别自动化示例\n适用于控件属性难以获取的场景。")
time.sleep(1)

# 3. 按Ctrl+S触发保存
screen.hotkey("ctrl""s")
time.sleep(2# 等待保存对话框弹出

# 4. 输入文件名并保存
screen.click("save_input.png")
screen.type("sikuli_demo.txt")
screen.click("save_btn.png")
time.sleep(2)

# 5. 关闭记事本
screen.hotkey("alt""f4")

关键说明:可设置图像相似度阈值(如screen.click("icon.png", 0.8)),平衡识别准确性与容错性,阈值范围0-1



3、Selene

3.1 简介

Selene是一款基于Selenium封装的Python UI自动化库,旨在简化SeleniumAPI调用,降低自动化脚本的编写复杂度。它保留了Selenium的核心功能,同时增加了自动等待、内置断言、简洁定位等特性,让Web UI自动化测试更高效、更易维护,适合追求代码简洁性的测试场景。


3.2 特点

  • API简洁直观,通过链式调用简化多步操作,代码可读性更高(如s("#kw").set_value("UI自动化").press_enter())。

  • 内置智能等待机制,自动等待元素可交互状态,无需手动添加大量time.sleep(),提升脚本稳定性。

  • 集成丰富的断言方法(如should().have.text()should().be.visible()),简化结果验证逻辑。

  • 支持多种元素定位方式,兼容Selenium的定位策略,同时扩展了更便捷的定位语法。


3.3 安装

使用pip命令即可安装Selene,需确保已安装Selenium及对应浏览器驱动:

pip install selene

3.4 示例:百度搜索结果验证

# 公众号:AllTests软件测试
from selene import browser, be, have
from selene.support.shared import config
import time

# 配置浏览器(默认使用Chrome,需提前安装ChromeDriver)
config.browser_name = "chrome"
config.window_width = 1920
config.window_height = 1080

def baidu_search_verify():
    # 打开百度首页
    browser.open("https://www.baidu.com/")
    
    # 定位搜索框,输入关键词并回车
    browser.element("#kw").should(be.blank).set_value("Selene UI自动化").press_enter()
    
    # 等待搜索结果加载,验证结果中包含目标文本
    browser.element("#content_left").should(have.text("Selene"))
    
    # 截图保存当前页面
    browser.save_screenshot("baidu_search_selene.png")
    
    # 等待2秒查看结果
    time.sleep(2)
    
    # 关闭浏览器
    browser.quit()

if __name__ == "__main__":
    baidu_search_verify()

关键说明:Seleneshould()方法会自动等待断言条件满足(默认超时10秒),无需手动处理元素加载延迟;browser为全局对象,简化了浏览器实例的管理。



4、Cypress

4.1 简介

Cypress是一款基于JavaScript的前端自动化测试工具,专注于Web应用的端到端(E2E)测试。它摆脱了传统Selenium的架构限制,直接在浏览器中运行测试代码,提供实时重载、时间旅行、自动等待等强大功能,是现代前端项目自动化测试的热门选择。


4.2 特点

  • 实时重载与时间旅行:修改测试代码后自动重新运行,支持回溯测试执行过程中的每一步DOM状态,便于调试。

  • 自动等待机制:智能等待元素加载和可交互,无需手动添加等待语句,大幅减少测试不稳定问题。

  • 内置断言库:集成ChaiSinon等断言工具,支持BDDTDD风格断言,语法简洁直观。

  • 全栈测试能力:不仅支持端到端测试,还可用于组件测试、API测试,实现一站式测试解决方案。

  • 易集成性:支持与JenkinsGitHub ActionsCI/CD工具集成,自动生成测试报告和截图录像。


4.3 安装

Cypress基于Node.js,需先安装Node.js(建议v14及以上版本),再通过npm安装:
# 初始化npm项目(若未初始化)
npm init -y

# 安装Cypress
npm install cypress --save-dev

4.4 示例:百度搜索端到端测试

1. 启动Cypress
npx cypress open

2. Cypress窗口中点击"New Spec File",创建baidu_search.cy.js测试文件,内容如下:

// 公众号:AllTests软件测试
// 百度搜索端到端测试用例
describe("百度搜索功能测试", () => {
it("搜索关键词并验证结果", () => {
    // 打开百度首页
    cy.visit("https://www.baidu.com/");

    // 定位搜索框,输入"Cypress自动化"并提交
    cy.get("#kw").should("be.visible").type("Cypress自动化").type("{enter}");

    // 等待搜索结果加载,验证结果中包含目标文本
    cy.get("#content_left").should("contain""Cypress");

    // 验证第一个搜索结果标题
    cy.get(".result-op .c-container h3").first().should("be.visible");
  });
});

3. Cypress窗口中点击创建的测试文件,即可自动运行测试并查看执行过程。


关键说明:Cypresscy.get()方法会自动等待元素出现(默认超时4秒,可配置),无需手动处理异步加载;测试执行过程中会自动截图,失败时生成详细的错误日志和DOM快照。



5、Ranorex

5.1 简介

RanorexRanorex GmbH推出的企业级UI自动化测试工具,支持WindowsWeb、移动(iOS/Android)三大平台,可对原生应用、混合应用、Web应用及嵌入式系统进行自动化测试。它以强大的对象识别能力和易用的可视化设计器为核心,适合复杂企业级项目的自动化测试需求。


5.2 特点

  • 智能对象识别:采用专利的RanoreXPath技术,可穿透复杂控件层级精准定位元素,即使UI结构变化也能稳定识别,降低脚本维护成本。

  • 多语言支持:支持C#VB.NETPython等编程语言,同时提供可视化测试设计器,非技术人员可通过拖拽组件创建测试用例。

  • 跨平台测试:一套脚本可适配Windows桌面、Web浏览器(Chrome/Firefox/Edge等)及移动设备,支持真实设备与模拟器/仿真器。

  • 全流程测试能力:支持数据驱动测试、关键字驱动测试,内置缺陷跟踪与测试报告功能,可与JenkinsJIRATestRail等工具深度集成。


5.3 安装

Ranorex为商业化工具,需从Ranorex官网下载Windows版本(仅支持Windows系统),提供30天免费试用。安装过程中需注册账号,试用版可体验全部核心功能,正式使用需根据团队规模购买相应许可证。

官网地址:

https://www.ranorex.com/


5.4 示例:Windows记事本自动化操作(Python脚本)

注:需在Ranorex Studio中创建Python项目,通过Ranorex Spy工具定位记事本控件后编写脚本。

# 公众号:AllTests软件测试
import sys
import os
# 引入Ranorex相关库
sys.path.append(os.path.abspath(r"Ranorex安装路径\Bin\Python"))
from Ranorex import *

def notepad_automation():
    # 启动Windows记事本应用
    notepad_app = Application.Launch("notepad.exe")
    # 通过RanoreXPath定位记事本主窗口
    notepad_window = notepad_app.FindSingle("/form[@title='无标题 - 记事本']")
    notepad_window.Activate()
    
    # 定位文本编辑区域,输入内容
    edit_area = notepad_window.FindSingle("/edit[@class='Edit']")
    edit_area.Text = "Ranorex 企业级UI自动化示例\n支持多平台、复杂控件定位。"
    
    # 按Ctrl+S保存文件
    Keyboard.PressKeys("^s")
    # 定位保存对话框
    save_dialog = Application.FindSingle("/form[@title='另存为']")
    # 定位文件名输入框,输入保存名称
    save_input = save_dialog.FindSingle("/edit[@id='1001']")
    save_input.Text = "ranorex_notepad_demo.txt"
    # 点击保存按钮
    save_btn = save_dialog.FindSingle("/button[@text='保存']")
    save_btn.Click()
    
    # 等待保存完成
    Delay(2000)
    # 关闭记事本
    notepad_window.Close()

if __name__ == "__main__":
    notepad_automation()

关键说明:Ranorex Spy工具可生成元素的RanoreXPath定位表达式,脚本中通过FindSingle()方法定位元素;Delay()方法用于等待异步操作完成,也可使用内置的智能等待机制替代固定延迟,提升脚本稳定性。



6、WinAppDriver

6.1 简介

WinAppDriverWindows Application Driver)是微软官方开源的Windows桌面应用自动化测试工具,基于WebDriver协议实现,支持Windows 10及以上系统的UWP(通用Windows平台)应用、Win32应用和WPF应用。它提供了与Selenium相似的API,降低了熟悉Web自动化开发者的学习成本,是Windows桌面应用自动化的官方推荐方案。


6.2 特点

  • 官方原生支持:由微软开发维护,与Windows系统及应用兼容性更佳,能稳定支持系统级控件交互。

  • WebDriver协议兼容:API设计遵循WebDriver标准,语法与Selenium高度相似,便于跨平台自动化脚本迁移。

  • 多应用类型覆盖:支持UWPWin32WPF等主流Windows应用架构,满足不同开发技术栈的测试需求。

  • 可集成性强:支持与PythonJavaC#等编程语言结合,也可与TestNGpytest等测试框架及JenkinsCI工具集成。


6.3 安装

安装步骤如下:

1.WinAppDriver GitHub Releases下载最新版本的安装包,完成安装后启动服务(默认端口4723)。

下载地址:

https://github.com/microsoft/WinAppDriver/releases

2.开启Windows开发者模式:进入设置-更新和安全-开发者选项,启用开发者模式

3.安装Python客户端库(基于Selenium库扩展):

pip install selenium

6.4 示例:Windows计算器加法操作

# 公众号:AllTests软件测试
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import time

# 配置Desired Capabilities
desired_caps = {}
desired_caps["app"] = "Microsoft.WindowsCalculator_8wekyb3d8bbwe!App"# 计算器应用ID
desired_caps["platformName"] = "Windows"
desired_caps["deviceName"] = "WindowsPC"

# 连接WinAppDriver服务
driver = webdriver.Remote(
    command_executor="http://127.0.0.1:4723/wd/hub",
    desired_capabilities=desired_caps
)

# 等待计算器启动
time.sleep(2)

# 定位并点击数字"2"
driver.find_element(By.NAME, "二").click()
# 点击加号"+"
driver.find_element(By.NAME, "加").click()
# 定位并点击数字"3"
driver.find_element(By.NAME, "三").click()
# 点击等号"="
driver.find_element(By.NAME, "等于").click()

# 获取计算结果(结果显示在"显示"控件中)
result = driver.find_element(By.ACCESSIBILITY_ID, "CalculatorResults").text
# 提取结果文本(默认格式为"显示 5",需截取数字部分)
result_num = result.split(" ")[1]
print(f"计算结果:2+3={result_num}")

# 关闭应用和驱动
time.sleep(2)
driver.quit()

关键说明:获取Windows应用的App ID可通过PowerShell命令Get-StartApps查询;控件定位支持NAMEACCESSIBILITY_IDXPATH等方式,可使用Windows SDK中的“Inspect.exe”工具查看控件属性。



7、Katalon Studio

7.1 简介

Katalon StudioKatalon LLC推出的低代码UI自动化测试工具,基于SeleniumAppium核心开发,支持Web、移动(iOS/Android)、桌面(Windows)及API测试。它提供可视化录制与脚本编辑双模式,无需复杂环境配置,开箱即用,适合测试团队快速落地自动化测试,尤其受非专业开发背景的测试人员青睐。


7.2 特点

  • 低代码门槛:可视化测试用例设计器支持拖拽组件与操作录制,非技术人员可快速创建测试用例,同时支持Groovy/Java脚本编写复杂逻辑。

  • 多平台一体化:一套工具覆盖Web、移动、桌面应用测试,共享对象仓库与测试数据,避免多工具切换成本。

  • 内置丰富功能:集成对象仓库(统一管理UI元素)、数据驱动测试、关键字库、测试报告生成等,无需额外集成第三方工具。

  • 易集成与扩展:支持与JenkinsJIRAGitDevOps工具集成,提供开放API接口,可自定义插件扩展功能。


7.3 安装

Katalon Studio提供免费版(功能满足大部分测试需求)和商业版,安装步骤如下:

1.Katalon官网下载对应系统(Windows/macOS/Linux)的安装包。

下载地址:

https://katalon.com/download

2.双击安装包,按向导完成安装,无需额外配置浏览器驱动或环境变量。

3.启动后使用Katalon账号登录(免费注册),即可开始使用。


7.4 示例:Web百度搜索自动化测试(可视化+脚本结合)

1.新建测试用例:打开Katalon Studio,点击“New Test Case”,命名为“BaiduSearchTest”

2.录制测试步骤:点击工具栏“Record”按钮,选择Chrome浏览器,输入“https://www.baidu.com”,完成以下操作后停止录制:

  • 在搜索框输入“Katalon Studio”

  • 点击搜索按钮

  • 验证搜索结果包含“Katalon”

3.生成的脚本(Groovy语言,可在“Script”标签页查看):

// 公众号:AllTests软件测试
importcom.kms.katalon.core.webui.keyword.WebUiBuiltInKeywordsasWebUI

// 打开百度首页
WebUI.openBrowser('https://www.baidu.com/')
// 最大化浏览器窗口
WebUI.maximizeWindow()
// 定位搜索框并输入关键词
WebUI.setText(findTestObject('Object Repository/Baidu/SearchBox'), 'Katalon Studio')
// 点击搜索按钮
WebUI.click(findTestObject('Object Repository/Baidu/SearchButton'))
// 等待搜索结果加载
WebUI.waitForPageLoad(10)
// 验证结果中包含目标文本
WebUI.verifyTextPresent('Katalon', false)
// 关闭浏览器
WebUI.closeBrowser()

4.执行测试用例:点击工具栏“Run”按钮,选择浏览器,即可自动执行并在“Console”“Report”标签页查看结果。


关键说明:Katalon“Object Repository”会自动保存录制的UI元素,支持批量管理与复用;脚本中的findTestObject()方法用于调用对象仓库中的元素,避免硬编码定位表达式,提升脚本维护性。



精彩推荐

文章合集-2025

文章合集-2024

文章合集-2023

文章合集-2022

文章合集-2021

文章合集-2020


扫码关注

获取更多精彩

alltests


扫描作者微信,交流、进群、合作!

【声明】内容源于网络
0
0
AllTests软件测试
分享软件测试、自动化测试、性能测试、测试开发等技术文章与资源,欢迎关注!
内容 246
粉丝 0
AllTests软件测试 分享软件测试、自动化测试、性能测试、测试开发等技术文章与资源,欢迎关注!
总阅读8
粉丝0
内容246