python+playwright微软自动化工具的使用


Posted in Python onFebruary 02, 2021

它支持主流的浏览器,包含:Chrome、Firefox、Safari、Microsoft Edge 等,同时支持以无头模式、有头模式运行

playwright-python 提供了同步、异步的 API,可以结合 Pytest 测试框架使用,并且支持浏览器端的自动化脚本录制

项目地址:https://github.com/microsoft/playwright-python

安装playwright-python,执行命令:pip install playwright

python+playwright微软自动化工具的使用

安装成功之后,执行命令:python -m playwright install,自动下载 Chromeium、Firefox、Safari(WebKit)浏览器驱动到本地

python+playwright微软自动化工具的使用

同步

同步的关键字为:sync_playwright

比如,我们依次使用三个浏览器内核打开浏览器,然后百度一下,接着对在搜索界面截图,最后关闭浏览器

from time import sleep
 
from playwright import sync_playwright
 
# 注意:默认是无头模式
 
with sync_playwright() as p:
    # 分别对应三个浏览器驱动
    for browser_type in [p.chromium, p.firefox, p.webkit]:
 
        # 指定为有头模式,方便查看
        browser = browser_type.launch(headless=False)
        page = browser.newPage()
        page.goto('http://baidu.com')
 
        # 执行一次搜索操作
        page.fill("input[name=\"wd\"]", "AirPython")
        with page.expect_navigation():
            page.press("input[name=\"wd\"]", "Enter")
 
        # 等待页面加载完全
        page.waitForSelector("text=百度热榜")
 
        # 截图
        page.screenshot(path=f'example-{browser_type.name}.png')
 
        # 休眠5s
        sleep(5)
 
        # 关闭浏览器
        browser.close()

需要指出的是,playwright-python 内置的 API 基本上囊括常见的自动化操作

异步

异步步的关键字为:async_playwright

结合 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(headless=False)
            page = await browser.newPage()
 
            await page.goto('http://baidu.com')
 
            # 执行一次搜索操作
            await page.fill("input[name=\"wd\"]", "AirPython")
            await page.press("input[name=\"wd\"]", "Enter")
 
            # 等待页面加载完全
            await page.waitForSelector("text=百度热榜")
 
            # 截图
            await page.screenshot(path=f'example-{browser_type.name}.png')
 
            await browser.close()
 
 
asyncio.get_event_loop().run_until_complete(main())

事实上,Playwright 是一个跨语言的自动化框架,支持 Python、Java、JS 等

Playwright 相比传统的自动化框架 Selenium 来说,在 Context 上下文及 API 使用上,显得更简洁且强大

到此这篇关于python+playwright微软自动化工具的使用的文章就介绍到这了,更多相关python playwright微软自动化工具内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现的几个常用排序算法实例
Jun 16 Python
Python列表(list)常用操作方法小结
Feb 02 Python
在Python中操作字典之fromkeys()方法的使用
May 21 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
Jan 12 Python
Python实现图片滑动式验证识别方法
Nov 09 Python
浅谈python requests 的put, post 请求参数的问题
Jan 02 Python
python 计算数据偏差和峰度的方法
Jun 29 Python
PyTorch的Optimizer训练工具的实现
Aug 18 Python
Python IDE环境之 新版Pycharm安装详细教程
Mar 05 Python
Python matplotlib可视化实例解析
Jun 01 Python
Python数据相关系数矩阵和热力图轻松实现教程
Jun 16 Python
Python代码需要缩进吗
Jul 01 Python
python爬虫智能翻页批量下载文件的实例详解
Feb 02 #Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
Feb 02 #Python
python3.9.1环境安装的方法(图文)
Feb 02 #Python
M1芯片安装python3.9.1的实现
Feb 02 #Python
python 使用OpenCV进行简单的人像分割与合成
Feb 02 #Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 #Python
Python实现钉钉/企业微信自动打卡的示例代码
Feb 02 #Python
You might like
PHP 面向对象 final类与final方法
2010/05/05 PHP
php对数组排序代码分享
2014/02/24 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
php模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
php中使用url传递数组的方法
2015/02/11 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
PHP中数组转换为SimpleXML教程
2019/01/27 PHP
Thinkphp页面跳转设置跳转等待时间的操作
2019/10/16 PHP
jquery操作select大全
2014/04/25 Javascript
js分页代码分享
2014/04/28 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
简单几步实现返回顶部效果
2016/12/05 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
2019/10/10 jQuery
Python使用urllib2模块抓取HTML页面资源的实例分享
2016/05/03 Python
python中的字典操作及字典函数
2018/01/03 Python
对python 判断数字是否小于0的方法详解
2019/01/26 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
2020/05/26 Python
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
校园之星获奖感言
2014/01/29 职场文书
幼儿园校车司机的岗位职责
2014/01/30 职场文书
租赁协议书范本
2014/04/22 职场文书
励志演讲稿范文
2014/04/29 职场文书
拉拉队口号
2014/06/16 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书
物业管理交接协议书
2016/03/24 职场文书
MySQL生成千万测试数据以及遇到的问题
2022/08/05 MySQL