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 排列组合之itertools
Mar 20 Python
python多线程threading.Lock锁用法实例
Nov 01 Python
使用python绘制常用的图表
Aug 27 Python
python+selenium实现163邮箱自动登陆的方法
Dec 31 Python
Python机器学习之K-Means聚类实现详解
Feb 22 Python
TensorFlow实现RNN循环神经网络
Feb 28 Python
python pandas dataframe 行列选择,切片操作方法
Apr 10 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
Apr 27 Python
Python中的self用法详解
Aug 06 Python
简单了解Python读取大文件代码实例
Dec 18 Python
python-docx文件定位读取过程(尝试替换)
Feb 13 Python
python:批量统计xml中各类目标的数量案例
Mar 10 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
PHPMyadmin 配置文件详解(配置)
2009/12/03 PHP
php echo 输出字符串函数详解
2010/05/13 PHP
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
ajax+php控制所有后台函数调用
2015/07/15 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
HTML5之lang属性与dir属性的详解
2013/06/19 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
2015/06/05 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
JavaScript地理位置信息API
2016/06/11 Javascript
jQuery实现带遮罩层效果的blockUI弹出层示例【附demo源码下载】
2016/09/14 Javascript
JavaScript转换数据库DateTime字段类型方法
2017/06/27 Javascript
JavaScript数组的5种迭代方法
2017/09/29 Javascript
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
少女风vue组件库的制作全过程
2019/05/15 Javascript
vuex 中插件的编写案例解析
2019/06/10 Javascript
从源码角度来回答keep-alive组件的缓存原理
2021/01/18 Javascript
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
Python实现AI自动抠图实例解析
2020/03/05 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
通过自学python能找到工作吗
2020/06/21 Python
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
管理学专业个人求职信范文
2013/09/21 职场文书
网络维护中文求职信
2014/01/03 职场文书
小学生寒假家长评语
2014/04/16 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
2015年党员自评材料
2014/12/17 职场文书
专项资金申请报告
2015/05/15 职场文书
导游经典开场白——导游词
2019/04/17 职场文书
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers