Playwright 极速入门:1 小时搞定环境搭建与首个测试脚本

一、Playwright 简介与核心优势

Playwright 是微软开源的现代化 Web 自动化工具,支持 Chromium(Chrome/Edge)、Firefox、WebKit(Safari) 三大浏览器引擎,提供跨平台(Windows/macOS/Linux)和跨语言(Python/JS/Java/C#)的统一 API。
核心优势

  • ✅ 自动等待机制:智能等待元素加载,减少因网络延迟导致的失败
  • ✅ 录制与调试工具:内置 codegen 实时生成操作脚本
  • ✅多语言支持:Python/Node.js/Java/C# 灵活选择
  • ✅ 真移动端模拟:内置设备描述符(如 iPhone 13/Pixel5)

二、环境搭建(10分钟搞定!)

1. 安装 Python 环境(需 3.8+)

# 检查 Python 版本
python --version
# 安装 Playwright 库
pip install playwright
# 安装浏览器驱动(自动下载 Chromium/Firefox/WebKit)
playwright install

避坑提示:国内用户可通过设置镜像加速下载:

set PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright
playwright install

2. 验证安装

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)  # 显示浏览器界面
    page = browser.new_page()
    page.goto("https://playwright.dev")
    print(page.title())  # 输出:Fast and reliable end-to-end testing
    browser.close()

运行成功即表示环境就绪 ✅

三、首个测试脚本:网页导航与截图(15分钟)

from playwright.sync_api import sync_playwright

def run():
    with sync_playwright() as p:
        # 启动 Chromium 并访问网页
        browser = p.chromium.launch(headless=False)
        page = browser.new_page()
        page.goto("https://example.com")
        
        # 保存截图(含完整页面)
        page.screenshot(path="example.png", full_page=True)
        
        # 打印页面标题
        print("页面标题:", page.title())
        
        browser.close()
        
  if __name__ == "__main__":
    run()      
        

效果说明

  • 自动打开浏览器并访问 example.com
  • 生成全页截图 example.png
  • 控制台输出标题 “Example Domain”

四、进阶操作:元素定位与交互(20分钟)

1. 元素定位四大方式

# 文本定位(推荐!)
page.locator("text='登录'").click()

# CSS 选择器
page.locator("#submit-btn").click()

# XPath
page.locator("//button[@class='confirm']").click()

# 语义化定位(ARIA 角色)
page.get_by_role("button", name="提交").click()

最佳实践:优先使用 text 或 get_by_role() 提高可读性和稳定性。

2. 模拟用户登录流程

# 输入用户名密码
page.get_by_placeholder("请输入手机号/邮箱").fill("test@example.com")
page.get_by_placeholder("请输入密码").fill("mypassword")

# 点击登录按钮
page.get_by_role("button", name="登录").click()

# 等待导航完成
page.wait_for_url("**/dashboard")
注:wait_for_url() 确保页面跳转完成再继续操作。

五、调试神器:录制工具与 Trace Viewer

1. 脚本录制(codegen)

# 启动录制器(自动生成 Python 代码)
playwright codegen https://example.com
操作浏览器界面即可实时生成代码,适合快速原型设计:
!https://example.com/codegen-demo.png

提示:录制后需优化定位器逻辑。

2. 追踪测试过程(Trace Viewer)

context = browser.new_context()
context.tracing.start(screenshots=True, snapshots=True)  # 开启记录
# ...执行操作...
context.tracing.stop(path="trace.zip")                  # 保存日志
查看日志:
npx playwright show-trace trace.zip

可回放操作视频、查看 DOM 快照及网络请求。

六、同步 vs 异步模式选择

模式适用场景代码示例
同步模式简单脚本/快速调试from playwright.sync_api import …
异步模式高并发/复杂任务await page.goto(…)

异步示例:

import asyncio
from playwright.async_api import async_playwright

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()
        await page.goto("https://example.com")
        await browser.close()

asyncio.run(main())

提示:爬虫或批量操作时异步效率提升 3 倍+。

七、实战案例:爬取商品数据

async def scrape_products():
    asyncwith async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()
        await page.goto("https://shop.example.com")
        
        # 获取所有商品标题
        titles = await page.eval_on_selector_all(
            ".product-item", 
            "elements => elements.map(e => e.textContent)"
        )
        print(titles)  # 输出:['商品A', '商品B', ...]
        
        await browser.close()

关键点:eval_on_selector_all() 直接执行 JS 提取数据。

八、总结与学习路径

1 小时成果清单:

  • ✅ 环境搭建与浏览器驱动安装
  • ✅ 首个导航+截图脚本
  • ✅ 元素定位与表单操作
  • ✅ 脚本录制与 Trace 调试

下一步学习:
➡️ 框架集成:结合 Pytest 管理测试用例
➡️ 移动端测试:p.devices[“iPhone 13”] 模拟真机
➡️ CI/CD 流水线:GitHub Actions 自动执行测试

**官方资源:**
https://playwright.dev/python
https://github.com/microsoft/playwright-python

掌握基础操作后,你已具备用 Playwright 实现 自动化测试、数据采集、监控任务 的能力!

内容概要:本文介绍了一个基于MATLAB实现的无人机三维路径规划项目,采用蚁群算法(ACO)多层感知机(MLP)相结合的混合模型(ACO-MLP)。该模型通过三维环境离散化建模,利用ACO进行全局路径搜索,并引入MLP对环境特征进行自适应学习启发因子优化,实现路径的动态调整多目标优化。项目解决了高维空间建模、动态障碍规避、局部最优陷阱、算法实时性及多目标权衡等关键技术难题,结合并行计算参数自适应机制,提升了路径规划的智能性、安全性和工程适用性。文中提供了详细的模型架构、核心算法流程及MATLAB代码示例,涵盖空间建模、信息素更新、MLP训练融合优化等关键步骤。; 适合人群:具备一定MATLAB编程基础,熟悉智能优化算法神经网络的高校学生、科研人员及从事无人机路径规划相关工作的工程师;适合从事智能无人系统、自动驾驶、机器人导航等领域的研究人员; 使用场景及目标:①应用于复杂三维环境下的无人机路径规划,如城市物流、灾害救援、军事侦察等场景;②实现飞行安全、能耗优化、路径平滑实时避障等多目标协同优化;③为智能无人系统的自主决策环境适应能力提供算法支持; 阅读建议:此资源结合理论模型MATLAB实践,建议读者在理解ACOMLP基本原理的基础上,结合代码示例进行仿真调试,重点关注ACO-MLP融合机制、多目标优化函数设计及参数自适应策略的实现,以深入掌握混合智能算法在工程中的应用方法。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值