playwright学习

1、概述

微软开发,基于Devtools协议的浏览器自动化工具,支持浏览器Chrome、Edge、Firefox、WebKit(Safari 内核)。支持多种语言,Node.js、TypeScript/JavaScript、Python、.NET、Java。

官网:https://playwright.dev/

2、使用

1、环境准备

安装库:pip install playwright

安装浏览器:playwright install

Playwright自动安装到系统用户目录,浏览器也会下载到这个目录,比如:

C:\Users\你的用户名\AppData\Local\ms-playwright\

playwright install会安装所有浏览器,若要安装指定浏览器,可使用如下命令:

python 复制代码
# 只装 Chrome/Edge
playwright install chromium

# 只装火狐
playwright install firefox

# 只装 Safari 内核
playwright install webkit

2、playwright自动录制功能

在浏览器上的操作,会自动生成完整的Python、JS代码,直接复制就能用。

命令格式如下,

playwright codegen 网址,比如:playwright codegen https://www.baidu.com/

运行命令会出现2个窗口,一个是浏览器窗口,一个是Playwright Inspector窗口,

手动在浏览器窗口上,Playwright Inspector窗口自动生成代码。

3、语言切换

Playwright Inspector窗口支持自带语言切换功能,切换后已录制的代码会自动转换成新语言。

4、示例

1、打开网页

2、输入"NBA"

3、点击"百度一下"按钮
可以用自动录制功能生成代码,也需要F12打开浏览器调试窗口查看元素信息,手动调整代码,

也可以纯手动编码。

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


def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = browser.new_page()
    page.goto("https://www.baidu.com")
    page.locator("#chat-textarea").click()
    page.locator("#chat-textarea").fill("NBA")
    page.get_by_role("button", name="百度一下").click()

    # 延时为了看效果
    time.sleep(10)

    context.close()
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

5、一些常用命令

页面导航

goto:直接跳转

reload:刷新

go_back:后退

go_foaward:前进

页面状态

page.url:获取当前页面url

page.title:获取当前页面的标题

page.content:获取完整的页面html内容

页面动作

page.set_viewport_size:设置页面的视口大小,用于模拟不同的设备屏幕,如桌面、平板、手机

page.screenshot:捕获当前页面的截图

page.evaluate:在页面上下文中执行一段JavaScript表达式并返回结果

page.wait_for_url:等待页面的url变为指定的值或满足特定模式,常用于验证重定向或表单提交后的页面跳转

page.wait_for_timeout:强制暂停指定毫秒数,仅应用于调试场景,在正式测试代码中,应避免使用,因为它会引入不必要的延迟和不稳定性。

元素定位

page.locator("css选择器")

page.get_by_text("文字"):通过文本内容进行元素定位

page.get_by_role("角色", name="名称")

page.get_by_placeholder("提示文字"):通过placeholder属性定位元素

page.get_by_title:通过title属性定位元素

page.get_by_alt_text:通过alt属性定位元素,通常是图像

page.locator("#id")

应该还有很多高级功能,暂时没研究那么多

相关推荐
源流之道13 小时前
联想Y700 五代(TB323FU)刷 ColorOS 16 教程指南
网络·ai·刷机指南·刷机心得
GEO从入门到精通13 小时前
课程怎么选?2026年GEO学习资源全梳理
学习
优化Henry14 小时前
LTE 载波频率与频点配置详解
运维·网络·学习·5g·信息与通信
xiaomu0012314 小时前
高湿环境床垫湿度管理技术框架:湿度阈值、排湿结构与材料选型
经验分享·学习·学习方法
zhangrelay15 小时前
ROS项目设计案例智能大模型正经乱答案例
linux·笔记·学习·ubuntu·机器人
probex_15 小时前
学习笔记:知识图谱是什么,在测试里能干什么
笔记·学习·知识图谱
无忧智库15 小时前
AI分镜提示词怎么选
人工智能·ai
小凡geo15 小时前
本地商家 GEO:用脚本一键生成 FAQPage 结构化数据,让 AI 切片更稳
开发语言·人工智能·python·microsoft·搜索引擎·ai
每天题库17 小时前
危险货物道路运输从业资格证题库刷题重点与错题梳理
学习·安全·考试·题库·考证
m4Rk_18 小时前
【论文阅读】Agent 记忆机制(86):Skill-Pro——用 Non-Parametric PPO 将交互经验演化为可复用技能
论文阅读·人工智能·学习·开源·github