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
目前 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 还提供了智能提示和代码补全的功能:
在 VS Code Extension 市场中搜索 Clicknium , 然后根据欢迎页面的步骤完成配置: 我建议第一次使用:
Sample
了解自动化运行的效果。 目前项目仍在早期阶段,团队很小。后期我们会根据需求将项目拓展到全平台。
有任何问题或者意见欢迎交流, 比如你想要 PyCharm 插件?
[email protected]
加入我们的Slack
1
RheatiN 2022-08-12 12:20:36 +08:00
试试!我们数据收集很需要这个
|
2
tqyq88 2022-08-12 12:36:10 +08:00
Selenium 可以 headless 方式运行,请问 Clicknium 支持吗
|
3
youthfire 2022-08-12 12:41:10 +08:00 via iPhone
可惜不支持 mac
|
4
heartlocker OP @tqyq88 目前还不支持 headless 。要支持 headless 应该不麻烦。我把它定义在了高级功能里,现在主要想做简单。 有需求的话,我们可以加入对 headless 的支持。
|
5
heartlocker OP @youthfire 现在团队太小了,资源有限。跨平台妥妥在我们的 Roadmap 上。
|
6
iyaozhen 2022-08-12 12:50:09 +08:00
看着不错
|
7
heartlocker OP @RheatiN 请多多指教。
|
8
shyling 2022-08-12 13:57:15 +08:00
不知道这个 locator 有没有从 id 到页面位置的 locate 。
不然 id 多了的话还是有点晕的。 还有就是如果网页内容变了的话(某天 html 的 id/class 变了),会发生什么。 |
9
dionyphus 2022-08-12 14:22:04 +08:00
大佬听说过 Power Automate 吗。。。
|
10
heartlocker OP @dionyphus 听过,我其实在 ms 呆过一段时间。 这类图形化编辑的 RPA 产品(类似的还有 UIpath ,影刀)在使用过后,我个人觉得有一些问题。业务人员需要有一些编程的基本概念和逻辑才能学会使用,这一点其实要求不低,普通用户很难学会使用。如果用户本来已经有一些编程的基础,图形化的界面反而是累赘,嵌套,循环,条件判断,函数不如直接写代码。 如果真的用这类产品写一些稍微复杂一点的流程,图形化界面基本上很难满足需求,导致图形化界面混合零碎的代码块,难看难用难维护。 所以我个人觉得直接写 Python 可能是一种更好的方式。
|
11
heartlocker OP @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 都发生变化了,界面很可能布局都变了。 |
12
bloodspasm 2022-08-12 15:02:07 +08:00
真棒 希望有 Mac 版本可以做点好玩的
|
13
shyling 2022-08-12 15:03:30 +08:00
@heartlocker #11 这个展示很棒~
|
14
brianinzz 2022-08-12 15:19:27 +08:00
所以底层是通过浏览器开发者工具接口?不需要安装 driver? 拿可以绕过一些 driver 特征检测的反爬?
|
15
BunnyEatingGrass 2022-08-12 15:31:47 +08:00
很棒呀,试了下,运行速度挺快的。
|
16
brianinzz 2022-08-12 16:37:10 +08:00
我一直登录不进去。。。。登录成功后跳转 vscode 的链接一直启动不了 vscode 。。。
|
17
scyuns 2022-08-12 16:43:38 +08:00
看起来很不错 对于自动化 UI 测试应该不错
|
18
lele140 2022-08-12 16:52:10 +08:00
先 star 了,后续需要再试用
|
19
huntzhan 2022-08-12 17:01:27 +08:00
解开 wheel 看了一下是 C# 写的项目😄
OP 可以分享一下之后的商业化计划吗 |
20
heartlocker OP @brianinzz 我们采用的是 native message 的方式。 所以理论上不会被 driver 特征检查到。https://developer.chrome.com/docs/apps/nativeMessaging/
|
21
heartlocker OP @brianinzz 可以加一下 slack 吗? 看看是什么问题导致的,确实有个别用户遇到了跳转打不开的问题,我们还没能复现。https://join.slack.com/t/clicknium/shared_invite/zt-1cfxsstw7-s0CeJdhyg5wQ1h7_KKc6QQ
|
22
heartlocker OP @lele140 感谢支持。
|
23
heartlocker OP @brianinzz 你用的是 Chrome 浏览器吗?如果是 打开 chrome://settings/content/popups 设置里允许发送弹出式窗口并使用重定向 加入当前网站
|
24
heartlocker OP @huntzhan 这个问题,我也想知道答案。目前还是希望先做一个真正有用的工具,验证我们的想法是对的。
|
25
hubahuba 2022-08-12 21:03:36 +08:00
非常棒,希望技术导向的公司越来越多!
|
26
allanpk716 2022-08-13 08:37:35 +08:00
后续会集成一些的图形识别功能吗?比如,某个 APP 的功能按钮样式比较特殊,希望在整个 APP 的区域内搜索定位来点击。可能类似于写外挂的某些功能。
|
27
brianinzz 2022-08-13 08:53:57 +08:00
@heartlocker 可以了 周末有空了玩一下 感谢
|
28
zx900930 2022-08-13 13:45:48 +08:00 via Android
能跳过 recaptcha, ncaptcha, 拼图之类验证吗?
|
29
heartlocker OP @zx900930 人工自己操作 不能跳过的话 自动化操作也是不能跳过的。
|
30
heartlocker OP @allanpk716 不确定这个功能有很强的需求。 本质上是需要给 locator 一个方式定位到 UI 元素。 直接用识别理论上效率会很低。 不如直接调用 ocr 的库,自己控制,然后把对应的值用代码配置给 locator.
|
31
kele999 2022-08-14 10:16:24 +08:00
很有前途
|
32
Ne 2022-08-15 07:23:21 +08:00 via Android
刚好在学 python 爬虫,感谢。
|
33
Ne 2022-08-15 15:51:24 +08:00 via Android
@heartlocker 如果网站是本地的 192.168.1.2 这样的网址会出错,Locator 里的 192 文件夹要改名,不然代码会说 chrome 找不到
|
34
heartlocker OP @Ne 因为采用的是类似 namespace 的方式,纯数字是非法的。 我们修改一下自动生成的规则吧。 多谢提醒。 下个版本会修复。
|
35
gumuxi 2022-08-16 09:59:02 +08:00
以后应该能用到,收藏下
|
36
heartlocker OP 图像识别的功能已加入。 按住 shit 用鼠标框选元素就可以。 欢迎试用。
|
37
itabas016 2022-08-31 12:16:17 +08:00 via Android
点赞
|