Python自动化神器-Playwright

article/2025/8/27 2:52:53

1、Playwright介绍

Playwright是一个强大的Python库,仅用一个API即可自动执行Chromium、Firefox、WebKit等主流浏览器自动化操作,并同时支持以无头模式、有头模式运行。Playwright提供的自动化技术是绿色的、功能强大、可靠且快速,支持Linux、Mac以及Windows操作系统。

2、Playwright的安装

安装playwright库
pip install playwright


注意:

1>安装Playwright依赖库,需要Python3.7+

2>安装浏览器驱动文件,安装Chromium、Firefox、WebKit等浏览器的驱动文件
python -m playwright install

 

3、录制生成脚本

Playwright无需写一行代码,我们只需手动操作浏览器,它会录制我们的操作,然后自动生成代码脚本。

1>python -m playwright codegen

唤起浏览器,手动操作录制自动生成代码

2>通过 python -m playwright codegen --help查看codegen的用法

常用options含义:

  • -o:将录制的脚本保存到一个文件

  • --target:规定生成脚本的语言,有JS和Python两种,默认为Python

  • -b:指定浏览器驱动

python -m playwright codegen --target python -o my.py -b chromium https://www.baidu.com

命令行输入后会自动打开浏览器,然后可以看见在浏览器上的一举一动都会被自动翻译成代码

结束后自动关闭浏览器,保存生成的自动化脚本到py文件

4、此外,playwright还提供了同步和异步的API接口

同步

依次打开三个浏览器,前往baidu搜索,截图后退出

from playwright import sync_playwright
with sync_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:browser = browser_type.launch()page = browser.newPage()page.goto('https://baidu.com/')page.screenshot(path=f'example-{browser_type.name}.png')browser.close()

异步

异步操作可结合asyncio同时进行三个浏览器操作

 

import asyncio
from playwright import async_playwright
async def main():
async with async_playwright() as p:for browser_type in [p.chromium, p.firefox, p.webkit]:browser = await browser_type.launch()page = await browser.newPage()await page.goto('http://baidu.com/')await page.screenshot(path=f'example-{browser_type.name}.png')await browser.close()asyncio.get_event_loop().run_until_complete(main())

移动端

playwright还可支持移动端的浏览器模拟

模拟在给定地理位置上手机iphone 11 pro上的Safari浏览器,首先导航到maps.google.com,然后执行定位并截图

from playwright import sync_playwright
with sync_playwright() as p:
iphone_11 = p.devices['iPhone 11 Pro']
browser = p.webkit.launch(headless=False)
context = browser.newContext(**iphone_11,locale='en-US',geolocation={ 'longitude': 12.492507, 'latitude': 41.889938 },permissions=['geolocation']
)
page = context.newPage()
page.goto('https://maps.google.com')
page.click('text="Your location"')
page.screenshot(path='colosseum-iphone.png')
browser.close()

总结:

playwright相比其他自动化测试工具的优势

1、支持所有浏览器的

  • 在Chromium,Firefox和WebKit上进行测试。

  • 跨平台的WebKit测试。

  • 测试手机。

  • 无报文头与有报文头。

2、拥有快速可靠的执行

  • 自动等待APIs。

  • 无超时自动化。

  • 与浏览器上下文保持并行。

  • 弹性元素选择器。

3、拥有强大的自动化功能

  • 多个域,页面和框架。

  • 强大的网络控制。

  • 现代网络功能。

  • 涵盖所有场景的能力。支持文件下载和上传,进程外iframe,原生输入事件,甚至是深色模式。

局限性:

  • 旧版Edge和IE11支持。Playwright不支持旧版Microsoft Edge或IE11(弃用通知)。支持新的Microsoft Edge(在Chromium上)。

  • Java语言绑定:Playwright API目前无法在Java或Ruby中使用。这是暂时的限制,因为Playwright旨在支持任何语言的绑定。

  • 在真实的移动设备上进行测试:Playwright使用桌面浏览器来模拟移动设备。


http://chatgpt.dhexx.cn/article/agN3bC1R.shtml

相关文章

python自动化测试绕过手机验证码

自动化测试登录需使用手机验证码,但是测试水平太弱只能让开发写死验证码??? 不服气就试试别的方法,这里提供两种解决思路: 1.从服务器日志中获取 此种方法尤其适合生产数据库不开放给测试的公司&#xff…

什么是Python自动化

python自动化是指用python语言实现高效的自动化操作,比如自动化测试,自动化运维等等,而自动化就是指系统在没有人或较少人的直接参与下,按照人的要求进行处理的过程。 Python是一门计算机脚本语言,用它可以实现高效的自…

7个实用的Python自动化代码,别再重复造轮子了

关于Python有一句名言:不要重复造轮子。 但是问题有三个: 1、你不知道已经有哪些轮子已经造好了,哪个适合你用。有名有姓的的著名轮子就400多个,更别说没名没姓自己在制造中的轮子。 2、确实没重复造轮子,但是在重复…

全网最详细的Python自动化测试

