软件测试|web自动化测试神器playwright教程(二十四)

简介: 软件测试|web自动化测试神器playwright教程(二十四)

前言

我们在使用selenium进行自动化测试的过程中,遇到输入框时,我们可以使用send_keys()输入内容,也可以使用键盘事件向输入框内输入内容,只是使用键盘事件时需要导入Keys,作为一款强大的工具,selenium有的功能,playwright也有,playwright同样可以使用键盘输入内容,本篇文章就来为大家介绍一下playwright的键盘事件。

键盘操作

playwright的Keyboard 方法是用于键盘操作的函数,提供了一个用于管理虚拟键盘的 API。高级 api 是keyboard.type(),它接受原始字符并在您的页面上生成适当的keydown、keypress/input和keyup事件。
为了更好地控制,您可以使用keyboard.down()、keyboard.up()和keyboard.insert_text()手动触发事件,就好像它们是从真实键盘生成的一样。

  1. 选择和删除文本
from playwright.sync_api import sync_playwright

def key_option():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://www.baidu.com/")
        page.locator("#kw").click()
        page.keyboard.type("playwright")
        page.keyboard.down("Shift")
        for i in range(6):
            page.keyboard.press("ArrowLeft")
        page.keyboard.up("Shift")
        page.keyboard.press("Backspace")

        page.pause()
        context.close()
        browser.close()

key_option()

运行脚本之后,playwright的文本中后面6个字母被删除,结果如下图所示:

image.png

  1. 输入大写字母
from playwright.sync_api import sync_playwright

def key_option():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://www.baidu.com/")
        page.locator("#kw").click()
        page.keyboard.press("Shift+KeyA")
        page.pause()

        context.close()
        browser.close()

key_option()

运行脚本,界面如下图所示:

image.png

注:使用Shift+A一样可以按出大写字母A

  1. 全选操作
from playwright.sync_api import sync_playwright

def key_option():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://www.baidu.com/")
        page.locator("#kw").click()
        page.keyboard.type("playwright")
        page.keyboard.press("Control+A")
        page.pause()

        context.close()
        browser.close()
key_option()

运行脚本之后,界面如下所示:

image.png

注:Mac系统的键盘操作为‘Meta+A’

Down事件

调度keydown事件

key可以指定预期的keyboardEvent.key值或单个字符来为其生成文本。可以在此处key找到这些值的超集。键的例子是:

F1- F12, Digit0- Digit9, KeyA- KeyZ, Backquote, Minus, Equal, Backslash, Backspace, Tab, Delete, Escape, ArrowDown, End, Enter, Home, , , Insert,等_PageDownPageUpArrowRightArrowUp

还支持以下修改快捷方式:Shift, Control, Alt, Meta, ShiftLeft.

按住将键入对应于大写字母Shift的文本。key

如果key是单个字符,则区分大小写,因此值a和A将生成各自不同的文本。

如果key是修饰键 、Shift、Meta、Control或Alt,则后续按键将在该修饰键激活的情况下发送。要释放修饰键,请使用keyboard.up()。

按下一次键后,对keyboard.down()的后续调用会将repeat设置为 true。要释放键,请使用keyboard.up()。

语法如下:

keyboard.down(key)

insert_text 插入文本

语法如下:

page.keyboard.insert_text("xxxx")

注:该操作只调度input事件,不发出keydown,keyup或keypress事件。

press 长按

key可以指定预期的keyboardEvent.key值或单个字符来为其生成文本。可以在此处key找到这些值的超集。键的例子是:F1- F12, Digit0- Digit9, KeyA- KeyZ, Backquote, Minus, Equal, Backslash, Backspace, Tab, Delete, Escape, ArrowDown, End, Enter,Insert等

示例代码:

from playwright.sync_api import sync_playwright

def key_option():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://keycode.info")
        page.keyboard.press("a")
        page.screenshot(path="a.png")
        page.keyboard.press("ArrowLeft")
        page.screenshot(path="arrow_left.png")
        page.keyboard.press("Shift+O")
        page.screenshot(path="o.png")
        page.pause()

        context.close()
        browser.close()
