不用写代码的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
接着,在浏览器模拟搜索一次的操作,然后关闭浏览器。
最后,自动化脚本会自动生成,保存到文件中
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若溪
作者:枪林弹雨丶
若标题中有【转载】字样,则本文版权归原作者所有。若无转载字样,
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,
且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
请注意:作者五行缺钱,如果喜欢这篇文章,请随意打赏!