当前位置: 首页 > news >正文

Playwright与Selenium的对比

明白了!既然你有 Python 和 Selenium 的基础,那学习 Playwright 会非常快。我们来用你熟悉的视角来讲解。


Playwright vs Selenium:程序员视角

把它们都看作是 "浏览器遥控器",但 Playwright 是新一代的、功能更强的遥控器。

相同点:

  • 都是自动化测试框架
  • 都支持多种浏览器
  • 都支持多种编程语言(Python、Java、JavaScript等)
  • 基本操作逻辑相似(定位元素、点击、输入等)

关键差异:

特性 Selenium Playwright
架构 通过浏览器驱动通信 直接与浏览器调试协议通信
速度 较慢 更快(无需中间驱动)
自动等待 需要显式等待 内置智能等待
移动端 需要额外配置 内置移动设备模拟
录制功能 需要第三方工具 内置代码生成器

在 PyCharm 中设置 Playwright(Python版)

步骤 1:创建虚拟环境(推荐)

# 在 PyCharm 终端中执行
python -m venv playwright_env
source playwright_env/bin/activate  # Linux/Mac
# 或
playwright_env\Scripts\activate    # Windows

步骤 2:安装 Playwright

pip install playwright

步骤 3:安装浏览器

playwright install

这个命令会自动下载 Chrome、Firefox、WebKit 浏览器。


从 Selenium 到 Playwright:代码对比

基础启动浏览器对比

Selenium 方式:

from selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.get("https://www.baidu.com")

Playwright 方式:

from playwright.sync_api import sync_playwrightwith sync_playwright() as p:browser = p.chromium.launch(headless=False)page = browser.new_page()page.goto("https://www.baidu.com")

元素定位和操作对比

Selenium:

# 定位元素
search_box = driver.find_element(By.ID, "kw")
search_btn = driver.find_element(By.ID, "su")# 操作
search_box.send_keys("Selenium测试")
search_btn.click()# 显式等待
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "content_left"))
)

Playwright:

# 定位和操作一气呵成
page.fill("#kw", "Playwright测试")  # 相当于 find_element + send_keys
page.click("#su")                   # 相当于 find_element + click# 智能等待 - 不需要显式等待,Playwright 会自动等待元素可交互
# 如果需要显式等待:
page.wait_for_selector("#content_left")

Playwright 的核心优势(你会喜欢的)

1. 自动等待机制

Playwright 在执行操作前会自动等待元素:

  • 可点击
  • 可填充
  • 可见
  • 启用状态

这意味着你很少需要写 WebDriverWait 这样的代码。

2. 强大的选择器

# CSS 选择器
page.click("#search")# XPath
page.click("//button[@id='search']")# 文本选择器(超实用!)
page.click("text=登录")
page.click("text='确 定'")  # 包含空格的文本# 组合选择器
page.click("#header >> text=首页")

3. 录制代码生成器

Playwright 自带一个代码录制工具,可以生成 Python 代码:

playwright codegen https://www.baidu.com

运行这个命令会打开浏览器和一个代码窗口,你在浏览器中的操作会实时生成对应的 Python 代码。

4. 移动设备模拟

from playwright.sync_api import sync_playwrightwith sync_playwright() as p:# 模拟 iPhoneiphone = p.devices["iPhone 12"]browser = p.chromium.launch(headless=False)context = browser.new_context(**iphone)page = context.new_page()page.goto("https://m.baidu.com")

5. 网络拦截和 Mock

# 拦截请求
page.route("**/*.json", lambda route: route.fulfill(status=200,body='{"mock": "data"}'
))# 或者直接阻止图片加载提升速度
page.route("**/*.{png,jpg,jpeg}", lambda route: route.abort())

完整的 Playwright Python 示例

from playwright.sync_api import sync_playwrightdef test_baidu_search():with sync_playwright() as p:# 启动浏览器browser = p.chromium.launch(headless=False)page = browser.new_page()try:# 导航到百度page.goto("https://www.baidu.com")# 输入搜索词page.fill("#kw", "Playwright Python")# 点击搜索按钮page.click("#su")# 等待搜索结果加载page.wait_for_selector("#content_left")# 截图保存page.screenshot(path="search_results.png")# 获取第一个结果的标题first_result = page.query_selector("#content_left >> .result >> a")if first_result:title = first_result.text_content()print(f"第一个结果: {title}")finally:# 关闭浏览器browser.close()if __name__ == "__main__":test_baidu_search()

调试技巧(在 PyCharm 中)

1. 慢动作模式

browser = p.chromium.launch(headless=False,slow_mo=1000  # 每个操作延迟1秒,方便观察
)

2. 打开开发者工具

browser = p.chromium.launch(headless=False,devtools=True  # 自动打开开发者工具
)

3. PyCharm 调试

直接在 PyCharm 中设置断点,像调试普通 Python 代码一样调试你的 Playwright 脚本。


http://www.gsyq.cn/news/35826.html

相关文章:

  • MLGO微算法科技发布多用户协同推理批处理优化系统,重构AI推理服务效率与能耗新标准
  • 2025 年 HDPE 土工膜,聚乙烯土工膜,糙面土工膜厂家最新推荐,产能、专利、环保三维数据透视!
  • 2025年乌鲁木齐黄金回收权威推荐榜单:黄金上门回收/黄金首饰回收/黄金首饰加工服务商精选
  • The lifelong path of human
  • 四大主流平台深度测评:2025 企业自动化运维平台选型指南,自动化巡检平台适配核心场景
  • 2025年10月印刷厂推荐:行业口碑榜与可验证解决方案
  • SQL - SELECT语句执行时是先做JOIN还是先执行WHERE条件进行过滤?
  • 2025年10月中国精益生产咨询公司十强榜:客观评测与选择指引
  • 陕西省基本农田调整技术服务品牌:2025年顶级服务商选择与行业洞察
  • 西南电线电缆供应厂家:卓越品质与创新技术的完美结合
  • 口碑好的照明路灯工厂:探索行业领先的照明解决方案
  • 口碑好的照明路灯工厂:2025年行业领导者与创新解决方案
  • 高压隔离探头在能源变换系统中的精确测量应用方案​
  • 2025 年 10 月喷雾干燥机厂家权威推荐榜:离心喷雾、压力喷雾、高速离心喷雾、闭式循环压力干燥机及造粒机专业选购指南
  • 2025 年 10 月立式砂磨机厂家推荐排行榜,立式纳米砂磨机,小型立式砂磨机,高效研磨设备源头企业精选
  • 20W 奖金!探索 Agent 新纪元
  • allure pytest request playwright selenium 自动化测试
  • Python 判断、循环、三元运算
  • Cursor 2.0与Composer发布
  • 2025年10月精益管理咨询公司排名榜:五强实测评价
  • 2025年10月精益管理咨询公司推荐:年度排行与精选评测
  • 2025年10月精益管理咨询公司排名:五强对比指南
  • 2025年10月精益制造咨询公司推荐:榜单评测助你决策
  • 2025年10月中国管理咨询公司推荐榜:六强对比与选择指南
  • 2025年10月精益制造咨询公司推荐:五强榜单与实战对比
  • 2025年10月中国管理咨询公司排名榜:金蓝盟携四家机构横向对比
  • 2025年【介绍对象】权威深度解析推荐:读书郎教育科技全维度拆解
  • 2025年10月中国管理咨询公司对比榜:金蓝盟与五强机构评测
  • 2025年10月中国管理咨询公司对比榜:金蓝盟与五家机构参数化评测
  • numpy 中二维数据 乘以(@) 一维数组。