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 16 Python
Python中shutil模块的学习笔记教程
Apr 04 Python
Python中的浮点数原理与运算分析
Oct 12 Python
基于Python pip用国内镜像下载的方法
Jun 12 Python
python实现QQ空间自动点赞功能
Apr 09 Python
Python生成指定数量的优惠码实操内容
Jun 18 Python
libreoffice python 操作word及excel文档的方法
Jul 04 Python
Python facenet进行人脸识别测试过程解析
Aug 16 Python
win10环境下配置vscode python开发环境的教程详解
Oct 16 Python
Python多继承以及MRO顺序的使用
Nov 11 Python
jupyter notebook中美观显示矩阵实例
Apr 17 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
Feb 01 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实现Ftp用户的在线管理的代码
2007/03/06 PHP
php session劫持和防范的方法
2013/11/12 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
2014/03/08 PHP
PHP获取中英混合字符串长度的方法
2014/06/07 PHP
php+mysql实现用户注册登陆的方法
2015/01/03 PHP
PHP利用APC模块实现大文件上传进度条的方法
2015/10/29 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
angular.js指令中的controller、compile与link函数的不同之处
2017/05/10 Javascript
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
2017/12/24 jQuery
详解给Vue2路由导航钩子和axios拦截器做个封装
2018/04/10 Javascript
JS中DOM元素的attribute与property属性示例详解
2018/09/04 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
原生JS实现无缝轮播图片
2020/06/24 Javascript
解决vant的Toast组件时提示not defined的问题
2020/11/11 Javascript
[01:28:43]2014 DOTA2华西杯精英邀请赛5 24 DK VS CIS
2014/05/25 DOTA
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
tensorflow 获取变量&打印权值的实例讲解
2018/06/14 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
2019/04/15 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
python IDLE添加行号显示教程
2020/04/25 Python
雅诗兰黛旗下专业男士保养领导品牌:Lab Series
2017/05/15 全球购物
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
Whistles官网:英国女装品牌
2020/08/14 全球购物
共筑中国梦演讲稿
2014/04/23 职场文书
大学生工作自荐书
2014/06/16 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
本溪水洞导游词
2015/02/11 职场文书
优秀班主任工作总结2015
2015/05/25 职场文书
初中运动会前导词
2015/07/20 职场文书
golang为什么要统一错误处理
2022/04/03 Golang