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设计模式编程之工厂方法模式的使用
Mar 02 Python
Python使用wxPython实现计算器
Jan 30 Python
python 简单照相机调用系统摄像头实现方法 pygame
Aug 03 Python
解决Python中定时任务线程无法自动退出的问题
Feb 18 Python
Python提取特定时间段内数据的方法实例
Apr 01 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
Aug 23 Python
在keras中实现查看其训练loss值
Jun 16 Python
浅析Python 条件控制语句
Jul 15 Python
Python如何爬取51cto数据并存入MySQL
Aug 25 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
Nov 17 Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 Python
Python 的 f-string 可以连接字符串与数字的原因解析
Feb 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
php pack与unpack 摸板字符字符含义
2009/10/29 PHP
php中数字、字符与对象判断函数用法实例
2014/11/26 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
js event事件的传递与冒泡处理
2009/12/06 Javascript
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
使用apply方法实现javascript中的对象继承
2013/12/16 Javascript
jquery实现弹出层完美居中效果
2014/03/03 Javascript
jquery带翻页动画的电子杂志代码分享
2015/08/21 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
2015/09/01 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
基于jQuery实现搜索关键字自动匹配功能
2020/03/26 Javascript
JQuery.validate在ie8下不支持的快速解决方法
2016/05/18 Javascript
VUEJS实战之修复错误并且美化时间(2)
2016/06/13 Javascript
angular使用post、get向后台传参的问题实例
2017/05/27 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
jQuery实现小火箭返回顶部特效
2020/02/03 jQuery
JS array数组检测方式解析
2020/05/19 Javascript
如何构建 vue-ssr 项目的方法步骤
2020/08/04 Javascript
openlayers4实现点动态扩散
2020/08/17 Javascript
Pyhthon中使用compileall模块编译源文件为pyc文件
2015/04/28 Python
Python实现从URL地址提取文件名的方法
2015/05/15 Python
Python将DataFrame的某一列作为index的方法
2018/04/08 Python
python库lxml在linux和WIN系统下的安装
2018/06/24 Python
Python3.5多进程原理与用法实例分析
2019/04/05 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
2020/01/19 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
初婚未育证明样本
2015/06/18 职场文书
公司与个人合作协议书
2016/03/19 职场文书
python中os.path.join()函数实例用法
2021/05/26 Python
Java并发编程必备之Future机制
2021/06/30 Java/Android
nginx安装以及配置的详细过程记录
2021/09/15 Servers