key_option()

运行脚本,截取的图片如下:
image.png

Type 操作

为文本中的每个字符发送keydown、keypress/input和事件。

示例如下:

from playwright.sync_api import sync_playwright

def key_option():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://www.baidu.com/")
        page.locator("#kw").click()
        page.keyboard.type("拜仁")
        page.keyboard.type("慕尼黑", delay=100)
        page.pause()

        context.close()
        browser.close()
key_option()

运行脚本,结果如下图:

image.png

up 方法

调度一个keyup事件,语法示例如下:

keyboard.up(key)

总结

本文主要介绍了playwright对键盘操作的方法,与selenium类似,playwright同样支持对键盘的操作,同时,playwright的键盘操作比之selenium更加方便快捷。

相关文章
|
2月前
|
敏捷开发 测试技术 API
测试金字塔:构建高效自动化测试策略的基石
测试金字塔:构建高效自动化测试策略的基石
276 116
|
2月前
|
人工智能 自然语言处理 JavaScript
利用MCP Server革新软件测试:更智能、更高效的自动化
MCP Server革新软件测试:通过标准化协议让AI实时感知页面结构,实现自然语言驱动、自适应维护的自动化测试,大幅提升效率,降低脚本开发与维护成本,推动测试左移与持续测试落地。
|
2月前
|
测试技术 API 数据库
测试金字塔:构建高效自动化测试策略的基石
测试金字塔:构建高效自动化测试策略的基石
307 114
|
3月前
|
人工智能 JavaScript 算法
Playwright携手MCP:AI智能体实现自主化UI回归测试
MCP 协议使得 AI 能够通过 Playwright 操作浏览器,其中快照生成技术将页面状态转化为 LLM 可理解的文本,成为驱动自动化测试的关键。该方式适用于探索性测试和快速验证,但目前仍面临快照信息缺失、元素定位不稳定、成本高、复杂场景适应性差以及结果确定性不足等挑战。人机协同被认为是未来更可行的方向,AI 负责执行固定流程,人类则专注策略与验证。
|
2月前
|
Java 测试技术 网络安全
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
134 0
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
|
2月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.10 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.10 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
275 3
|
2月前
|
人工智能 自然语言处理 JavaScript
Playwright MCP在UI回归测试中的实战:构建AI自主测试智能体
Playwright MCP结合AI智能体,革新UI回归测试:通过自然语言驱动浏览器操作,降低脚本编写门槛,提升测试效率与覆盖范围。借助快照解析、智能定位与Jira等工具集成,实现从需求描述到自动化执行的闭环,推动测试迈向智能化、民主化新阶段。
|
3月前
|
安全 NoSQL Shell
web渗透-SSRF漏洞及discuz论坛网站测试
SSRF(服务器端请求伪造)是一种安全漏洞,攻击者可诱使服务端发起任意请求,进而探测或攻击内网系统。常用于端口扫描、访问内部服务、读取本地文件等。常见防御包括限制协议、域名和IP,但可通过302跳转、短地址等方式绕过。
246 1
web渗透-SSRF漏洞及discuz论坛网站测试
|
3月前
|
自然语言处理 前端开发 测试技术
使用 Playwright MCP 实现 UI 自动化测试
本文介绍如何结合Playwright与MCP协议实现智能化UI自动化测试。通过自然语言指令控制浏览器,降低技术门槛,提升效率,并涵盖环境搭建、核心功能、实战案例及最佳实践,展现对话式自动化的未来趋势。
|
4月前
|
人工智能 缓存 测试技术
Playwright进阶指南 (6) | 自动化测试实战
2025企业级测试解决方案全面解析:从单元测试到千级并发,构建高可用测试体系。结合Playwright智能工具,解决传统测试维护成本高、环境依赖强、执行效率低等痛点,提升测试成功率,内容从测试架构设计、电商系统实战框架、高级测试策略、Docker化部署、CI/CD集成及AI测试应用,助力测试工程师掌握前沿技术,打造高效稳定的测试流程。
Playwright进阶指南 (6) | 自动化测试实战