关于 selenium Puppeteer playwright 三款自动化工具的用法与比较

一、Selenium

Selenium 是一款非常流行的开源自动化测试工具。

支持所有主流浏览器。

支持多种编程语言(Python、Java、C#、Ruby 等)。

稳定性高,在 Web 应用的自动化测试中非常稳定,广泛用于企业级测试。

维护良好

Selenium 用 python示例:获取页面标题

安装:

pip install selenium

需要配置浏览器驱动 例如:Chrome浏览器  需要下载 chromedriver 

 Chrome for Testing availability

from selenium import webdriver

# 启动 Chrome 浏览器
driver = webdriver.Chrome()

# 访问页面
driver.get("https://example.com")

# 获取页面标题
print(driver.title)

# 关闭浏览器
driver.quit()

二、Puppeteer

Puppeteer 是由 Google 提供的一个 Node.js 库,专门用于控制 Chromium 浏览器进行自动化操作。

专注于 Chromium 浏览器。

专注于 JavaScript/Node.js。

Puppeteer 使用 async/await 语法,支持异步操作,使代码更简洁。

Puppeteer 示例:获取页面标题

安装:

npm install puppeteer
// 用 require 引入 puppeteer 库
//(前提是你已经通过 npm install puppeteer 安装了它)。
const puppeteer = require('puppeteer');


//定义并立即执行一个 异步函数(async IIFE)。
// Puppeteer 的很多 API 是基于 Promise 的,
//你需要用 await 去等待它们的结果,必须放在 async 函数中。
(async () => {

  // 启动 Puppeteer
  //headless: true 表示不会弹出图形化的浏览器窗口(更轻便、更适合自动化和服务器端操作)。
  //browser 是浏览器对象,可以用来创建页面、访问标签页、操作窗口等。
  const browser = await puppeteer.launch({ headless: true });

  // 创建新的页面
  // 创建一个新的标签页(Page 对象)。
  // 就像你在 Chrome 打开一个新标签一样,后续的所有网页操作都在这个对象上进行。
  const page = await browser.newPage();

  // 访问网页
  // 让浏览器打开 https://www.baidu.com 网页,相当于你在地址栏输入这个网址按下回车。
  // goto() 会等待页面加载完成
  await page.goto('https://www.baidu.com');

  // 获取页面标题
  // 获取当前网页的 <title> 内容。
  // 相当于在浏览器中运行 document.title,Puppeteer 内部就是通过 JavaScript 执行获取的。
  const title = await page.title();
  console.log(title);

  // 关闭浏览器
  await browser.close();
})();

三、Playwright

Playwright 是由 Microsoft 开发的开源自动化测试框架,是新一代跨浏览器自动化工具。

目前支持的浏览器:Chromium、Firefox 和 WebKit(Safari 引擎)。

支持 Python / Node.js / Java / C# 语言

Playwright 可以拦截网络请求、模拟网络环境,非常适合用于模拟复杂的 Web 应用场景。

Playwright 用 python 示例:获取页面标题

安装 Python API

pip install playwright

安装 Playwright 所需的浏览器内核

playwright install
# 从 playwright 的同步 API 中导入 sync_playwright,用于控制浏览器。
from playwright.sync_api import sync_playwright

def main():

    # 使用 with 上下文打开 Playwright 控制器(p),这样退出后会自动清理资源。
    with sync_playwright() as p:

        # 启动一个 Chromium 浏览器(也就是 Chrome)实例,后续可以用它创建网页。
        browser = p.chromium.launch(headless=True)

        # 在浏览器中新建一个标签页,返回一个 page 对象。
        # 类似于你手动打开了一个新的网页 tab。
        # 所有后续网页操作(访问网页、点击按钮、获取元素)都在这个 page 对象上进行。
        page = browser.new_page()
        
        # 让浏览器跳转(请求)指定的 URL。timeout=60000 表示设置最大等待时间为 60 秒。
        page.goto("https://movie.douban.com/top250", timeout=60000)
        
        # 显式等待页面中所有电影条目(每部电影一个 <li>)出现,确保页面已经加载完成。
        # .grid_view li 是豆瓣电影列表的每个电影条目的选择器。
        page.wait_for_selector(".grid_view li")

        # 获取页面中所有电影条目元素,返回一个列表
        # 每个元素都是一个电影的 <li> DOM 节点。
        items = page.query_selector_all(".grid_view li")

        for item in items:

            # 在每个电影条目中,选取 .title 类(即电影名所在的标签),提取其纯文本内容。
            title = item.query_selector(".title").inner_text()
            print(title)

        browser.close()

main()

功能和易用性对比

功能项SeleniumPuppeteerPlaywright
API 现代化✖️ 较老派✔️ 简洁✔️ 更现代更强大
无头模式✔️✔️✔️
页面截图✔️✔️✔️
录制视频✖️ 需要配合第三方✔️(用插件)✔️(内建)
捕获网络请求需要插件✔️✔️✔️(支持拦截、伪造、修改请求)
多标签页/上下文隔离有限制✔️ 支持浏览器隔离上下文
模拟行为(鼠标轨迹等)基础支持✔️✔️✔️(可以精细控制,防反爬)

稳定性与反爬能力对比

项目SeleniumPuppeteerPlaywright
反爬特征明显✔️(容易被检测)中等(稍好)最强(可以模拟真实用户操作)✔️✔️
拦截请求 / 模拟响应✖️ 不支持✔️✔️✔️
支持验证码识别辅助✖️可以集成✔️ 自动截图 + OCR 最好集成

项目适用场景对比

场景推荐工具
自动化测试(兼容各种浏览器)Selenium
控制 Chrome 抓 JS 数据Puppeteer / Playwright
要模拟真实用户行为(防反爬)✔️ Playwright
要跨浏览器(如模拟 Safari)✔️ Playwright(支持 WebKit)
使用 Python 写爬虫Selenium / ✔️ Playwright
要抓包 / 拦截接口 / 构造 POST 请求✔️✔️ Playwright

总结推荐表

要求推荐
学术稳定、兼容性强Selenium
JS 项目 + Chrome 操作Puppeteer
高级爬虫 / 渗透测试 / 破解验证Playwright(最强)✔️✔️✔️
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值