Docker容器——Automation
点击展开更新日志
2025
08-13
新增 browserless 部署
nexttime
会有些什么呢(❁´◡`❁)
¶源起
最开始的需求只是想写一个 Python 脚本实现小网站的自动签到,然后还得每天手动跑一遍(可恶,怎么还要手动执行🙄),所以在了解到自动化流程后开始探索自动化方法。
因此行文顺序是按照我的需求实现顺序展开,请根据需要自行跳转。
本文仍在探索阶段,所记录仅为经验之谈,供参考。
¶playwright
¶参考文档
依然是那句话,如果有官网文档,最推荐先看一下官方文档。
¶概述
这是一个 Web 应用端到端测试工具,支持主流浏览器,如 Chromium、Firefox,主要是方便自动化浏览器操作。如果你曾经了解过 Selenium
,那么可以认为是近似工具。
¶安装
改命令会同时安装浏览器到
~/.cache/ms-playwright
目录下,如果需要安装到自定义目录,可以手动设置PLAYWRIGHT_BROWSERS_PATH
环境变量,再使用以下命令安装。
1 | npm init playwright@latest |
关于
npm
安装,下载安装程序无脑安装即可,至于是否使用nvm
,根据个人需求,如果不了解这是什么,那就说明并不需要。
¶基础使用
因为笨蛋站长🤐已经把学过的 C 和 Java 忘完了,因此下面的示例以 Python 说明:
先在包管理器安装 playwright
包:
清华源镜像:https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
更换位置在 PyCharm 左下角【包管理器】那里,有个设置。
1 | import time |
这就是一个最小的测试用例,playwrigth
中可以选择使用同步函数 sync_api
或 异步函数 async_api
,使用异步,需要在 with
前加关键字 async
,不然会报错。
基本的流程就和人工操作浏览器是一样的,只不过进行了拆解:
- 创建一个 chromium 浏览器对象
- 创建一个浏览器上下文
- 创建一个页面 page
- 打开网址
- 销毁创建的对象(关闭浏览器)
基于这个逻辑就能把签到啥的逻辑做到代码里实现自动化,但——是,对于验证码的处理就比较麻烦(尝试接入大模型但失败了),因此目前我的处理方法是第一次手动辅助完成登录,保存登录状态到 state.json
(cookie),下次就使用状态文件创建上下文就可以直接进入登录状态(playwright测试浏览器是不会自动保存cookie的哦)。
这样的弊端就是对于签到二次验证就还是需要手动辅助,不能完全实现自动化,后续的想法是将这类需要复杂处理的网站单独拎出来,具体处理逻辑可以等做起来了再补充。
¶Browserless
¶参考文档
¶概述
无头浏览器,因为上面的代码执行还需要依赖本地安装的浏览器,换个地方就跑不起来了,因此如果能调用独立的浏览器完成操作自然更好(也可以选择使用本地浏览器,但担心污染数据,不予考虑)。
¶部署
采用 Docker部署 。
1 | name: browserless |