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 相关文章推荐
用Python写的图片蜘蛛人代码
Aug 27 Python
Python的print用法示例
Feb 11 Python
CentOS安装pillow报错的解决方法
Jan 27 Python
浅谈python抛出异常、自定义异常, 传递异常
Jun 20 Python
pandas中的DataFrame按指定顺序输出所有列的方法
Apr 10 Python
详解python里的命名规范
Jul 16 Python
Pycharm如何打断点的方法步骤
Jun 13 Python
Python实现的ftp服务器功能详解【附源码下载】
Jun 26 Python
python实现将视频按帧读取到自定义目录
Dec 10 Python
Django Auth用户认证组件实现代码
Oct 13 Python
Python编程编写完善的命令行工具
Sep 15 Python
Python实现位图分割的效果
Nov 20 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 stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
mongodb和php的用法详解
2019/03/25 PHP
javascript实现checkbox全选的代码
2015/04/30 Javascript
JavaScript实现select添加option
2015/07/03 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
终于实现了!精彩的jquery弹幕效果
2016/07/18 Javascript
javascript如何创建对象
2016/08/29 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
2017/05/17 Javascript
简单谈谈React中的路由系统
2017/07/25 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
2019/04/08 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
记一次react前端项目打包优化的方法
2020/03/30 Javascript
vue键盘事件点击事件加native操作
2020/07/27 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
2020/08/25 Javascript
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
Django实现跨域请求过程详解
2019/07/25 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
python实现二分类和多分类的ROC曲线教程
2020/06/15 Python
区分python中的进程与线程
2020/08/13 Python
python爬虫scrapy框架的梨视频案例解析
2021/02/20 Python
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
中级会计职业生涯规划范文
2014/01/16 职场文书
白血病募捐倡议书
2014/05/14 职场文书
抗洪救灾标语
2014/10/08 职场文书
2014年团委工作总结
2014/11/13 职场文书
2014年宣传思想工作总结
2014/12/10 职场文书
CAD实训总结范文
2015/08/03 职场文书