代码级教程|用Playwright实现Web自动化测试:从零到录制生成脚本

2025年都说是AI元年,整个互联网行业先后迎来了DeepSeek,Claude Code,Gemini等AI大模型,随之让搜索引擎,程序员,绘画设计等从业人员感受到了"科技的力量"。自动化测试也迎来了快速迭代!

以前小编总安利那套 Selenium+Pytest+Allure+Jenkins 经典组合,但隐隐感觉有点落伍了。毕竟在我们部门搞了这么久的自动化,真正在用的也就我和另一个同事,其他测试小伙伴依然坚持手工作战......🤐

就在这时,突然想起一个很早就知道但一直没深入研究和使用的工具------Playwright。它虽然还没实现真正的"全自动"(那不然小编就要失业了😂),但近几年越来越智能,用的人也越来越多。是时候向小伙伴们推荐这个"半自动化神器"了!

介绍

Playwright 是微软开发的 用于Web应用自动化测试的一个框架,支持JavaScript/TypeScript, Python, Java, C# 等多种语言开发

Playwright 有个巨大的优点:自带浏览器和驱动,不用折腾环境!而且自带浏览器不会自动更新。再也不用担心某天醒来脚本全挂,排查后发现原来是浏览器升级的痛苦了(简直是福音啊⭐️)

安装

1、安装 Playwright

python 复制代码
pip install playwright

如图:

小编已经安装过了,所以提示已经存在21.2.4版本,但最新版是25.3版本(不用盲目追新,够用就行~)

2、安装浏览器

安装全部浏览器

python 复制代码
playwright install 

推荐只安装一个常用的,比如Chrome:

python 复制代码
playwright install chrome

输入密码,会自动安装

2.1、错误一

报错:zsh: command not found: playwright

原因:未找到playwright命令

解决:使用python -m playwright install chrome

2.2、错误二

报错:Failed to install browsers Error: Invalid installation targets: 'Chrome'. Expecting one of: chromium, chromium-headless-shell, chromium-tip-of-tree-headless-shell, chrome, chrome-beta, msedge, msedge-beta, msedge-dev, bidi-chromium, firefox, webkit

原因:浏览器名称错误

解决:严格区分大小写,Chrome改成chrome

python -m playwright install chrome

3、跑个测试

贴一段简单的代码,打开百度搜一下"大飞记Python"

python 复制代码
from playwright.sync_api import sync_playwright

# 使用 Playwright 打开百度
with sync_playwright() as p:
    # 启动webkit浏览器(headless=False:显示浏览器窗口)
    browser = p.webkit.launch(headless=False)
    # 创建新页面
    page = browser.new_page()
    # 访问百度
    page.goto("https://www.baidu.com")
    # 在搜索框并输入"大飞记Python"
    page.locator(".chat-input-scroll-style").fill("大飞记Python")
    # 点击"搜索按钮"
    page.locator("//*[text()=' 百度一下 ']").click()
    # 等待页面加载
    page.wait_for_load_state("networkidle")
    # 截图保存
    page.screenshot(path="大飞记Python截图.png")
    # 关闭浏览器
    browser.close()

看到浏览器启动,并成功保存截图即为成功~恭喜,环境搞定!

4、懒人1分钟生成脚本

当然,仅仅是这样还不足以小编推荐这款工具了!

我们甚至可以连代码都不用写,直接使用Playwright 自带的"录制"功能,实现1分钟自动生成脚本

"录制"功能命令

python 复制代码
playwright codegen

注意:默认使用 Chromium,如果想用其他浏览器,可以加上参数:

python 复制代码
playwright codegen --browser=webkit https://www.baidu.com

或者(Mac适用):

python 复制代码
python -m playwright codegen --browser=webkit https://www.baidu.com

这时会弹出2个窗口

  • 左边是浏览器,平时点击、输入的地方

  • 右边实时生成对应的代码

在左侧浏览器中打开百度,输入"大飞记Python",最后关闭浏览器的操作

这时右侧的自动化代码已经生成完毕,我们将生成的代码复制到PyCharm中

右击简单运行一下,成功!

代码如下

当然:类似page.get_by_role("textbox", name="越南球员范理德被红牌罚下").fill("大飞记Python")这种查找元素的方法是相当不推荐小伙伴们用的

python 复制代码
import re
from playwright.sync_api import Playwright, sync_playwright, expect


def run(playwright: Playwright) -> None:
    browser = playwright.webkit.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto("https://www.baidu.com/")
    page.get_by_role("textbox", name="越南球员范理德被红牌罚下").fill("大飞记Python")
    page.get_by_role("button", name="百度一下").click()

    # ---------------------
    page.wait_for_timeout(3000)  # 等待3秒
    context.close()
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

小编从 录制+写代码+运行脚本,全程不到3分钟。Playwright最大的魅力就是简单,特别适合快速上手自动化测试的小伙伴

如果你对上述代码感兴趣,**后台回复"play代码"**即可免费获取下载链接🔗

觉得有用的话,记得点赞👍支持一下~我们下期再见!

相关推荐
猫头虎3 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
八零后琐话3 小时前
干货:程序员必备性能分析工具——Arthas火焰图
开发语言·python
青春不朽5124 小时前
Scrapy框架入门指南
python·scrapy
MZ_ZXD0015 小时前
springboot旅游信息管理系统-计算机毕业设计源码21675
java·c++·vue.js·spring boot·python·django·php
全栈老石5 小时前
Python 异步生存手册:给被 JS async/await 宠坏的全栈工程师
后端·python
梨落秋霜5 小时前
Python入门篇【模块/包】
python
阔皮大师7 小时前
INote轻量文本编辑器
java·javascript·python·c#
小法师爱分享7 小时前
StickyNotes,简单便签超实用
java·python
深蓝电商API7 小时前
处理字体反爬:woff字体文件解析实战
爬虫·python