背景

逛博客时候突然看到 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的更多相关文章

  1. 探索微软开源Python自动化神器Playwright

    相信玩过爬虫的朋友都知道selenium,一个自动化测试的神器工具.写个Python自动化脚本解放双手基本上是常规的操作了,爬虫爬不了的,就用自动化测试凑一凑. 虽然selenium有完备的文档,但也 ...

  2. 微软开源的Web测试和自动化神器 Playwright

    Playwright 是微软开源的一个用于 Web 测试和自动化的框架, 提供了可靠的端到端测试, 功能非常强大, 可以在测试, 爬虫,自动化场景中使用. 跨浏览器 Playwright 支持所有现代 ...

  3. 微软出品自动化神器Playwright,不用写一行代码(Playwright+Java)系列(一) 之 环境搭建及脚本录制

    一.前言 半年前,偶然在视频号刷到某机构正在直播讲解Playwright框架的使用,就看了一会,感觉还不错,便被种草,就想着自己有时间也可以自己学一下,这一想着就半年多过去了. 读到这,你可能就去百度 ...

  4. 推荐一款最强Python自动化神器!不用写一行代码!

    搞过自动化测试的小伙伴,相信都知道,在Web自动化测试中,有一款自动化测试神器工具: selenium.结合标准的WebDriver API来编写Python自动化脚本,可以实现解放双手,让脚本代替人 ...

  5. 推荐一款最强Python自动化神器!再也不用写代码了!

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 搞过自动化测试的小伙伴,相信都知道,在Web自动化测试中,有一款自动化测试神器工具: seleniu ...

  6. 微软出品自动化神器Playwright(Playwright+Java)系列(四) 之 浏览器操作

    写在前面 今天是国庆节的最后一天,明天又要上班了,真的是感觉好像才开始放假一样,还是因为失恋没缓过来吗? 我的国庆七天 第1天,当了近半天的司机,陪家人去各大超市去购物,下午在家躺····· 第2-5 ...

  7. 微软最强 Python 自动化工具开源了!不用写一行代码!

    1. 前言 最近,微软开源了一款非常强大的 Python 自动化依赖库:playwright-python 它支持主流的浏览器,包含:Chrome.Firefox.Safari.Microsoft E ...

  8. 微软出品自动化神器【Playwright+Java】系列(六) 之 字符输入、单元素键盘事件操作、上传文件、聚焦、拖拽、悬浮操作

    前言: 今天一早起床,就一直太阳穴疼,吃了四片去痛片已经无效,真的是疼的直恶心. 如果说学习或者写文章,能够或者头疼的话,那我想说,我还能坚持一会..... 很久没更新这系列的文章了,那么我们将Pla ...

  9. 阿里最强 Python 自动化工具开源了!

    1. 前言 大家好,我是安果! 最近,阿里内部开源了一个 iOS 端由 Python 编写的自动化工具,即:tidevice 它是一款跨平台的自动化开源工具,不依赖 Xcode 就可以启动 WebDr ...

  10. 微软开源自动机器学习工具NNI安装与使用

    微软开源自动机器学习工具 – NNI安装与使用   在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到最佳模型的过程了.对于初学者来说,常常是无从下手.即使是对于有经验的算法工程师 ...

随机推荐

  1. 解决 VSCode git commit 时 No such file or directory 报错问题

    在git 进行 commit 时出现了 Git: .git/hooks/pre-commit: line 2: ./node_modules/pre-commit/hook: No such file ...

  2. ReactNative 的一些工程化阻碍

    2017年我们团队就开始使用 ReactNative 开发了一些内部管理工具,由于性能及开发体验一般,老是碰到迷一样的问题我们几乎都快放弃使用了,后来随着设备性能的提升,以及框架本身的改进,很多问题得 ...

  3. c语言动态库与静态库

    // show.h #ifndef __SHOW_H_ #define __SHOW_H_ #include <stdio.h> #include "math.h" v ...

  4. 大道至简读后感以及JAVA伪代码

    <大道至简>这本书引用<愚公移山>一文,生动完美的诠释了编程的整个过程.在两千年前的寓言中,愚公集项目组织者.团队经理.编程人员.技术分析师等众多角色于一身.首先是原始需求的产 ...

  5. 【Ubuntu】Ubuntu 技巧集锦

    『Ubuntu 22.04 国内镜像 阿里云/163源/清华大学/中科大』 『各种 Proxy 设置 GUI/Terminal/APT』 『设置 wget Proxy』 『设置右键菜单-新建文档』 『 ...

  6. TP5--页面跳转

    //模拟登录 // $admin = 0; // if($admin != 10){ // //页面跳转 // $this->success('登录失败','login/index'); // ...

  7. mybatis-关联查询3-自关联查询

    一对多的方式处理 查询指定栏目的所有子孙栏目 查询指定栏目及其所有子孙栏目 多对 一的方式处理

  8. 服务器做bond,交换机做port-channel

    端口绑定的种类(具体介绍网上很多参考) balance-rr or 0 active-backup or 1 balance-xor or 2 broadcast or 3 802.3ad or 4 ...

  9. spring mvc基本介绍

    1 MVC 盖帘: MVC 是模型(model)-视图(view)-控制器(controller)的缩写, 是一种用于设计编写 Web 应用程序表现层的模式. MVC 设计模式的三大角色: Model ...

  10. Mogdb / opengauss 用户密码错误,用户被锁

    # 问题概述xxx客户新上一套opengauss数据库,在测试中程序里用户的密码配置错误,导致用户被锁# 解决方案1.跟oracle 语法一样alter user xxx account unlock ...