Clicknium 自动操作网页和应用

2022-08-12 12:05:15 +08:00
 heartlocker

Clicknium

Clicknium 是一个 Python 界面自动化库,可以非常简单直观地使用它操作浏览器和 Windows 平台的 APP 。
官网:https://www.clicknium.com
Github: https://github.com/clicknium/clicknium-docs
VS Code 插件:https://marketplace.visualstudio.com/items?itemName=ClickCorp.clicknium

为什么要做 Clicknium

目前 Python 有很多自动化的库,比如 Selenium ,Pyautogui ,Playwright 。有的只能操作网页,有的只能操作 App ,并且使用起来都算不上简单:Selenium 需要安装 driver ,需要学习什么是 XPath ; Pyautogui 的方式比较简单易懂,是我本人比较欣赏的方式,使用简单,代码可读性强,完全模拟鼠标单击,双击拖动;但是它采用 xy 轴的方式定位桌面元素。 分辨率变化,位置变化都会影响运行。 要想用好这些工具,学习成本实在不低。 但是大多数人的自动化需求其实非常简单。 花大量的时间和精力学习自动化技术,可能还不如自己手动点点鼠标键盘。
好的自动化工具,需要在使用上简单,直观才能帮助更多的人。

有多简单

Clicknium 提供了简洁直观的 API 来操作 UI 元素,如 set_test, get_test, click 等等。查看代码时,逻辑非常清晰,贴近自然语言和实际操作。 那怎么解决元素定位的问题。 我们为此设计了 Clicknium Recorder 。 打开 Recorder ,Clicknium 会自动识别鼠标所指的元素。 按住 Ctrl+鼠标单击,Recorder 就会自动抓取元素,生成 Locator 。直接使用 Locator 就能直接获取 UI 元素并对其进行操作: Clicknium 还提供了智能提示和代码补全的功能:

如何尝试

环境:

配置 Clicknium

在 VS Code Extension 市场中搜索 Clicknium , 然后根据欢迎页面的步骤完成配置: 我建议第一次使用:

交流

目前项目仍在早期阶段,团队很小。后期我们会根据需求将项目拓展到全平台。 有任何问题或者意见欢迎交流, 比如你想要 PyCharm 插件? clicknium@clicknium.com
加入我们的Slack

5550 次点击
所在节点    分享创造
37 条回复
RheatiN
2022-08-12 12:20:36 +08:00
试试!我们数据收集很需要这个
tqyq88
2022-08-12 12:36:10 +08:00
Selenium 可以 headless 方式运行,请问 Clicknium 支持吗
youthfire
2022-08-12 12:41:10 +08:00
可惜不支持 mac
heartlocker
2022-08-12 12:45:04 +08:00
@tqyq88 目前还不支持 headless 。要支持 headless 应该不麻烦。我把它定义在了高级功能里,现在主要想做简单。 有需求的话,我们可以加入对 headless 的支持。
heartlocker
2022-08-12 12:46:47 +08:00
@youthfire 现在团队太小了,资源有限。跨平台妥妥在我们的 Roadmap 上。
iyaozhen
2022-08-12 12:50:09 +08:00
看着不错
heartlocker
2022-08-12 12:52:09 +08:00
@RheatiN 请多多指教。
shyling
2022-08-12 13:57:15 +08:00
不知道这个 locator 有没有从 id 到页面位置的 locate 。

不然 id 多了的话还是有点晕的。

还有就是如果网页内容变了的话(某天 html 的 id/class 变了),会发生什么。
dionyphus
2022-08-12 14:22:04 +08:00
大佬听说过 Power Automate 吗。。。
heartlocker
2022-08-12 14:43:47 +08:00
@dionyphus 听过,我其实在 ms 呆过一段时间。 这类图形化编辑的 RPA 产品(类似的还有 UIpath ,影刀)在使用过后,我个人觉得有一些问题。业务人员需要有一些编程的基本概念和逻辑才能学会使用,这一点其实要求不低,普通用户很难学会使用。如果用户本来已经有一些编程的基础,图形化的界面反而是累赘,嵌套,循环,条件判断,函数不如直接写代码。 如果真的用这类产品写一些稍微复杂一点的流程,图形化界面基本上很难满足需求,导致图形化界面混合零碎的代码块,难看难用难维护。 所以我个人觉得直接写 Python 可能是一种更好的方式。
heartlocker
2022-08-12 15:01:05 +08:00
@shyling 我们在文档里面有介绍目前使用到的一些 automation 技术:
https://www.clicknium.com/documents/concepts/web
https://www.clicknium.com/documents/concepts/uia
Locator 是通过 id 确认位置的。
locator 数量多并不会让人晕,我们设计了几种方法:
1. locator 可以重命名为你认为有意义的名字。
2. 当鼠标悬停在代码上时,会自动展示 locator 对应的 UI 元素快照,你可以直接 open ,validate ,recpature 。
https://s1.328888.xyz/2022/08/12/6xdZN.png
3. 在 locator store 中,可以配置 locator 的参数,validate 你的 locator 的位置,重新 capture ,甚至支持实时的 Action 来操作 locator 对应的 UI 元素,验证 locator 的有效性。
https://s1.328888.xyz/2022/08/12/6JNpd.png

网页内容变了的话: 那当然 locator 就失效了哦。 毕竟如果 html 的 class 都发生变化了,界面很可能布局都变了。
bloodspasm
2022-08-12 15:02:07 +08:00
真棒 希望有 Mac 版本可以做点好玩的
shyling
2022-08-12 15:03:30 +08:00
@heartlocker #11 这个展示很棒~
brianinzz
2022-08-12 15:19:27 +08:00
所以底层是通过浏览器开发者工具接口?不需要安装 driver? 拿可以绕过一些 driver 特征检测的反爬?
BunnyEatingGrass
2022-08-12 15:31:47 +08:00
很棒呀,试了下,运行速度挺快的。
brianinzz
2022-08-12 16:37:10 +08:00
我一直登录不进去。。。。登录成功后跳转 vscode 的链接一直启动不了 vscode 。。。
scyuns
2022-08-12 16:43:38 +08:00
看起来很不错 对于自动化 UI 测试应该不错
lele140
2022-08-12 16:52:10 +08:00
先 star 了,后续需要再试用
huntzhan
2022-08-12 17:01:27 +08:00
解开 wheel 看了一下是 C# 写的项目😄
OP 可以分享一下之后的商业化计划吗
heartlocker
2022-08-12 17:06:50 +08:00
@brianinzz 我们采用的是 native message 的方式。 所以理论上不会被 driver 特征检查到。https://developer.chrome.com/docs/apps/nativeMessaging/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/872403

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX