[Cdp-Ui]一个使用Golang创建的本地软件,构建子任务来控制浏览器做任何事情😄

Cdp-Ui

关于Golang构建本地桌面软件

在构建本地软件这块,我一直希望能使用前端技术,因此找了一些方案

  • go-astilectron Electron提供支持
  • lorca 查找本地Chrome浏览器,通过dev-tools通信协议来驱动
  • webview 一个用于C / C ++ / Golang的微型跨平台Webview库

简单总结就是go-astilectron因为包含了浏览器,打包出来会很大,lorca使用简单但是定制性不够,适合自己的项目,webview和lorca有点类似,但是webview对于边框和图标等定制性更强,但是稍微复杂一些,lorca对于前端还有一个非常友好的地方,那就是在Go和JS通讯之间实现异步调用使用的是Promise。 :)

Cdp-Ui介绍

CdpUI 是跨平台的,是一个使用 Golang 创建的本地实验性软件,可以构建一些子任务来控制浏览器做任何事情,当然也可以通过少许改造变成一个 web 服务来供用户运行任务。


我希望 CdpUI 最终可以通过构建任务完成一些重复性的工作,例如:

  • 前端页面的自动化测试和性能报告(例如测试网页在不同窗口大小下的响应和适配效果)
  • 动态爬虫(任务依赖于浏览器渲染,理论上任何反爬虫措施都是无效的)
  • 基于网页的重复性工作自动化(例如重复性的通过网页数据来整理你的文档和表格)

目前一些基本的工作已经完成,但是还有很多很棒的想法需要去完成。

  • pdf || 生成PDF
  • click || 点击元素
  • sleep || 等待一会
  • evaluate || 执行脚本
  • navigate || 打开网址
  • setValue || 往输入框输入内容
  • screenshot || 截取网页内容
  • addCookies || 添加Cookies
  • waitVisible || 等待元素加载完成
  • addReqHeaders || 添加请求头
  • emulateViewport || 改变窗口大小
  • captureScreenshot || 捕获屏幕
  • collectDataByExcel || 通过表格搜集数据
  • collectDataByWord || 通过文档搜集数据
  • packageFile || 打包目前生成的所有文件

技术栈和开源地址

lorca、chromedp、vue3、element-plus、vuex、vite

github: github.com/xusenlin/cdp-ui 欢迎大家 star :)

一些思考

虽然上面的这些功能最终都能被实现,但是对于自动化依旧有很大的局限性,除非给任务加入循环判断跳转的逻辑单元,否则它仅仅只能满足一部分场景,灵活度很有限。
但是,加入这些逻辑单元也会带来一些问题,比如一次运行任务可以简单将各种产生的文件生成,如果存在循环,那么文件名则需要处理以防止被覆盖等,如果有好的思路欢迎一起交流。

森林
讨论数量: 1

起不来

file

Go

3年前 评论
森林 (楼主) 3年前
夜幕下的风之 (作者) 3年前
森林 (楼主) 3年前
森林 (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!