python palywright库基本使用


Posted in Python onJanuary 21, 2021

开源方:微软

安装:pip install playwright;python -m playwright install

特点:自动化脚本录制;有同步、异步api

生成代码指令:python -m playwright codegen
其他:需要Python 3.7及以上;官方api为node版本,python版本待补充

同步:关键字为: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')
    sleep(5)
    browser.close()

异步:关键字为:async_playwright

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())

集成 pytest 测试

@pytest.fixture(scope="session")
def test_playwright_is_visible_on_google(page):
  page.goto("https://www.google.com")
  page.type("input[name=q]", "Playwright GitHub")
  page.click("input[type=submit]")
  page.waitForSelector("text=microsoft/Playwright")

执行 JS 代码

from playwright import sync_playwright
with sync_playwright() as p:
  browser = p.firefox.launch()
  page = browser.newPage()
  page.goto('https://www.example.com/')
  dimensions = page.evaluate('''() => {
  return {
      width: document.documentElement.clientWidth,
      height: document.documentElement.clientHeight,
      deviceScaleFactor: window.devicePixelRatio
      }  }''')
  print(dimensions)
  browser.close()

中断网络请求

from playwright import sync_playwright
with sync_playwright() as p:
  browser = p.chromium.launch()
  page = browser.newPage()

def log_and_continue_request(route, request):
  print(request.url)
  route.continue_()

记录并继续所有网络请求

page.route('**', lambda route, request: log_and_continue_request(route, request))
page.goto('http://todomvc.com')
browser.close()

以上就是python palywright库基本使用的详细内容,更多关于python palywright库的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Collatz 序列、逗号代码、字符图网格实例
Jun 22 Python
Python实现的读取/更改/写入xml文件操作示例
Aug 30 Python
TensorFlow实现Logistic回归
Sep 07 Python
Python批处理更改文件名os.rename的方法
Oct 26 Python
对python cv2批量灰度图片并保存的实例讲解
Nov 09 Python
python正向最大匹配分词和逆向最大匹配分词的实例
Nov 14 Python
解决pyqt5中QToolButton无法使用的问题
Jun 21 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
Feb 27 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
Mar 11 Python
pycharm实现在子类中添加一个父类没有的属性
Mar 12 Python
使用python创建生成动态链接库dll的方法
May 09 Python
Python基础详解之描述符
Apr 28 Python
python Scrapy爬虫框架的使用
Jan 21 #Python
python 可视化库PyG2Plot的使用
Jan 21 #Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
Jan 21 #Python
Python实现石头剪刀布游戏
Jan 20 #Python
python程序实现BTC(比特币)挖矿的完整代码
Jan 20 #Python
python3中celery异步框架简单使用+守护进程方式启动
Jan 20 #Python
Django+Django-Celery+Celery的整合实战
Jan 20 #Python
You might like
php 文件上传实例代码
2012/04/19 PHP
解析PHP自带的进位制之间的转换函数
2013/06/08 PHP
ThinkPHP单字母函数(快捷方法)使用总结
2014/07/23 PHP
laravel5.4生成验证码的实例讲解
2017/08/05 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
jQuery的强大选择器小结
2009/12/27 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
2013/08/13 Javascript
JQuery文本改变触发事件如聚焦事件、失焦事件
2014/01/15 Javascript
原生javascript获取元素样式
2014/12/31 Javascript
NodeJS学习笔记之MongoDB模块
2015/01/13 NodeJs
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
详解Puppeteer 入门教程
2018/05/09 Javascript
vue中slot(插槽)的介绍与使用
2018/11/12 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
JS几个常用的函数和对象定义与用法示例
2020/01/15 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
Python通过命令开启http.server服务器的方法
2017/11/04 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
python 三元运算符使用解析
2019/09/16 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
利用python为PostgreSQL的表自动添加分区
2021/01/18 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
一个基于canvas的移动端图片编辑器的实现
2020/10/28 HTML / CSS
Myprotein芬兰官网:欧洲第一运动营养品牌
2019/05/05 全球购物
车间副主任岗位职责
2013/12/24 职场文书
小学校园广播稿(3篇)
2014/09/19 职场文书
党校学习党性分析材料
2014/12/19 职场文书
2015中秋祝酒词
2015/08/12 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
使用python向MongoDB插入时间字段的操作
2021/05/18 Python
Linux中文件的基本属性介绍
2022/06/01 Servers