微软开源 Python 自动化神器 Playwright
背景
逛博客时候突然看到 Playwright web自动化,感觉很有意思,就翻看了很多博客,简单记录一下。
简介
Playwright是一个强大的Python库,仅用一个API即可自动执行Chromium、Firefox、WebKit等主流浏览器自动化操作,并同时支持以无头模式、有头模式运行。
添加了默认等待时间增加脚本稳定性,并提供视频录制、网络请求支持、自定义的定位器、自带调试器等新特性。
支持Linux、Mac以及Windows操作系统。
安装
安装playwright库
pip install playwright
安装浏览器驱动文件
python -m playwright install
录制
命令行键入 --help 可看到所有选项
python -m playwright codegen
codegen的用法可以使用--help查看,如果简单使用就是直接在命令后面加上url链接,如果有其他需要可以添加options。
options含义:
- -o:将录制的脚本保存到一个文件
- --target:规定生成脚本的语言,有JS和Python两种,默认为Python
- -b:指定浏览器驱动
以百度为例:在http://baidu.com搜索,用chromium驱动,将结果保存为baidu.py。
python -m playwright codegen --target python -o baidu.py -b chromium https://www.baidu.com
关闭浏览器,保存生成自动化脚本到baidu.py文件中。
from playwright.sync_api import sync_playwright #导入playwright def run(playwright):
browser = playwright.chromium.launch(headless=False) # 创建chromium的browser对象,当前使用的是playwright安装的自带的chromium,headless=False有头模式,True无头模式
context = browser.new_context() #创建context对象 # Open new page
page = context.new_page() # 创建page对象,真正打开浏览器界面 # Go to https://www.baidu.com/
page.goto("https://www.baidu.com/") # 跳转到百度url # Click input[name="wd"]
page.click("input[name=\"wd\"]") # 定位在搜索框点击 # Fill input[name="wd"]
page.fill("input[name=\"wd\"]", "软件测试")# 定位在搜索框中输入"软件测试" # Press Enter
# with page.expect_navigation(url="https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95&fenlei=256&rsv_pq=0xd33492f3000b66d2&rsv_t=7145nMfAB9Fhb5tkliRqZqj9RKsimjMqBXoFayyaZh5kiDbctolZSBfx5DAf&rqlang=en&rsv_enter=1&rsv_dl=tb&rsv_sug3=4&rsv_sug1=1&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&prefixsug=rua&rsp=5&inputT=2158&rsv_sug4=2906"):
with page.expect_navigation():
page.press("input[name=\"wd\"]", "Enter")#回车 # Close page
page.close() # ---------------------
context.close()# 关闭context
browser.close()# 关闭browser with sync_playwright() as playwright:
run(playwright)
playwright还提供了同步和异步。
同步
from playwright.sync_api import sync_playwright with sync_playwright() as p:
for browser_type in [p.chromium, p.firefox]:
browser = browser_type.launch(headless=False)
context = browser.new_context() page = browser.new_page()
page.goto("https://www.baidu.com/")
page.click("input[name=\"wd\"]")
page.fill("input[name=\"wd\"]", "软件测试")
with page.expect_navigation():
page.press("input[name=\"wd\"]", "Enter") # Close page
page.close() # ---------------------
context.close()
browser.close()
异步
import asyncio
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
for browser_type in [p.chromium, p.firefox]:
browser = await browser_type.launch(headless=False)
#context = await browser.new_context() page = await browser.new_page()
await page.goto("https://www.baidu.com/")
await page.click("input[name=\"wd\"]")
await page.fill("input[name=\"wd\"]", "软件测试")
await page.press("input[name=\"wd\"]", "Enter") # Close page
await page.close() # ---------------------
#await context.close()
await browser.close()
asyncio.get_event_loop().run_until_complete(main())
微软开源 Python 自动化神器 Playwright的更多相关文章
- 探索微软开源Python自动化神器Playwright
相信玩过爬虫的朋友都知道selenium,一个自动化测试的神器工具.写个Python自动化脚本解放双手基本上是常规的操作了,爬虫爬不了的,就用自动化测试凑一凑. 虽然selenium有完备的文档,但也 ...
- 微软开源的Web测试和自动化神器 Playwright
Playwright 是微软开源的一个用于 Web 测试和自动化的框架, 提供了可靠的端到端测试, 功能非常强大, 可以在测试, 爬虫,自动化场景中使用. 跨浏览器 Playwright 支持所有现代 ...
- 微软出品自动化神器Playwright,不用写一行代码(Playwright+Java)系列(一) 之 环境搭建及脚本录制
一.前言 半年前,偶然在视频号刷到某机构正在直播讲解Playwright框架的使用,就看了一会,感觉还不错,便被种草,就想着自己有时间也可以自己学一下,这一想着就半年多过去了. 读到这,你可能就去百度 ...
- 推荐一款最强Python自动化神器!不用写一行代码!
搞过自动化测试的小伙伴,相信都知道,在Web自动化测试中,有一款自动化测试神器工具: selenium.结合标准的WebDriver API来编写Python自动化脚本,可以实现解放双手,让脚本代替人 ...
- 推荐一款最强Python自动化神器!再也不用写代码了!
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 搞过自动化测试的小伙伴,相信都知道,在Web自动化测试中,有一款自动化测试神器工具: seleniu ...
- 微软出品自动化神器Playwright(Playwright+Java)系列(四) 之 浏览器操作
写在前面 今天是国庆节的最后一天,明天又要上班了,真的是感觉好像才开始放假一样,还是因为失恋没缓过来吗? 我的国庆七天 第1天,当了近半天的司机,陪家人去各大超市去购物,下午在家躺····· 第2-5 ...
- 微软最强 Python 自动化工具开源了!不用写一行代码!
1. 前言 最近,微软开源了一款非常强大的 Python 自动化依赖库:playwright-python 它支持主流的浏览器,包含:Chrome.Firefox.Safari.Microsoft E ...
- 微软出品自动化神器【Playwright+Java】系列(六) 之 字符输入、单元素键盘事件操作、上传文件、聚焦、拖拽、悬浮操作
前言: 今天一早起床,就一直太阳穴疼,吃了四片去痛片已经无效,真的是疼的直恶心. 如果说学习或者写文章,能够或者头疼的话,那我想说,我还能坚持一会..... 很久没更新这系列的文章了,那么我们将Pla ...
- 阿里最强 Python 自动化工具开源了!
1. 前言 大家好,我是安果! 最近,阿里内部开源了一个 iOS 端由 Python 编写的自动化工具,即:tidevice 它是一款跨平台的自动化开源工具,不依赖 Xcode 就可以启动 WebDr ...
- 微软开源自动机器学习工具NNI安装与使用
微软开源自动机器学习工具 – NNI安装与使用 在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到最佳模型的过程了.对于初学者来说,常常是无从下手.即使是对于有经验的算法工程师 ...
随机推荐
- java异常信息打印
如果你不仅想在日志中查看异常信息,也想把异常信息保存起来作为数据查看,那么你可以这样做 public void printException(Exception e) { ByteArrayOutpu ...
- vue 中 表单数据为数组,v-for 循环表单数据
element-ui 中,表单数据一般为对象,但是也有是数组的情况,比如上面图示:账号和密码可以是多个,点击添加会增加一条,点击删除会删除一条 表单数据为 form:{ accounts:[ { ac ...
- 关于Salesforce存在至于项目的选择List的取值问题
概要: 我们在做项目的时候,经常会遇到一个问题: 一个选择List字段的可选项被另一个选择List制约,这种情况如何在后台取得这两者的对应关系. 原文在这里(侵删): Apexで連動項目の選択肢を取得 ...
- uniapp记录
1.uniapp获取imei imsi 型号 厂商 https://blog.csdn.net/qq_35620498/article/details/112172115
- ls access.log.?.gz
因为日志文件每天都会打包, 所以昨天的问题可能就在今天的access.log/error.log文件里找不到了.如何找出个位数的log文件呢? 这里就有两种不同的匹配符号, *匹配多个, ?匹配一个, ...
- Excel下载乱码
1.前端:一定不可以以ajax的请求方式,不然会弹出乱码. 要使用<a href="../Ajax/AjaxPrint.ashx?action=PrintClick&Tid=& ...
- linux:day01 计算机基础 随堂笔记 马
本课程内容目录(前30天) 一,计算机基础 1,机械硬盘是比较慢的,如果有条件的话,还是换成固态硬盘有个120G就够了,价钱大概500G 700元 2,视频从一台机器拷贝到另外一台机器,复制的时候要限 ...
- Linux 系统jdk安装详细教程
安装jdk步骤先下载jdk的tar压缩包然后解压jdk并压缩至指定安装目录,如果不需要指定安装目录直接写tar -zxvf jdk压缩包名即可tar -zxvf jdk压缩包 -C /这里写指定安装目 ...
- R6-1 输入年份和天数,输出对应的年、月、日
R6-1 输入年份和天数,输出对应的年.月.日 分数 15 全屏浏览题目 切换布局 作者 张泳 单位 浙大城市学院 要求定义和调用函数month_day ( year, yeardy, *****pm ...
- 安装git-lfs
git大文件报错: smudge filter lfs failedwarning: 克隆成功,但是检出失败.您可以通过 'git status' 检查哪些已被检出,然后使用命令'git checko ...