Playwright Browser Automation

# Playwright 浏览器自动化技能

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "Playwright Browser Automation" with this command: npx skills add hanl754/playwright-han

Playwright 浏览器自动化技能

📋 技能概述

Playwright 是微软开发的现代化浏览器自动化库,比 Selenium 更快、更可靠。

🆚 Playwright vs Selenium

特性PlaywrightSelenium
速度⚡ 快🐢 较慢
自动等待✅ 内置❌ 需要手动
多浏览器✅ Chromium/Firefox/WebKit✅ 所有主流浏览器
网络拦截✅ 支持❌ 有限
截图✅ 全页截图❌ 仅视口
API 设计✅ 现代化⚠️ 传统

🛠️ 安装

# 安装 Python 库
pip3 install playwright --break-system-packages

# 安装浏览器
python3 -m playwright install chromium

🚀 快速开始

基础示例

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # 启动浏览器
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    
    # 访问网页
    page.goto('https://www.baidu.com')
    
    # 截图
    page.screenshot(path='example.png')
    
    browser.close()

搜索示例

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    
    # 直接访问搜索 URL
    page.goto('https://www.baidu.com/s?wd=Python', wait_until='networkidle')
    
    # 获取搜索结果
    results = page.query_selector_all('.result h3')
    for i, r in enumerate(results[:5], 1):
        print(f"{i}. {r.inner_text()}")
    
    browser.close()

高级功能

1. 全页截图

page.screenshot(path='full.png', full_page=True)

2. 网络拦截

# 阻止图片加载
def block_images(route):
    if route.request.resource_type == "image":
        route.abort()
    else:
        route.continue_()

page.route("**/*", block_images)
page.goto("https://example.com")

3. 等待元素

# 自动等待元素可见
page.wait_for_selector('#my-element')

# 等待特定状态
page.wait_for_selector('.loaded', state='visible')

4. 表单操作

# 填写表单
page.fill('#username', 'user123')
page.fill('#password', 'pass456')
page.click('#login-btn')

# 等待跳转
page.wait_for_url('**/dashboard')

5. 多标签页

# 创建新标签
page = browser.new_page()

# 切换标签
pages = browser.pages
pages[0].bring_to_front()

📚 常用 API

页面导航

page.goto('https://example.com')
page.reload()
page.go_back()
page.go_forward()

元素操作

# 点击
page.click('#button')

# 输入
page.fill('#input', 'text')
page.type('#input', 'text', delay=100)  # 模拟键盘

# 选择
page.select_option('#select', 'value')
page.check('#checkbox')
page.uncheck('#checkbox')

获取内容

# 文本
text = page.inner_text('#element')
html = page.inner_html('#element')

# 属性
href = page.get_attribute('a', 'href')
value = page.input_value('#input')

# 数量
count = page.count('.items')

截图和 PDF

# 截图
page.screenshot(path='page.png')
page.screenshot(path='full.png', full_page=True)

# PDF (仅 Chromium)
page.pdf(path='page.pdf')

⚠️ 常见问题

问题 1: 元素不可见

解决: 使用 wait_for_selector

page.wait_for_selector('#element', state='visible')
page.click('#element')

问题 2: 页面加载慢

解决: 使用 networkidle

page.goto('https://example.com', wait_until='networkidle')

问题 3: 反爬虫

解决: 设置 User-Agent 和隐藏自动化特征

browser = p.chromium.launch(
    headless=True,
    args=['--disable-blink-features=AutomationControlled']
)
page.set_extra_http_headers({
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...'
})

🎯 最佳实践

  1. 使用 with 语句: 自动清理资源
  2. 启用 headless 模式: 节省资源
  3. 使用 networkidle: 确保页面完全加载
  4. 合理等待: 避免固定 sleep
  5. 错误处理: 使用 try-except

📦 依赖

playwright>=1.40.0

🔗 相关资源

🔄 从 Selenium 迁移

如果你之前使用 Selenium,迁移非常简单:

# Selenium 代码
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://example.com')
element = driver.find_element(By.ID, 'my-element')

# Playwright 等价代码
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto('https://example.com')
    element = page.locator('#my-element')

主要差异:

  • Playwright 使用 page 而不是 driver
  • 自动等待,不需要 WebDriverWait
  • 选择器更强大 (支持 CSS/XPath/text)
  • locator 替代 find_element

版本: v1.1
创建时间: 2026-03-14 02:00 AM
更新: 2026-03-14 08:07 AM (添加迁移指南)
作者: Han's AI Assistant

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

AutoClaw Browser Automation

Complete browser automation skill with MCP protocol support and Chrome extension

Registry SourceRecently Updated
3640Profile unavailable
Automation

AgentGo Cloud Browser

Automates browser interactions using AgentGo's distributed cloud browser cluster via playwright@1.51.0. Use when the user needs to navigate websites, interac...

Registry SourceRecently Updated
1340Profile unavailable
Coding

Handsfree Windows Control

Guide skill for controlling native Windows apps (UIA) and web browsers (Playwright) via the handsfree-windows CLI. Use when you need to automate or test desk...

Registry SourceRecently Updated
3980Profile unavailable
Automation

Virtual Desktop Pro v4 -- Universal Browser Execution

Persistent authenticated browser for OpenClaw via kasmweb/chrome Docker sidecar. Principal logs in once via noVNC — sessions saved permanently in Docker volu...

Registry SourceRecently Updated
390Profile unavailable