python slack桌面自动化开发工具
背景
Slack 自动化示例 - 从一个渠道抓取联系人列表
最近,我需要监控一些slack频道的联系信息,但我没有API可以调用。所以我需要使用UI自动化来完成这个任务。 继续使用这个库 Clicknium,除了支持像selenium这样的web自动化之外,它还支持桌面自动化,这对我很有用。 你可以按照这个 Visual Studio Code 扩展的入门来设置环境,对我来说不到 2 分钟。
Slack 客户端自动化 - 抓取联系人列表
自动选择组和频道。 根据组名,自动点击左侧导航栏:
我使用 Clicknium Recorder 在 slack 上记录 UI 元素,并使用参数 {{group}} 对其进行更新,如下所示,用于参数定位器,请参考Clicknium 文档
我将窗口的标题设置为“Slack*”,因为 clicknium 支持通配符匹配,它可以提高自动化定位的健壮性。 并且我将 tabitem 名称添加到参数"group",然后我可以在运行阶段指定group。
from clicknium import clicknium as cc, locator, ui ui(locator.slack.tabitem_group, {'group':group}).click()
- 与自动点击频道类似。
if not cc.is_existing(locator.slack.treeitem_channel, params): ui(locator.slack.treeitem_parent).click() ui(locator.slack.treeitem_channel, params).click()
由于有时频道列表被折叠,所以我检查目标频道是否存在,如果没有,需要先单击频道以结束频道列表。
- 通过获取右上角的信息文本来获取联系人计数,然后解析文本。
text = ui(locator.slack.text_all, params).get_text() index = text.find("members") count = int("".join(re.findall("\d+",text[0:index])))
- 通过单击右上角的信息显示联系人列表对话框。
- 由于联系人列表是动态加载的,所以我们抓取了将近 10 个项目,需要向下滚动滚动条来加载新联系人
for i in range(1,13): dict = {"index":i} if not cc.is_existing(locator.slack.listitem_member, dict): continue elem_member = ui(locator.slack.listitem_member, dict) name = elem_member.get_text() if NotContains(names, name): names.append({'name':name,'email':'', 'postfix':''}) step += 1 if step % 100 == 0: SaveToFile(names) ## move mouse down to trigger new data loaded for member list ui(locator.slack.edit_membername).click(by='mouse-emulation') for i in range(10): cc.send_hotkey("{DOWN}")
我单击查找成员编辑框,然后发送快捷键"DOWN"十次,它将触发加载新联系人。 为了获取每个成员名称,我使用以下参数定位器:
Slack 客户端自动化 - 抓取联系人详细信息
在上面的部分中,我展示了如何从频道中抓取联系人列表,在本部分中,我展示了如何抓取每个联系人的详细信息,例如电子邮件地址。 (如果频道没有显示电子邮件地址,您可以跳过此部分)。
- 与上述部分相同,自动选择组和频道。
- 通过单击右上角的信息显示联系人列表对话框。
- 输入联系人姓名搜索联系人
ui(locator.slack.text_all, params).click() ui(locator.slack.edit_membername).set_text(item['name'], "set-text")
- 如果匹配,单击以显示联系人的个人资料,然后获取电子邮件文本 要单击搜索结果,我使用以下定位器, 使用参数"name"设置名称并取消选中 listitem 层。
- 本节中的错误处理:
- 如果搜索失败,需要关闭对话框并迭代到下一个联系人。
- 如果无法获取电子邮件信息,需要关闭个人资料选项卡并迭代到下一个联系人。
member1 = cc.wait_appear(locator.slack.listitem_member1, {'name':item['name']}) if member1 != None: member1.click() else: print("failed to search the member") item['email'] = "ignore" item['postfix'] = "" ui(locator.slack.image).click() continue try: email = ui(locator.slack.text_email).get_text(timeout=5) item['email'] = email item['postfix'] = email.split('@')[1] except: print("failed to find the email") item['email'] = "ignore" item['postfix'] = "" if cc.is_existing(locator.slack.image): ui(locator.slack.image).click() continue
开源代码
我把代码放在我的github上,如果需要查看完整代码,请参考github。
以上就是python slack桌面自动化开发工具的详细内容,更多关于python slack桌面自动化的资料请关注猪先飞其它相关文章!
原文出处:https://juejin.cn/post/7129471379723780126
相关文章
- 这篇文章主要介绍了python-opencv-画外接矩形框的实例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-04
Python astype(np.float)函数使用方法解析
这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08- 2022虎年新年即将来临,小编为大家带来了一个利用Python编写的虎年烟花特效,堪称全网最绚烂,文中的示例代码简洁易懂,感兴趣的同学可以动手试一试...2022-02-14
- 在本篇文章里小编给大家分享的是一篇关于python中numpy.empty()函数实例讲解内容,对此有兴趣的朋友们可以学习下。...2021-02-06
python-for x in range的用法(注意要点、细节)
这篇文章主要介绍了python-for x in range的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-10- 这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
- 这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 这篇文章主要介绍了python如何实现b站直播自动发送弹幕,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...2021-02-20
python Matplotlib基础--如何添加文本和标注
这篇文章主要介绍了python Matplotlib基础--如何添加文本和标注,帮助大家更好的利用Matplotlib绘制图表,感兴趣的朋友可以了解下...2021-01-26- 这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
- 今天小编就为大家分享一篇python 计算方位角实例(根据两点的坐标计算),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
- 这篇文章主要为大家详细介绍了python实现双色球随机选号,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-05-02
- 在本篇文章里小编给大家整理的是一篇关于python中使用np.delete()的实例方法,对此有兴趣的朋友们可以学习参考下。...2021-02-01
- 这篇文章主要介绍了使用Python的pencolor函数实现渐变色功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-09
- 这篇文章主要介绍了python自动化办公操作PPT的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-05
Python getsizeof()和getsize()区分详解
这篇文章主要介绍了Python getsizeof()和getsize()区分详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-20- 这篇文章主要介绍了解决python 两个时间戳相减出现结果错误的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-12
- 这篇文章主要为大家详细介绍了python实现学生通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-25
- 这篇文章主要介绍了PyTorch一小时掌握之迁移学习篇,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-08
- 这篇文章主要介绍了Python绘制的爱心树与表白代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-06