1. 概述 1.1 python自动化 什么是python自动化?我理解的Python自动化测试就是把以前人为测试转化为机器测试的一种过程。自动化测试是一种比手工测试更快获得故障反馈的方法。 自动化测试是一种质量保障的方式,最重要的还是以做好一款高质量产品为前提…

python自动化

一、python回顾 1、python的发展方向 web开发 爬虫数据分析 机器学习(深度学习) 自动化运维 自动化测试 2、python测试成长 初级测试工程师 中级测试工程师 测试开发工程师 3、自动化与Python python的强大的第三方库,为很多的自动化流程提供的快捷的实现…

bootdo jar 改war 坑

最新下载bootdo pom文件中这一行请保持注释,严格按照bootdo的文档走。 请勿自由发挥!

BootDo平台数据库使用Oracle

最近协助使用开源框架,在网上到个BootDo 使用起来还是非常方便的,由于数据库原例子使用mysql,需求要后台使用成Oracle,有时看看例子还不错,真要修改成项目来使用,还有得研究,从连接数据库、acti…

BootDo:修改启动时的象形文字

一、内容介绍 BootDo是在SpringBoot基础上搭建的一个Java基础开发平台,很有学习价值,本文将介绍BootDo如何修改启动时的象形文字。 二、前置工作 1.本文bootdo下载的地址为https://gitee.com/lcg0124/bootdo,压缩包名为lcg0124-bootdo-mas…

基于 Springboot 和 Mybatis 的后台管理系统 BootDo

介绍: 项目介绍 面向学习型的开源框架,简洁高效,减少过渡封装,展现技术本质 Springboot作为基础框架,使用mybatis作为持久层框架 使用官方推荐的thymeleaf做为模板引擎,shiro作为安全框架,主流技术&…

Bootdo后台管理系统使用步骤详解

Bootdo后台管理系统使用步骤 Home1.导入项目2.创建数据库3.启动项目4.数据库新表代码生成5.jar包导出6.添加菜单 Home 面向学习型的开源框架,简洁高效,减少过渡封装,展现技术本质! 项目地址(GitHub):https://github.com/lcg0124/bootdo 项…

bootdo框架使用步骤总结

仅作为个人学习纪录,其他人只作为参考,图较少,会不断更新。创建时间 2018-04-19 项目地址 bootdo官网 因为从git上下载的文件结构并不是习惯,所以将里面一层的复制到最完成根目录idea导入,选择到项目以后&#xff0c…

登陆页面总结(bootdo)

总结自开源项目bootdo 图标设置 验证码 验证码生成工具类 import org.slf4j.Logger; import org.slf4j.LoggerFactory;import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.…

bootdo mysql_iBootDo: 基于BootDo项目定制版,兼容MySQL、Oracle

iBootDo 项目介绍 基于BootDo项目定制版,根据个人项目经验改造:兼容MySQL、Oracle,Thymeleaf升级到3.0,默认Session存入Redis等; 感谢BootDo作者 lcg0124 的分享。 BootDo地址: https://gitee.com/lcg0124/…

bootdo框架首页解析

跳转首页 左侧大的方向上分三大块 左侧第一大块中 包含有 重复的功能 可以去掉 右侧部分控制左侧展开和收起的功能 <div class"row content-tabs"><button class"roll-nav roll-left J_tabLeft"><i class"fa fa-backward">&l…

后台管理页面(bootdo)

项目源码&#xff1a;bootdo: 面向学习型的开源框架&#xff0c;简洁高效&#xff0c;减少过渡封装&#xff0c;展现技术本质 左边的菜单栏分析 数据库结构 样式实例 用树结构封装菜单数据&#xff0c;方便获取前后节点&#xff0c;通过自身id和父id相匹配&#xff0c;构建菜…

BootDo项目

因为本地项目需要使用bootdo和springCloud结合&#xff0c;所以&#xff0c;我今天开始学习一下bootdo的知识 但是从官网下载下一个bootdo项目导入idea之后发现并不能运行起来&#xff0c;报cant found git.exe 然后需要在官网下载对应版本的git。并且在setting–git中配置一下…

BootDo:源代码打包与自启动

一、内容介绍 BootDo是在SpringBoot基础上搭建的一个Java基础开发平台&#xff0c;很有学习价值&#xff0c;本文将介绍BootDo的源代码打包与自启动。 二、前置工作 1.本文bootdo下载的地址为https://gitee.com/lcg0124/bootdo&#xff0c;压缩包名为lcg0124-bootdo-master.…

BootDO框架的使用及介绍

BootDo是一个用于微服务的高效、低包、面向学习的开源Java EE开发框架。 BootDo是一个基于SpringBoot的Java基本开发平台。MyBatis是数据访问层&#xff0c;ApacheShiro是权限授权层&#xff0c;Ehcache缓存常用数据。 BootDo主要定位在后台管理系统中学习通信。内置后端管理…

API网关设计与实现(一)

API网关使用场景API网关技术选型与应用架构 API网关使用场景 在使用微服务架构场景下&#xff0c;客户端在调用后台微服务时&#xff0c;都需要进行登陆认证、权限认证、流量控制、负载均衡、健康检查等操作&#xff0c;这些操作是调用每一个微服务都必须。因此需要将该操作交给…