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算法学习之桶排序算法实例(分块排序)
Dec 18 Python
深入理解Javascript中的this关键字
Mar 27 Python
Python增量循环删除MySQL表数据的方法
Sep 23 Python
详解使用 pyenv 管理多个版本 python 环境
Oct 19 Python
numpy 进行数组拼接,分别在行和列上合并的实例
May 08 Python
python中pip的安装与使用教程
Aug 10 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
Sep 27 Python
python实现将汉字保存成文本的方法
Nov 16 Python
PyQt编程之如何在屏幕中央显示窗体的实例
Jun 18 Python
Python generator生成器和yield表达式详解
Aug 08 Python
Pandas DataFrame中的tuple元素遍历的实现
Oct 23 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 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性能优化 产生高度优化代码
2011/07/22 PHP
PHP函数eval()介绍和使用示例
2014/08/20 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
2015/10/16 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
2015/12/19 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
Display SQL Server Login Mode
2007/06/21 Javascript
js下通过prototype扩展实现indexOf的代码
2010/12/08 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
jQuery基本选择器选择元素使用介绍
2013/04/18 Javascript
javascript实现2016新年版日历
2016/01/25 Javascript
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
js+html5实现页面可刷新的倒计时效果
2017/07/15 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
2017/07/31 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
2019/01/16 Javascript
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
JS实现小星星特效
2019/12/24 Javascript
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
python list使用示例 list中找连续的数字
2014/01/27 Python
Python实现获取命令行输出结果的方法
2017/06/10 Python
python删除不需要的python文件方法
2018/04/24 Python
django迁移数据库错误问题解决
2019/07/29 Python
python flask搭建web应用教程
2019/11/19 Python
jupyter 使用Pillow包显示图像时inline显示方式
2020/04/24 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
教师评优的个人自我评价分享
2013/09/19 职场文书
临床专业自荐信
2014/06/22 职场文书
教师党员整改措施
2014/10/24 职场文书
新员工试用期自我评价
2015/03/10 职场文书
感谢师恩主题班会
2015/08/17 职场文书
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python
mysql事务隔离级别详情
2021/10/24 MySQL