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实现多线程下载文件的代码实例
Jun 01 Python
python中反射用法实例
Mar 27 Python
Python查询阿里巴巴关键字排名的方法
Jul 08 Python
使用pandas对矢量化数据进行替换处理的方法
Apr 11 Python
python3用PIL把图片转换为RGB图片的实例
Jul 04 Python
Python 实现输入任意多个数,并计算其平均值的例子
Jul 16 Python
使用IDLE的Python shell窗口实例详解
Nov 19 Python
如何定义TensorFlow输入节点
Jan 23 Python
利用scikitlearn画ROC曲线实例
Jul 02 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
Sep 26 Python
Python NumPy灰度图像的压缩原理讲解
Aug 04 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
zend framework配置操作数据库实例分析
2012/12/06 PHP
利用PHP实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
php使用MySQL保存session会话的方法
2015/06/26 PHP
php判断邮箱地址是否存在的方法
2016/02/13 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
ES6 中可以提升幸福度的小功能
2018/08/06 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
2018/08/12 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
2018/12/05 Javascript
ant design vue 表格table 默认勾选几项的操作
2020/10/31 Javascript
linux环境下安装pyramid和新建项目的步骤
2013/11/27 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
python命名空间(namespace)简单介绍
2019/08/10 Python
利用python计算时间差(返回天数)
2019/09/07 Python
python KNN算法实现鸢尾花数据集分类
2019/10/24 Python
PyCharm MySQL可视化Database配置过程图解
2020/06/09 Python
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
施华洛世奇加拿大官网:SWAROVSKI加拿大
2018/06/03 全球购物
C++如何引用一个已经定义过的全局变量
2014/08/25 面试题
Internet主要有哪些网络群组成
2015/12/24 面试题
新闻专业本科生的自我评价分享
2013/11/20 职场文书
实习生自我鉴定
2013/12/12 职场文书
大学生水果店创业计划书
2014/01/28 职场文书
我为自己代言广告词
2014/03/18 职场文书
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
学习保证书怎么写
2015/02/26 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
银行柜员工作心得体会
2016/01/23 职场文书
2017年寒假少先队活动总结
2016/04/06 职场文书