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通过openpyxl生成Excel文件的方法
May 12 Python
python获取mp3文件信息的方法
Jun 15 Python
Python守护进程和脚本单例运行详解
Jan 06 Python
简述Python2与Python3的不同点
Jan 21 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
Mar 19 Python
Python实现判断一行代码是否为注释的方法
May 23 Python
TensorFlow实现卷积神经网络
May 24 Python
浅谈python编译pyc工程--导包问题解决
Mar 20 Python
Python3 main函数使用sys.argv传入多个参数的实现
Dec 25 Python
python函数中将变量名转换成字符串实例
May 11 Python
python实现发送带附件的邮件代码分享
Sep 22 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 24 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
收音机史话 - 1960年代前后的DIY
2021/03/02 无线电
php 函数使用方法与函数定义方法
2010/05/09 PHP
php中防止恶意刷新页面的代码小结
2012/10/31 PHP
如何使用FireFox插件FirePHP调试PHP
2013/07/23 PHP
php eval函数一句话木马代码
2015/05/21 PHP
JavaScript 注册事件代码
2011/01/27 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
2015/03/03 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
原生js实现手风琴功能(支持横纵向调用)
2017/01/13 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
JavaScript canvas实现围绕旋转动画
2017/11/18 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
微信小程序 select 下拉框组件功能
2019/09/09 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
[51:29]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第一场 11.05
2020/11/05 DOTA
Python编码时应该注意的几个情况
2013/03/04 Python
Python读写txt文本文件的操作方法全解析
2016/06/26 Python
Python中struct模块对字节流/二进制流的操作教程
2017/01/21 Python
详解python基础之while循环及if判断
2017/08/24 Python
Django admin实现图书管理系统菜鸟级教程完整实例
2017/12/12 Python
Python中交换两个元素的实现方法
2018/06/29 Python
CSS3中background-clip和background-origin的区别示例介绍
2014/03/10 HTML / CSS
深入理解css中vertical-align属性
2017/04/18 HTML / CSS
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
艺术专业大学生自我评价
2013/09/22 职场文书
2014自主招生自荐信策略
2014/01/27 职场文书
公司门卫的岗位职责
2014/02/19 职场文书
爱心捐款倡议书
2014/04/14 职场文书
2015年银行个人工作总结
2015/05/14 职场文书
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js