Skip to main content

基于 Playwright 的关键字驱动 UI 自动化测试引擎

Project description

UIEngine

基于 Playwright 的关键字驱动 UI 自动化测试引擎。

特性

  • 关键字驱动:通过中文/英文关键字编写测试用例,降低使用门槛
  • 中英文双注册:每个关键字同时支持中英文名称,大小写兼容
  • 丰富的内置关键字:覆盖页面操作、元素交互、等待策略、断言、iframe 等场景
  • 变量替换:支持 ${variable} 语法引用全局变量
  • 截图管理:按套件自动创建截图目录,引擎内最多保留 10 个
  • 灵活配置:支持 dict 和 YAML 两种配置方式

安装

pip install ui-engine
playwright install

快速开始

from UIEngine import Runner

config = {
    "is_debug": True,                # True=显示浏览器,False=无头模式
    "browser_type": "chromium",
    "host": "http://localhost:8080",
    "global_variable": {
        "username": "admin",
        "password": "123456"
    }
}

suite = {
    "id": "suite_001",
    "name": "登录功能测试",
    "setup_step": [
        {
            "desc": "打开浏览器",
            "keyword": "open_browser",
            "params": {"browser_type": "chromium"}
        },
        {
            "desc": "打开登录页",
            "keyword": "打开页面",           # 中文关键字同样支持
            "params": {"url": "/login"}
        },
    ],
    "cases": [
        {
            "id": "case_001",
            "name": "正确密码登录",
            "skip": False,
            "steps": [
                {
                    "desc": "输入用户名",
                    "keyword": "fill_value",
                    "params": {"locator": "#username", "value": "${username}"}
                },
                {
                    "desc": "输入密码",
                    "keyword": "输入值",      # 中文关键字
                    "params": {"locator": "#password", "value": "${password}"}
                },
                {
                    "desc": "点击登录",
                    "keyword": "click_element",
                    "params": {"locator": "#login-btn"}
                },
                {
                    "desc": "验证登录成功",
                    "keyword": "except_to_have_text",
                    "params": {"locator": ".welcome", "expect_results": "admin"}
                }
            ]
        }
    ]
}

result = Runner(config).run(suite)
print(result)

关键字列表

页面操作

英文 中文 说明
open_url 打开页面 打开 URL
refresh 刷新页面 刷新当前页面
go_back 返回上一页 浏览器后退
go_forward 前进下一页 浏览器前进
scroll_to_height 滚动到高度 滚动到指定高度
execute_script 执行脚本 执行 JavaScript
download_file 下载文件 触发并等待文件下载
accept_dialog 接受弹窗 接受浏览器弹窗
dismiss_dialog 关闭弹窗 关闭浏览器弹窗
get_page_title 获取页面标题 获取当前页面标题
get_page_url 获取页面URL 获取当前页面 URL
set_viewport_size 设置窗口大小 设置浏览器视口大小

元素操作

英文 中文 说明
click_element 点击元素 单击元素
double_click 双击 双击元素
fill_value 输入值 输入框填值
type_text 输入文本 模拟逐字符输入
clear 清空输入框 清空输入框
hover 悬停 鼠标悬停
focus_element 聚焦元素 聚焦元素
check 勾选 勾选复选框
uncheck 取消勾选 取消勾选
select_option 选择选项 下拉框选择
select_multiple_options 多选下拉 下拉框多选
drag_and_drop 拖拽 拖拽元素
upload_file 上传文件 上传文件
scroll_to_element 滚动到元素 滚动至元素可见
highlight_element 高亮元素 高亮元素(调试用)
get_text 获取文本 获取元素文本
get_attribute 获取属性 获取元素属性
get_input_value 获取输入值 获取输入框值
get_element_count 获取元素数量 获取匹配元素数量
is_visible 是否可见 查询元素可见性
is_hidden 是否隐藏 查询元素隐藏
is_enabled 是否可用 查询元素可用性
is_checked 是否选中 查询元素选中状态

鼠标键盘

英文 中文 说明
mouse_click 鼠标点击 坐标点击
move_mouse 移动鼠标 坐标移动
long_click 长按 长按元素
right_click 右键点击 右键点击元素
press_key 按键 键盘按键
press_type 键盘输入 键盘输入文本

等待

英文 中文 说明
wait_for_time 强制等待 固定等待
wait_for_load 等待加载 等待页面加载
wait_for_network 等待网络 等待网络空闲
wait_for_element 等待元素 等待元素可见
wait_for_element_hidden 等待元素消失 等待元素不可见
wait_for_url 等待URL 等待 URL 匹配

断言

英文 中文 说明
assert_page_title 断言标题 断言页面标题
assert_page_url 断言URL 断言页面 URL
except_to_have_text 断言有文本 断言元素文本
except_to_have_value 断言有值 断言元素值
except_to_be_visible 断言可见 断言元素可见
except_to_be_hidden 断言隐藏 断言元素隐藏
except_to_be_enabled 断言可用 断言元素可用
except_to_be_checked 断言选中 断言元素选中

iframe

英文 中文 说明
frame_click_element 框架点击 iframe 内点击
frame_fill_value 框架输入 iframe 内输入
switch_to_frame 切换iframe 切换到 iframe
switch_to_main_frame 切回主页面 切回主页面

动态注册关键字

from UIEngine import KeyWordManager

# 注册中英文关键字
KeyWordManager.register_keyword(
    ["custom_login", "自定义登录"],
    '''
def custom_login(self, username, password):
    self.page.locator("#user").fill(username)
    self.page.locator("#pass").fill(password)
    self.page.locator("#submit").click()
    '''
)

配置

支持 dict 和 YAML 两种方式:

# dict 方式
config = {
    "browser_type": "chromium",
    "is_debug": True,
    "host": "http://localhost:8080",
    "global_variable": {"username": "admin"}
}

# YAML 文件方式
config = "config.yaml"

result = Runner(config).run(suite)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ui_engine_xin-0.0.1.tar.gz (26.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ui_engine_xin-0.0.1-py3-none-any.whl (30.0 kB view details)

Uploaded Python 3

File details

Details for the file ui_engine_xin-0.0.1.tar.gz.

File metadata

  • Download URL: ui_engine_xin-0.0.1.tar.gz
  • Upload date:
  • Size: 26.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.5

File hashes

Hashes for ui_engine_xin-0.0.1.tar.gz
Algorithm Hash digest
SHA256 be540738c96d2f03cdc9580f91a3cffcc4b79325c3b13d7fa5a0a254cea92541
MD5 e67aa0dfb1c36800f9b144a88711410a
BLAKE2b-256 ae23e4cb3ca0ddec6b500f20ec372cdd7f9fc810a4ffd3c9fe3a79c796d33337

See more details on using hashes here.

File details

Details for the file ui_engine_xin-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: ui_engine_xin-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 30.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.5

File hashes

Hashes for ui_engine_xin-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 845ed0f52a99fdc3e82fc869e0d191d37d59e18b6c024e32f5a8ff50d398d93a
MD5 0f3cc9107db37667c41c5e1fec689dde
BLAKE2b-256 8763e383d10de4675f6aafb57b3ffaa14680b2276f096d4b5d83b7bb786cbf4b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page