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 urllib模块urlopen()与urlretrieve()详解
Nov 01 Python
在Python的Flask中使用WTForms表单框架的基础教程
Jun 07 Python
python+requests+unittest API接口测试实例(详解)
Jun 10 Python
python实现二叉树的遍历
Dec 11 Python
python调用系统ffmpeg实现视频截图、http发送
Mar 06 Python
python3中os.path模块下常用的用法总结【推荐】
Sep 16 Python
图文详解python安装Scrapy框架步骤
May 20 Python
python3 线性回归验证方法
Jul 09 Python
如何基于Python Matplotlib实现网格动画
Jul 20 Python
Python爬虫爬取糗事百科段子实例分享
Jul 31 Python
Python实现像awk一样分割字符串
Sep 15 Python
Django实现文章详情页面跳转代码实例
Sep 16 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
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
PHP return语句的另一个作用
2014/07/30 PHP
Zend Framework实现将session存储在memcache中的方法
2016/03/22 PHP
jQuery 一个图片切换的插件
2011/10/09 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
jquery选择器的选择使用及性能介绍
2013/01/16 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
2016/12/25 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
js下载文件并修改文件名
2017/05/08 Javascript
vue-cli webpack 开发环境跨域详解
2017/05/18 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
Vue实现数据请求拦截
2019/10/23 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
Python的语言类型(详解)
2017/06/24 Python
Python双精度浮点数运算并分行显示操作示例
2017/07/21 Python
一个Python最简单的接口自动化框架
2018/01/02 Python
Python用imghdr模块识别图片格式实例解析
2018/01/11 Python
Python聊天室程序(基础版)
2018/04/01 Python
Python气泡提示与标签的实现
2020/04/01 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
基于Python实现下载网易音乐代码实例
2020/08/10 Python
如何使用python写截屏小工具
2020/09/29 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
稀有和绝版书籍:Biblio.com
2017/02/02 全球购物
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
Camper鞋西班牙官方网上商店:西班牙马略卡岛的鞋类品牌
2019/03/14 全球购物
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
将一个文本文件的内容按倒序打印出来
2015/01/05 面试题
工业设计专业推荐信
2013/10/29 职场文书
污水处理保证书
2015/05/09 职场文书
大学生活感想
2015/08/10 职场文书
七年级生物教学反思
2016/02/20 职场文书
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js