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 21 Python
Django的URLconf中使用缺省视图参数的方法
Jul 18 Python
Python的Tornado框架实现异步非阻塞访问数据库的示例
Jun 30 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
Mar 12 Python
windows 下python+numpy安装实用教程
Dec 23 Python
Python实现ping指定IP的示例
Jun 04 Python
在Pycharm中执行scrapy命令的方法
Jan 16 Python
解决python xx.py文件点击完之后一闪而过的问题
Jun 24 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
Aug 09 Python
python 实现检验33品种数据是否是正态分布
Dec 09 Python
Django-xadmin+rule对象级权限的实现方式
Mar 30 Python
Python中相见恨晚的技巧
Apr 13 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 冲泡冲煮
JAVA/JSP学习系列之六
2006/10/09 PHP
33道php常见面试题及答案
2015/07/06 PHP
php使用pear_smtp发送邮件
2016/04/15 PHP
Javascript中的数学函数
2007/04/04 Javascript
js刷新框架子页面的七种方法代码
2008/11/20 Javascript
jQuery 核心函数以及jQuery对象
2010/03/23 Javascript
IE中createElement需要注意的一个问题
2010/07/13 Javascript
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
2013/04/24 Javascript
js中一个函数获取另一个函数返回值问题探讨
2013/11/21 Javascript
Javascript玩转继承(一)
2014/05/08 Javascript
js点击文本框后才加载验证码实例代码
2015/10/20 Javascript
js实现自定义进度条效果
2017/03/15 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
Nodejs读取文件时相对路径的正确写法(使用fs模块)
2017/04/27 NodeJs
Node中使用ES6语法的基础教程
2018/01/05 Javascript
详解Eslint 配置及规则说明
2018/09/10 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
2020/04/21 Javascript
浅谈vue项目,访问路径#号的问题
2020/08/14 Javascript
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
Python的print用法示例
2014/02/11 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
春节联欢晚会主持词范文
2014/03/24 职场文书
无传销社区工作方案
2014/05/13 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
纪委书记群众路线整改措施思想汇报
2014/10/09 职场文书
幼儿园教师自我评价
2015/03/04 职场文书
健康证明
2015/06/19 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python
Python基础 括号()[]{}的详解
2021/11/07 Python
mysql查询结果实现多列拼接查询
2022/04/03 MySQL