不用写代码的Python自动化工具

前言

最近,微软开源了一个项目叫「playwright-python」,作为一个兴起项目,出现后受到了大家热烈的欢迎,那它到底是什么样的存在呢?今天为你介绍一下这个传说中的小白神器。
Playwright 是针对 Python 语言的纯自动化工具,它可以通过单个API自动执行 Chromium,Firefox 和 WebKit 浏览器,连代码都不用写,就能实现自动化功能。

安装

# PIP 安装
pip install --upgrade pip
pip install playwright
playwright install

# Conda 安装
conda config --add channels conda-forge
conda config --add channels microsoft
conda install playwright
playwright install

同步使用

# 引入自动化库
from playwright.sync_api import sync_playwright

# 使用上下文管理器
with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("http://playwright.dev")
    print(page.title())
    browser.close()

异步使用

# 引入异步模块
import asyncio
# 引入自动化库
from playwright.async_api import async_playwright

# 异步函数
async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()
        await page.goto("http://playwright.dev")
        print(await page.title())
        await browser.close()

# Python 3.7以上调用方法
asyncio.run(main())
# Python 3.7以下调用方法
# asyncio.get_evnt_loop().run_until_complete(main())

录制脚本

python -m playwright codegen
--help 帮助文档
-o 生成自动化脚本文件路径
--target 脚本语言
-b 指定浏览器驱动

比如

我们通过下面命令打开 Chrome 浏览器开始录制脚本
指定生成语言为:Python(默认Python,可选)保存的文件名:baidu.py(可选)
浏览器驱动:webkit(默认webkit,可选)
最后跟着要打开的目标网站(默认仅仅是打开浏览器,可选)

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

接着,在浏览器模拟搜索一次的操作,然后关闭浏览器。
百度搜索“Python若溪”

最后,自动化脚本会自动生成,保存到文件中

from playwright import sync_playwright
def run(playwright):
    browser = playwright.webkit.launch(headless=False)
    context = browser.newContext()
    
    # Open new page
    page = context.newPage()
    
    # Go to https://www.baidu.com/
    page.goto("https://www.baidu.com/")
    
    # Fill input[name="wd"]
    page.fill("input[name=\"wd\"]", "Python若溪")
    
    # Press Enter
    # with page.expect_navigation(url="https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=Python%E8%8B%A5%E6%BA%AA&oq=Python%E8%8B%A5%E6%BA%AA&rsv_pq=e3fdcfd100087e8e&rsv_t=33fb%2BsV%2BnCA7AxLGLduq6kXDzrG12nAgboZ6PKT0EwbuzhFvNF0fYONNGJM&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_btype=t&inputT=1038&rsv_sug3=11&rsv_sug1=7&rsv_sug7=100&rsv_sug2=0&rsv_sug4=3128"):
    with page.expect_navigation():
        page.press("input[name=\"wd\"]", "Enter")
    
    # Close page
    page.close()
    
    # ---------------------
    context.close()
    browser.close()
    
with sync_playwright() as playwright:
    run(playwright)

最后

Playwright 相比传统的自动化框架 Selenium 来说,在 Context 上下文及 API 使用上,显得更简洁且强大,更加详细的功能。

作者

微信公众号 | 若溪Code
博客园 | Python若溪
知乎 | Python若溪

posted @ 2022-02-24 11:26  Python不秋  阅读(398)  评论(0编辑  收藏  举报