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中as用法实例分析
Apr 30 Python
python OpenCV学习笔记实现二维直方图
Feb 08 Python
python创建文件备份的脚本
Sep 11 Python
设置python3为默认python的方法
Oct 31 Python
浅谈python编译pyc工程--导包问题解决
Mar 20 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
Apr 03 Python
Python爬取数据保存为Json格式的代码示例
Apr 09 Python
django-rest-swagger对API接口注释的方法
Aug 29 Python
Pandas 缺失数据处理的实现
Nov 04 Python
python+Django+pycharm+mysql 搭建首个web项目详解
Nov 29 Python
python virtualenv虚拟环境配置与使用教程详解
Jul 13 Python
再谈python_tkinter弹出对话框创建
Mar 20 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
数据库的日期格式转换
2006/10/09 PHP
php数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
给大家分享几个常用的PHP函数
2017/01/15 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
JS的数组迭代方法
2015/02/05 Javascript
详解nodejs与javascript中的aes加密
2016/05/22 NodeJs
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
利用vscode调试编译后的js代码详解
2018/05/14 Javascript
写一个Vue Popup组件
2019/02/25 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
2019/10/10 jQuery
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
详解JavaScript的this指向和绑定
2020/09/08 Javascript
Python的ORM框架SQLAlchemy入门教程
2014/04/28 Python
怎样使用Python脚本日志功能
2016/08/14 Python
详解如何利用Cython为Python代码加速
2018/01/27 Python
pandas 对每一列数据进行标准化的方法
2018/06/09 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
python orm 框架中sqlalchemy用法实例详解
2020/02/02 Python
python使用Geany编辑器配置方法
2020/02/21 Python
Keras loss函数剖析
2020/07/06 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
html5 div布局与table布局详解
2016/11/16 HTML / CSS
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
爱护公共设施标语
2014/06/24 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
事业单位工作人员年度考核个人总结
2015/02/12 职场文书
学校2016年九九重阳节活动总结
2016/04/01 职场文书
2019已经过半,你知道年中工作总结该怎么写吗?
2019/07/03 职场文书