Playwright 常用操作
目录
前置安装
pip install playwright
playwright install chromium
## 推荐最稳版本
优先选用:
- Python 3.9 兼容性最好,踩坑最少
- Python 3.10、3.11 完全没问题(目前最主流)
- Python3.12、3.13 新版也支持,少数第三方库可能有兼容问题
一、基础浏览器生命周期
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
# 启动浏览器;headless=False 可视化窗口,new‑headless新版无头
browser = p.chromium.launch(headless=False)
# 独立浏览器环境(cookie、缓存、账号互相隔离,适合多账号)
context = browser.new_context(viewport={"width":1920,"height":1080})
# 新建标签页
page = context.new_page()
# 跳转网页
page.goto("https://www.baidu.com")
# 关闭
browser.close()
二、页面跳转、刷新、前进后退
page.goto("https://www.baidu.com")
page.reload() # 刷新
page.go_back() # 后退
page.go_forward() # 前进
page.set_default_timeout(8000) # 全局元素等待超时,默认5000ms
三、八种常用元素定位
# 1.id
page.get_by_id("kw")
# 2.文本
page.get_by_text("百度一下")
# 3.按钮文字
page.get_by_role("button",name="百度一下")
# 4.输入框placeholder
page.get_by_placeholder("请输入搜索词")
# 5.类名
page.locator(".s‑btn")
# 6.css选择器
page.locator("div#head")
# 7.xpath
page.locator("//input[@id='kw']")
# 8.自定义属性
page.get_by_test_id("search")
四、元素操作
# 点击
page.get_by_id("su").click()
# 双击
page.locator("#box").dblclick()
# 右键
page.locator("#box").click(button="right")
# 输入(一次性填入)
page.get_by_id("kw").fill("python")
# 模拟真人逐字输入带延迟
page.get_by_id("kw").type("hello")
# 获取文本
text = page.get_by_id("title").text_content()
# 获取属性值
src = page.locator("img").get_attribute("src")
# 判断是否可见
page.get_by_id("kw").is_visible()
# 勾选复选框
page.locator("#agree").check()
# 下拉选择
page.locator("#select").select_option("1")
五、等待(Playwright 最强特性:自动等待)
click/fill/locator 会自动等待元素加载、可见、可点击,不需要 time.sleep
# 强制等待(尽量少用)
page.wait_for_timeout(2000)
# 等待元素出现
page.wait_for_selector("#result")
# 等待url
page.wait_for_url("**/search")
# 等待页面加载完毕
page.wait_for_load_state("networkidle")
六、截图、录屏、导出 PDF
# 可视区域截图
page.screenshot(path="screen.png")
# 整页长截图
page.screenshot(path="full.png",full_page=True)
# 单个元素截图
page.locator("div").screenshot(path="elem.png")
# 录屏:创建上下文开启录像
context = browser.new_context(record_video_dir="./video")
# 关闭上下文自动生成视频
# 导出PDF(仅chromium无头模式)
context = browser.new_context()
page = context.new_page()
page.goto("https://www.baidu.com")
page.pdf(path="baidu.pdf")
七、网络拦截、抓包、修改请求
# 监听所有接口请求
page.on("request",lambda req:print(req.url,req.method))
# 监听响应
page.on("response",lambda res:print(res.url,res.status))
# 拦截并屏蔽图片、css加速网页
page.route("**/*.jpg",lambda route:route.abort())
# 替换接口返回数据
page.route("**/api/data",lambda r:r.fulfill(body='{"code":0}'))
八、Cookie、本地存储
# 获取全部cookie
cookies = context.cookies()
# 设置cookie
context.add_cookie({"name":"token","value":"xxx","url":"https://xxx.com"})
# js读取localStorage
token = page.evaluate("localStorage.getItem('token')")
九、鼠标、键盘操作
# 鼠标移动、拖拽
page.mouse.move(200,300)
page.mouse.down()
page.mouse.up()
# 键盘按键
page.keyboard.press("Enter")
page.keyboard.press("Control+a")
page.keyboard.type("text")
# 滚动页面
page.evaluate("window.scrollTo(0,800)")
十、上传 & 下载文件
# 上传文件
page.get_by_type("file").set_input_files("D:/test.jpg")
# 监听下载
with page.expect_download() as download_info:
page.get_by_text("下载文件").click()
download = download_info.value
download.save_as("./down.zip")
十一、反自动化‑浏览器指纹伪装
from playwright_stealth import stealth_sync
context = browser.new_context(user_agent="你的真实浏览器UA")
page = context.new_page()
stealth_sync(page) # 清除webdriver指纹
启动参数关闭自动化标记
browser = p.chromium.launch(
args=["--disable-blink-features=AutomationControlled"],
ignore_default_args=["--enable-automation"]
)
十二、代理 IP 设置
context = browser.new_context(
proxy={"server":"http://127.0.0.1:7890"}
)
十三、手机移动端模拟
from playwright.sync_api import devices
iphone = devices["iPhone 15"]
context = browser.new_context(**iphone)
十四、JS 执行
# 在浏览器页面运行js
result = page.evaluate("""
()=>{
return document.title
}
""")
print(result)
十五、代码录制(懒人神器)
终端直接执行,手动操作浏览器自动生成 python 代码
playwright codegen https://www.baidu.com
十六、多标签页管理
# 监听新建弹窗
with page.expect_popup() as popup_info:
page.get_by_text("打开新页面").click()
new_page = popup_info.value
new_page.goto("https://xxx")
十七、持久化浏览器(保存登录状态、Cookie)
# 浏览器数据存到文件夹,下次打开保留登录记录
context = p.chromium.launch_persistent_context("./browser_data",headless=False)
十八、playwright chromium.launch () 常用参数大全
browser = p.chromium.launch(
# -------------------- 核心模式 --------------------
headless=False, # False=有窗口;True=无头模式;"new"新版无头
slow_mo=500, # 每个操作延迟毫秒,调试非常好用
timeout=30000, # 启动浏览器超时时间
# -------------------- 浏览器渠道(选择浏览器) --------------------
channel="chrome", # 使用你本机安装Chrome,不使用内置chromium
# 可选:chrome, msedge, chromium-beta, chrome-dev
# -------------------- 窗口控制 --------------------
args=[
"--start-maximized", # 窗口最大化
"--window‑size=1920,1080", # 指定窗口大小
"--no‑sandbox", # linux服务器必须加!无沙箱
"--disable‑setuid‑sandbox",
"--disable‑blink‑features=AutomationControlled", # 隐藏自动化特征,防检测
"--user‑agent=Mozilla/5.0 ...", # 自定义UA
],
# -------------------- 用户数据 / 缓存(保留登录态) --------------------
user_data_dir="./chrome_profile", # 浏览器用户文件夹,保存cookie、登录记录
# -------------------- 反爬虫、防检测 --------------------
ignore_default_args=["--enable‑automation"], # 删除自动化标记参数
# -------------------- 代理设置 --------------------
proxy={
"server": "http://127.0.0.1:7890",
# "username":"xxx",
# "password":"xxx"
},
# -------------------- 其他常用 --------------------
executable_path=None, # 手动指定浏览器exe路径
downloads_path="./download", # 文件下载保存目录
handle_sighup=True,
)
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:Playwright 常用操作
本文作者:伟生
发布时间:2026-08-16, 22:01:00
最后更新:2026-08-16, 22:24:37
原始链接:http://yoursite.com/2026/08/16/ceshi_19_playwright_02/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。