ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python工具——playwright

2021-01-07 12:34:58  阅读:1041  来源: 互联网

标签:playwright python -- https 工具 page browser


playwright是微软开源的自动化项目

git地址  https://github.com/microsoft/playwright-python

官网  https://playwright.dev/

安装

pip install playwright

查看支持的功能

 python -m playwright -h
Usage: index [options] [command]

Options:
  -V, --version                          output the version number
  -b, --browser <browserType>            browser to use, one of cr, chromium, ff, firefox, wk, webkit (default: "chromium")
  --color-scheme <scheme>                emulate preferred color scheme, "light" or "dark"
  --device <deviceName>                  emulate device, for example  "iPhone 11"
  --geolocation <coordinates>            specify geolocation coordinates, for example "37.819722,-122.478611"
  --lang <language>                      specify language / locale, for example "en-GB"
  --load-storage <filename>              load context storage state from the file, previously saved with --save-storage
  --proxy-server <proxy>                 specify proxy server, for example "http://myproxy:3128" or "socks5://myproxy:8080"
  --save-storage <filename>              save context storage state at the end, for later use with --load-storage
  --timezone <time zone>                 time zone to emulate, for example "Europe/Rome"
  --timeout <timeout>                    timeout for Playwright actions in milliseconds (default: "10000")
  --user-agent <ua string>               specify user agent string
  --viewport-size <size>                 specify browser viewport size in pixels, for example "1280, 720"
  -h, --help                             display help for command

Commands:
  open [url]                             open page in browser specified via -b, --browser
  cr [url]                               open page in Chromium
  ff [url]                               open page in Firefox
  wk [url]                               open page in WebKit
  codegen [options] [url]                open page and generate code for user actions
  screenshot [options] <url> <filename>  capture a page screenshot
  pdf [options] <url> <filename>         save page as pdf
  install                                Ensure browsers necessary for this version of Playwright are installed
  help [command]                         display help for command

下载 Chromeium、Firefox、Safari(WebKit)浏览器驱动

python -m playwright install

 注:

  如果执行命令时下载Chromeium后就报错,如下

Removing unused browser at C:\Users\Administrator\AppData\Local\ms-playwright\chromium-833159

(node:4392) UnhandledPromiseRejectionWarning: Error: EPERM: operation not permitted, open 'C:\Users\Administrator\AppData\Local\ms-playwright\chromium-833159\chrome-win\chrome_elf.dll'
(node:4392) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:4392) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

  解决方法:

https://github.com/microsoft/playwright-python 上 local-requirements.txt,安装python库

autobahn==20.7.1
pytest==6.1.0
pytest-asyncio==0.14.0
pytest-cov==2.10.1
pytest-sugar==0.9.4
pytest-xdist==2.1.0
pytest-timeout==1.4.2
flaky==3.7.0
pixelmatch==0.2.1
Pillow==8.0.0
mypy==0.782
setuptools==50.3.0
# TODO: use PyPi version after >20.3.0 is released
git+https://github.com/twisted/twisted.git@4ff22287cab3b54f51cee41ea2619e72d1bff2e4
wheel==0.35.1
black==20.8b1
pre-commit==2.7.1
flake8==3.8.3
twine==3.2.0
pyOpenSSL==19.1.0
service_identity==18.1.0
pdoc3==0.9.1

再执行

$ python -m playwright install
Removing unused browser at C:\Users\Administrator\AppData\Local\ms-playwright\chromium-833159

chromium v833159 downloaded to C:\Users\Administrator\AppData\Local\ms-playwright\chromium-833159

firefox v1221 downloaded to C:\Users\Administrator\AppData\Local\ms-playwright\firefox-1221

webkit v1402 downloaded to C:\Users\Administrator\AppData\Local\ms-playwright\webkit-1402

1.同步

from playwright import sync_playwright

with sync_playwright() as p:
    browser_type = p.chromium
    browser = browser_type.launch(headless=False)
    page = browser.newPage()
    page.goto('https://www.baidu.com/')
    page.screenshot(path=f'{browser_type.name}.png')
    browser.close()

2.异步

import asyncio
from playwright import async_playwright

async def main():
    async with async_playwright() as p:
            browser_type = p.chromium
            browser = await browser_type.launch(headless=False)
            page = await browser.newPage()
            await page.goto('https://www.baidu.com/')
            await page.screenshot(path=f'{browser_type.name}1.png')
            await browser.close()
asyncio.get_event_loop().run_until_complete(main())

 3.手机模式

from playwright import sync_playwright

with sync_playwright() as p:
    phone_name = 'iPhone 11 Pro'
    iphone_11 = p.devices[phone_name]
    browser = p.webkit.launch(headless=False)
    context = browser.newContext(
        **iphone_11,
        locale='zh-CN'
    )
    page = context.newPage()
    page.goto('https://map.baidu.com/mobile/webapp/index/index/')
    page.screenshot(path=f'{phone_name}.png')
    browser.close()

4.录制脚本

使用命令 codegen

命令格式

$ python -m playwright codegen -h
Usage: index codegen [options] [url]

open page and generate code for user actions

Options:
  -o, --output <file name>  saves the generated script to a file
  --target <language>       language to use, one of javascript, python,
                            python-async, csharp (default: "python")
  -h, --help                display help for command

Examples:

  $ codegen
  $ codegen --target=python
  $ -b webkit codegen https://example.com

eg:

 python -m playwright codegen --target python -o 'my1.py' -b chromium https://www.baidu.com

my1.py

from playwright import sync_playwright

def run(playwright):
    browser = playwright.chromium.launch(headless=False)
    context = browser.newContext()

    # Open new page
    page = context.newPage()

    # Go to https://www.baidu.com/
    page.goto("https://www.baidu.com/")

    # Click input[name="wd"]
    page.click("input[name=\"wd\"]")

    # Fill input[name="wd"]
    # with page.expect_navigation(url="https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=hello&fenlei=256&rsv_pq=e1fa5e4c0000d5a6&rsv_t=577f7bNmG1aOHBEWyQJLIfxHSyytPL7Q1GczIkdkkSwbPsx3vLC%2FGKkrqQE&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=6&rsv_sug1=4&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&prefixsug=hello&rsp=5&inputT=1909&rsv_sug4=3707"):
    with page.expect_navigation():
        page.fill("input[name=\"wd\"]", "hello")

    # Close page
    page.close()

    # ---------------------
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

 

标签:playwright,python,--,https,工具,page,browser
来源: https://www.cnblogs.com/baby123/p/14240938.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有