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

Playwright for Python:安装及初步使用

文章目录

  • 一、Playwright介绍
    • 1.1 简单介绍
    • 1.2 支持的平台
    • 1.3 支持语言
    • 1.4 官方文档(python)
  • 二、开始
    • 2.1 安装要求
    • 2.2 安装
    • 2.3 脚本录制
    • 2.4 代码示例

一、Playwright介绍

1.1 简单介绍

Playwright是微软推出来的一款自动化测试工具,是专门为满足端到端测试需求而创建的。Playwright 支持所有现代渲染引擎,包括 Chromium、WebKit 和 Firefox。可以在 Windows、Linux 和 macOS 上进行本地或持续集成的测试,可以无头(headless)或有头(headed),还可以使用 Google Chrome 对 Android 和 Mobile Safari 进行本地模拟测试。

当今常用的三个自动化测试(或者爬虫)库:

SeleniumPuppeteerPlaywright
JavaScript 支持官方支持官方支持官方支持
Python 异步支持第三方,而且 bug 不少官方支持
Python 同步支持官方支持官方支持
维护者社区Google微软
可操作性浏览器Chrome/Firefox/Safari/EdgeChrome/FirefoxChrome/Firefox/Safari/Edge
模拟操作丰富度一般极好很好
Cookie 支持一般一般API 非常友好
代理切换支持一般一般极好

1.2 支持的平台

LinuxmacOSWindows
Chromium 89.0.4344.0支持支持支持
WebKit 14.1支持支持支持
Firefox 84.0b9支持支持支持

1.3 支持语言

JavaScript and TypeScript: https://github.com/microsoft/playwright
Java: https://github.com/microsoft/playwright-java
Python: https://github.com/microsoft/playwright-python
C#: https://github.com/microsoft/playwright-sharp

1.4 官方文档(python)

文档:https://playwright.dev/python/docs/intro
API: https://playwright.dev/python/docs/api/class-playwright

二、开始

2.1 安装要求

  • Python 3.8 or higher.
  • Windows 10+, Windows Server 2016+ or Windows Subsystem for Linux (WSL).
  • MacOS 12 Monterey or MacOS 13 Ventura.
  • Debian 11, Debian 12, Ubuntu 20.04 or Ubuntu 22.04.

2.2 安装

安装playwright及Chromium、Firefox和WebKit的浏览器二进制文件

  • pip安装
pip install playwright  # 安装playwright
playwright install  # 安装浏览器驱动
  • conda安装
conda install playwright  # 安装playwright
playwright install   # 安装浏览器驱动

2.3 脚本录制

我们可以先来体验一下脚本录制功能。

python -m playwright codegen 录制脚本–help 帮助文档-o 生成自动化脚本的目录(文件默认生成的地址为你cmd运行命令的地址,也可以在命令中输入需要保存的地址)–target 脚本语言,包含 JS 和 Python,分别对应值为:python 和 javascript-b 指定浏览器驱动

在cmd中执行命令: python -m playwright codegen -o "./test_code.py" --target python-pytest

参考其他命令:python -m playwright codegen --target python -o test.py -b chromium https://www.baidu.com

注意:如果需要停止脚本录制,只需要关闭浏览器即可。

在这里插入图片描述

2.4 代码示例

当前安装版本:
python=3.9.5
playwright=1.37.0

# -*- coding: utf-8 -*-
# @Time    : 2023/9/1 10:52
# @Author  : chenyinhua
# @File    : test_demo.py
# @Software: PyCharm
# @Desc:import re
from playwright.sync_api import sync_playwright, expect# 同步API (初学者建议先使用同步API)
with sync_playwright() as playwright:"""在使用 with sync_playwright() as playwright: 时,Playwright 会创建一个 Playwright 实例,并将其作为 playwright 变量绑定到 with 代码块中。在代码块结束时,会自动调用 playwright.close() 方法来关闭所有已创建的页面和浏览器实例。这样可以确保资源的正常释放和关闭,避免资源泄漏和浪费。因此,使用 with sync_playwright() as playwright: 是一个推荐的方式来管理 Playwright 的实例。"""# 默认是无头模式# browser = playwright.chromium.launch()# 使用有头模式browser = playwright.chromium.launch(headless=False, channel="chrome")"""通过调用 browser.new_context() 方法,我们可以在当前浏览器实例中创建一个新的上下文。这个新的上下文将与原始上下文相互隔离,它们不会共享 cookies、缓存等数据。您可以在同一个浏览器实例中创建多个上下文,每个上下文可以具有自己的页面和状态。可以理解为浏览器的无痕模式"""context = browser.new_context()"""一般来说,一个page对应一个浏览器选项卡。而Page对象的作用在于和页面的内容进行交互,以及导航和加载新的页面。在上下文中创建一个新的页面时,该页面会继承上下文的各种属性和设置,例如 cookies、请求拦截器、代理等。此外,在同一上下文中创建的页面之间共享网络连接,因此加载速度更快。"""page = context.new_page()# 访问地址page.goto("https://www.gitlink.org.cn/")# 断言网页标题=GitLinkexpect(page).to_have_title(re.compile("GitLink"))# 点击按钮,会新开窗口打开页面page.locator("//a[text()='开源项目']").click()# 此处需要更新页面的值page = page.wait_for_event("popup")# 断言网页标题=开源项目expect(page).to_have_title(re.compile("开源项目"))
http://www.lryc.cn/news/148754.html

相关文章:

  • Ubuntu 20.04.5 怎么安装微信
  • HummerRisk V1.4.0发布
  • C语言每日一练----Day(12)
  • 【Tkinter系列11/15】小部件 (Text)
  • 通过「内网穿透」技术,实现出差期间远程访问企业局域网中的象过河ERP系统
  • ChatGPT和大型语言模型(LLM)是什么关系?
  • list(介绍与实现)
  • Centos7 使用docker安装oracle数据库(超详细)
  • 昨天面试的时候被提问到的问题集合(答案)
  • PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像...
  • 详解IP协议
  • Stream流式编程用例
  • 【Pytorch笔记】1. tensor的创建
  • Maven 基础之安装和命令行使用
  • 运动耳机需要具备哪些功能、挂耳式运动蓝牙耳机推荐
  • 【MCU】SD NAND芯片之国产新选择
  • java 多线程
  • ConsoleApplication17_2项目免杀(Fiber+VEH Hook Load)
  • 【Vue3 知识第五讲】条件渲染、列表渲染知识详解
  • vite+vue3从0开始搭建一个后管项目【学习随记二】
  • Linux的内存理解
  • 财务数据分析?奥威BI数据可视化工具很擅长
  • 趣味微项目:玩转Python编程,轻松学习快乐成长!
  • 总结安卓Preference使用过程中注意的问题
  • Laf 中大猫谱:让每一只流浪猫都有家
  • uniapp 使用mqtt 报错 socketTask onOpen is not a function
  • Docker部署RustDesk Server 设置开机自启
  • ESLint如何在vue3项目中配置和使用
  • Frida-hook:微信数据库的破解
  • 【Unity每日一记】WheelColider组件汽车游戏的关键