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 中__name__ = '__main__' 的作用
Jul 05 Python
Python处理字符串之isspace()方法的使用
May 19 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
Feb 05 Python
python解决字符串倒序输出的问题
Jun 25 Python
react+django清除浏览器缓存的几种方法小结
Jul 17 Python
Mac安装python3的方法步骤
Aug 09 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
Sep 18 Python
python能做什么 python的含义
Oct 12 Python
python opencv 检测移动物体并截图保存实例
Mar 10 Python
基于python实现生成指定大小txt文档
Jul 20 Python
python简单实现插入排序实例代码
Dec 16 Python
Python turtle实现贪吃蛇游戏
Jun 18 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之第四天
2006/10/09 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
PHP实现微信对账单处理
2018/10/01 PHP
[转]JS宝典学习笔记
2007/02/07 Javascript
javascript eval和JSON之间的联系
2009/12/31 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
2015/08/12 Javascript
JS实现关闭当前页而不弹出提示框的方法
2016/06/22 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
2016/09/15 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
JavaScript实现图像模糊化的方法实例
2017/01/15 Javascript
如何写好你的JavaScript【推荐】
2017/03/02 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
2018/03/13 Javascript
Vue3为什么这么快
2020/09/23 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
python中关于日期时间处理的问答集锦
2013/03/08 Python
Python使用time模块实现指定时间触发器示例
2017/05/18 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
Python实现平行坐标图的两种方法小结
2019/07/04 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
Python遍历字典方式就实例详解
2019/12/28 Python
python如何提升爬虫效率
2020/09/27 Python
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
Under Armour澳大利亚官网:美国知名的高端功能性运动品牌
2018/02/22 全球购物
ktv筹备计划书
2014/05/03 职场文书
保护野生动物倡议书
2014/05/16 职场文书
拉拉队口号
2014/06/16 职场文书
新店开张活动方案
2014/08/24 职场文书
个人收入证明范本
2014/09/18 职场文书
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js
python创建字典及相关管理操作
2022/04/13 Python