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原始套接字编程示例分享
Feb 21 Python
Python实现基于HTTP文件传输实例
Nov 08 Python
python友情链接检查方法
Jul 08 Python
一篇文章入门Python生态系统(Python新手入门指导)
Dec 11 Python
python xml解析实例详解
Nov 14 Python
python ansible服务及剧本编写
Dec 29 Python
Python 循环终止语句的三种方法小结
Jun 24 Python
python 解决flask uwsgi 获取不到全局变量的问题
Dec 22 Python
Python concurrent.futures模块使用实例
Dec 24 Python
Python3 集合set入门基础
Feb 10 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 Python
python之json文件转xml文件案例讲解
Aug 07 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编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
如何批量替换相对地址为绝对地址(利用bat批处理实现)
2013/05/27 PHP
ThinkPHP3.1新特性之命名范围的使用
2014/06/19 PHP
PHP中list方法用法示例
2016/12/01 PHP
Laravel核心解读之异常处理的实践过程
2019/02/24 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
2020/05/26 PHP
javascript 流畅动画实现原理
2009/09/08 Javascript
数组方法解决JS字符串连接性能问题有争议
2011/01/12 Javascript
JS获取网页图片name属性的方法
2015/04/01 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
JavaScript简单实现合并两个Json对象的方法示例
2017/10/16 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
简谈创建React Component的几种方式
2019/06/15 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
JS removeAttribute()方法实现删除元素的某个属性
2021/01/11 Javascript
python中关于日期时间处理的问答集锦
2013/03/08 Python
使用Python操作Elasticsearch数据索引的教程
2015/04/08 Python
Python图算法实例分析
2016/08/13 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
Python实现的生成格雷码功能示例
2018/01/24 Python
python定向爬取淘宝商品价格
2018/02/27 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
python性能测量工具cProfile使用解析
2019/09/26 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
Python IDLE或shell中切换路径的操作
2020/03/09 Python
html标签之Object和EMBED标签详解
2013/07/04 HTML / CSS
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
管事部库房保管员岗位职责
2014/02/21 职场文书
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
大一新生学期自我评价
2014/04/09 职场文书
三分钟演讲稿范文
2014/04/24 职场文书
李培根演讲稿
2014/05/22 职场文书
Python包管理工具pip的15 个使用小技巧
2021/05/17 Python
win10更新失败无限重启解决方法
2022/04/19 数码科技
SpringCloud超详细讲解Feign声明式服务调用
2022/06/21 Java/Android