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的Bottle框架写一个简单的服务接口的示例
Aug 25 Python
详解Python中的Descriptor描述符类
Jun 14 Python
详解python校验SQL脚本命名规则
Mar 22 Python
Python中print函数简单使用总结
Aug 05 Python
Django Admin中增加导出Excel功能过程解析
Sep 04 Python
Python如何使用BeautifulSoup爬取网页信息
Nov 26 Python
python+tifffile之tiff文件读写方式
Jan 13 Python
python数据分析:关键字提取方式
Feb 24 Python
Pytest单元测试框架如何实现参数化
Sep 05 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
Oct 12 Python
Python调用飞书发送消息的示例
Nov 10 Python
python-图片流传输的思路及示例(url转换二维码)
Dec 21 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
phpMyAdmin自动登录和取消自动登录的配置方法
2014/05/12 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
PHP get_html_translation_table()函数用法讲解
2019/02/16 PHP
JS日历 推荐
2006/12/03 Javascript
简单三步,搞掂内存泄漏
2007/03/10 Javascript
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
2015/09/04 Javascript
js数组去重的5种算法实现
2015/11/04 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
vue使用showdown并实现代码区域高亮的示例代码
2019/10/17 Javascript
Vue toFixed保留两位小数的3种方式
2020/10/23 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
Python中的两个内置模块介绍
2015/04/05 Python
详解Python多线程
2016/11/14 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
python实现将一个数组逆序输出的方法
2018/06/25 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
对python函数签名的方法详解
2019/01/22 Python
Python脚本去除文件的只读性操作
2020/03/05 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
如何对python的字典进行排序
2020/06/19 Python
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
澳大利亚最大的女装零售商:Millers
2017/09/10 全球购物
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
小学一年级评语大全
2014/04/22 职场文书
说明书格式及范文
2014/05/07 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL
Python OpenCV实现传统图片格式与base64转换
2021/06/13 Python
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫
Win11 vmware不兼容怎么办?Win11与VMware虚拟机不兼容的解决方法
2023/01/09 数码科技