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清理子进程机制剖析
Nov 23 Python
Python字典数据对象拆分的简单实现方法
Dec 05 Python
Python进度条实时显示处理进度的示例代码
Jan 30 Python
Python遍历numpy数组的实例
Apr 04 Python
Windows下python3.6.4安装教程
Jul 31 Python
Python实现网站表单提交和模板
Jan 15 Python
Python使用scrapy爬取阳光热线问政平台过程解析
Aug 14 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
Python函数参数类型及排序原理总结
Dec 19 Python
Python之多进程与多线程的使用
Feb 23 Python
Pytest实现setup和teardown的详细使用详解
Apr 17 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
May 27 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
磨咖啡豆的密诀
2021/03/03 冲泡冲煮
PHP 学习路线与时间表
2010/02/21 PHP
js静态作用域的功能。
2006/12/25 Javascript
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
2013/11/13 Javascript
javascript操作excel生成报表示例
2014/05/08 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
2017/04/03 jQuery
Angular2 组件间通过@Input @Output通讯示例
2017/08/24 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
angular2中使用第三方js库的实例
2018/02/26 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
小程序实现短信登录倒计时
2019/07/12 Javascript
使用vue实现多规格选择实例(SKU)
2019/08/23 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
vue 动态表单开发方法案例详解
2019/12/02 Javascript
javascript实现贪吃蛇经典游戏
2020/04/10 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
使用python实现ANN
2017/12/20 Python
python文本数据相似度的度量
2018/03/12 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
Django框架实现的分页demo示例
2019/05/25 Python
Python动态语言与鸭子类型详解
2019/07/01 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
keras 权重保存和权重载入方式
2020/05/21 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
python 实现有道翻译功能
2021/02/26 Python
HTML5 device access 设备访问详解
2018/05/24 HTML / CSS
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
应届生面试求职信
2014/07/02 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs
springboot实现string转json json里面带数组
2022/06/16 Java/Android