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实现的简单窗口倒计时界面实例
May 05 Python
python fabric使用笔记
May 09 Python
Python实现正整数分解质因数操作示例
Aug 01 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
Feb 16 Python
Python字符串逆序的实现方法【一题多解】
Feb 18 Python
python实战串口助手_解决8串口多个发送的问题
Jun 12 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
Jul 31 Python
Python 爬取必应壁纸的实例讲解
Feb 24 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
python 3.8.3 安装配置图文教程
May 21 Python
Python做图像处理及视频音频文件分离和合成功能
Nov 24 Python
python Timer 类使用介绍
Dec 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字符串过滤与替换小结
2015/01/26 PHP
PHP7.1新功能之Nullable Type用法分析
2016/09/26 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
2017/05/05 PHP
PHP children()函数讲解
2019/02/03 PHP
javascript在一段文字中的光标处插入其他文字
2007/08/26 Javascript
JavaScript中判断函数是new还是()调用的区别说明
2011/04/07 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
jQuery修改CSS伪元素属性的方法
2014/07/30 Javascript
网页收藏夹显示ICO图标(代码少)
2015/08/04 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
jQuery实现基本淡入淡出效果的方法详解
2018/09/05 jQuery
Electron中实现大文件上传和断点续传功能
2018/10/28 Javascript
微信jssdk逻辑在vue中的运用详解
2018/11/14 Javascript
Element输入框带历史查询记录的实现示例
2019/01/15 Javascript
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
简介Django中内置的一些中间件
2015/07/24 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
python读取文件名称生成list的方法
2018/04/27 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
python utc datetime转换为时间戳的方法
2019/01/15 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
python实现滑雪者小游戏
2020/02/22 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
波兰最大的宠物用品网上商店:FERA.PL
2019/08/11 全球购物
财务会计专业求职信范文
2013/12/31 职场文书
修理厂厂长岗位职责
2014/01/30 职场文书
中学生运动会通讯稿大全
2014/09/18 职场文书
公司内部升职自荐信
2015/03/27 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书
分享Python获取本机IP地址的几种方法
2022/03/17 Python