python slack桌面自动化开发工具

 更新时间:2022年08月10日 11:52:04   作者:automation  
这篇文章主要为大家介绍了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桌面自动化的资料请关注脚本之家其它相关文章!

相关文章

  • Python实现在线音乐播放器

    Python实现在线音乐播放器

    这篇文章主要为大家详细介绍了Python实现在线音乐播放器的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • python检测IP地址变化并触发事件

    python检测IP地址变化并触发事件

    这篇文章主要为大家详细介绍了python检测IP地址变化并触发事件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Python识别验证码的实现示例

    Python识别验证码的实现示例

    这篇文章主要介绍了Python识别验证码的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 使用Pytorch搭建模型的步骤

    使用Pytorch搭建模型的步骤

    这篇文章主要介绍了使用Pytorch搭建模型的步骤,帮助大家更好的理解和使用Pytorch,进行机器学习,感兴趣的朋友可以了解下
    2020-11-11
  • python创建和使用字典实例详解

    python创建和使用字典实例详解

    字典是python中唯一内建的映射类型。字典中的值并没有特殊的顺序,但是都存储在一个特定的键(key)里。
    2013-11-11
  • PyTorch之torch.matmul函数的使用及说明

    PyTorch之torch.matmul函数的使用及说明

    PyTorch的torch.matmul是一个强大的矩阵乘法函数,支持不同维度张量的乘法运算,包括广播机制。提供了矩阵乘法的语法,参数说明,以及使用示例,帮助理解其应用方式和乘法规则
    2024-09-09
  • 详解Python中的array数组模块相关使用

    详解Python中的array数组模块相关使用

    数组并不是Python中内置的标配数据结构,不过拥有array模块我们也可以在Python中使用数组结构,下面我们就来详解详解Python中的array数组模块相关使用
    2016-07-07
  • jupyter notebook 中使用ipython 魔法指令的详细过程

    jupyter notebook 中使用ipython 魔法指令的详细过程

    在 Jupyter Notebook 中,IPython 魔法指令为数据分析和探索提供了很多便利,这篇文章主要介绍了jupyter notebook 中使用ipython 魔法指令的详细过程,需要的朋友可以参考下
    2024-06-06
  • Python 一键获取百度网盘提取码的方法

    Python 一键获取百度网盘提取码的方法

    这篇文章主要介绍了Python 一键获取百度网盘提取码的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python输出汉字字库及将文字转换为图片的方法

    Python输出汉字字库及将文字转换为图片的方法

    这篇文章主要介绍了Python输出汉字字库及将文字转换为图片的方法,分别用到了codecs模块和pygame模块,需要的朋友可以参考下
    2016-06-06

最新评论