简介

今年(2021年)微软开源了一个项目叫「playwright-python」,Playwright 是针对 Python 语言的纯自动化工具,它可以通过单个API自动执行 Chromium,Firefox 和 WebKit 浏览器,同时支持以无头模式、有头模式运行。

playwright官网

  1. 支持浏览器端的录制,生成自动化脚本,支持无头跑脚本

  2. 速度快,基本是selenium的好几倍,且支持浏览器异步运行

  3. 自动等待API,可拦截请求,随意mock

官方API

点击

搭建环境

  • 安装库 pip install playwright

  • 安装浏览器 python -m playwright install

录制脚本示例

命令行输入python -m playwright codegen,会自动弹出一个浏览器和代码文本框, 在浏览器输入www.baidu.com,然后输入ceshiyixia,结束录制,效果如图:

示例

模拟手机safari浏览器打开谷歌地图,定位到某个地点,然后截图

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

其他

Headless 和 headful: Playwright支持所有平台和浏览器上使用Headless模式和Headful模式。Headful非常适合调试。Headless运行更快,也可以更方便的在CI/云平台上运行。headless默认开启,设置为false,即为 headful模式,可以看到自动化的过程。

对比selenium

一家外网对比文章

简单来说以下几方面playwright有点优势:

  • 执行速度 - playwright运行时可以通过设置Headless后台直接运行,不用展示过程

  • Actionability - playwright不需要在代码中做等待判断,例如等待下一个页面出现时再点击某个按钮,这在playwright中会自动判断. 而selenium在代码中几乎每个点击都需要手动加入判断,甚至加入延迟时间,延迟时间加多了的话,极大影响执行效率.

  • Selectors - 在playwright中可以直接通过页面文本字符来选择对应元素.

  • Multi-tab & frames

参考

https://www.cnblogs.com/fnng/p/14274960.html

https://www.cnblogs.com/fnng/p/14311181.html

https://www.linkedin.com/pulse/playwright-selenium-next-15-years-mark-percival

selenium的挑战者 - playwright简析相关推荐

  1. 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析

    目录[阅读时间:约10分钟] 一.概述 二.对比: gorilla/mux与net/http DefaultServeMux 三.简单使用 四.源码简析 1.NewRouter函数 2.HandleF ...

  2. 简析平衡树(三)——浅谈Splay

    前言 原本以为\(Treap\)已经很难了,学习了\(Splay\),我才知道,没有最难,只有更难.(强烈建议先去学一学\(Treap\)再来看这篇博客) 简介 \(Splay\)是平衡树中的一种,除 ...

  3. 基于libmad库的MP3解码简析

    基于libmad库的MP3解码简析  MAD (libmad)是一个开源的高精度 MPEG 音频解码库,支持 MPEG-1(Layer I, Layer II 和 LayerIII(也就是 MP3). ...

  4. 简析 .NET Core 构成体系

    简析 .NET Core 构成体系 Roslyn 编译器 RyuJIT 编译器 CoreCLR & CoreRT CoreFX(.NET Core Libraries) .NET Core 代 ...

  5. Python源码学习:内建类型简析并简析int对象

    Python源码分析 本文环境python2.5系列 参考书籍<<Python源码剖析>> 上一篇文章中已经大致分析了下,Python的启动执行流程,现在我们分析一下Pytho ...

  6. Python源码学习:启动流程简析

    Python源码分析 本文环境python2.5系列 参考书籍<<Python源码剖析>> Python简介: python主要是动态语言,虽然Python语言也有编译,生成中 ...

  7. 简析TCP的三次握手与四次分手【转】

    转自 简析TCP的三次握手与四次分手 | 果冻想 http://www.jellythink.com/archives/705 TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇 ...

  8. ceph存储原理_Ceph存储引擎BlueStore简析

    前文我们创建了一个单节点的Ceph集群,并且创建了2个基于BlueStore的OSD.同时,为了便于学习,这两个OSD分别基于不同的布局,也就是一个OSD是基于3中不同的存储介质(这里是模拟的,并非真 ...

  9. Android Jetpack组件App Startup简析

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

最新文章

  1. python 文件追加写入_Python写入文件–解释了打开,读取,追加和其他文件处理功能
  2. String,StringBuffer与StringBuilder的区别??
  3. boost::mp11::mp_sort_q相关用法的测试程序
  4. SparkSQL之External Data读写parquet
  5. Unix/Linux环境C编程入门教程(18) kali-linuxCCPP开发环境搭建
  6. RocketMQ如何动态扩容和缩容
  7. PHP合并大文件 高性能 低内存 低CPU 快速合并大文件 非耗时操作 快速合并PDF等影视大文件...
  8. 在Java中编码为Base64
  9. Emacs:报错:File error: Cannot open load file,cl-lib解决
  10. KNN(k-nearest neighbor algorithm)--从原理到实现
  11. SketchUp 2019 组件库的正确应用
  12. Granger格兰杰因果关系的设计、基本假设和额外要求
  13. 安卓手机云控系统框架源码,PHP+Autojs, ,这套是空框架源码
  14. 逃离华强北后 他们去哪儿?采访身边真实故事——华强北电脑维修 内迁 张家界电脑维修 电子市场电脑维修
  15. mysql免安装版修改密码
  16. JS密码校验规则前台验证(不能连续字符(如123、abc)连续3位或3位以上)(不能相同字符(如111、aaa)连续3位或3位以上)
  17. Envoy代理GRPC服务支持通过restful进行访问
  18. 【网络安全】细分领域总览
  19. 【算法】搜索算法—盲目搜索和启发式搜索
  20. 完美的扎克伯格,倒霉的Facebook

热门文章

  1. Python爬取磁力链信息
  2. 电脑怎么设置动态壁纸?关于Windows和Mac壁纸的设置方法
  3. 使用cityscapes数据集建立yolov7测试集
  4. 构建《安全经济优质型电网》与实施电网经济运行
  5. windows下编写C++与C# 无崩溃程序
  6. Linux查看磁盘、文件系统、文件夹、文件大小的命令(lsblk、df、du、ll)
  7. 局域网计算机无法被访问,解决局域网无法访问故障
  8. 专业测试我也能够做 教您如何自己测试PC性能
  9. ibm服务器开不了机维修,IBM X3500服务器故障开不了机
  10. 该怎么拯救我的考研间歇性颓废?