python slack桌面自动化开发工具
背景
Slack 客户端自动化 - 抓取联系人列表
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桌面自动化的资料请关注易知道(ezd.cc)其它相关文章!
相关内容
-
台式电脑开机一会就自动关机|台式机开一会就自
台式电脑开机一会就自动关机|台式机开一会就自动关机怎么回...
-
电脑wlan自动断开|电脑打开wlan自动关
电脑wlan自动断开|电脑打开wlan自动关,,1. 电脑打开wlan自动关...
-
计算机自动关机的原因是什么
计算机自动关机的原因是什么,,计算机(计算机),通常称为计算机,是一...
-
电脑店u修复工具|u盘修复电脑工具
电脑店u修复工具|u盘修复电脑工具,,u盘修复电脑工具你好,1、电...
-
怎么设置qq空间背景音乐|怎么设置qq空间背景音
怎么设置qq空间背景音乐|怎么设置qq空间背景音乐自动播放手...
-
无线路由器网络如何自动断开线路
无线路由器网络如何自动断开线路,,如何解决无线路由器网络自动...
-
GitLab预告DevOps平台第15版服务更新 拓展可观
GitLab预告DevOps平台第15版服务更新 拓展可观察性与安全工...
-
ipadmini5配置参数是多少?努比亚z11mini 刷入沉
ipadmini5配置参数是多少?努比亚z11mini 刷入沉默之星工具箱 ...
-
电脑声音自动静音了|电脑声音自动静音了怎么办
电脑声音自动静音了|电脑声音自动静音了怎么办,,电脑声音自动...
-
电脑上截图工具打不开|电脑截图工具不见了怎么
电脑上截图工具打不开|电脑截图工具不见了怎么办,,1. 电脑截图...
-
电脑主板自动保护了怎么办|主板自动保护开不了
电脑主板自动保护了怎么办|主板自动保护开不了机,,1. 主板自动...
-
自动求和的快捷键|自动求和的快捷键是什么
自动求和的快捷键|自动求和的快捷键是什么,,自动求和的快捷键...
-
电脑快捷键怎么截图工具|电脑的截图工具快捷键
电脑快捷键怎么截图工具|电脑的截图工具快捷键,,电脑的截图工...
-
wps如何设置下行不跳编序|请问wps里面某一行空
wps如何设置下行不跳编序|请问wps里面某一行空着,如何令自动...
-
开电源电脑自动开机|开电源电脑自动开机,电脑开
开电源电脑自动开机|开电源电脑自动开机,电脑开机健不管用,,1....