写点什么

老板让我创建一百个微信群

作者:IT蜗壳-Tango
  • 2022 年 6 月 01 日
  • 本文字数:1698 字

    阅读完需:约 6 分钟

老板让我创建一百个微信群

这里的老板是我凭空想象出来的,但是你有没有想过如何能快速省力的创建好 100 个微信群呢?今天就和我一起来看看如何使用 Python 来完成这家事情吧。


准备工作

需要安装配置好以下开发环境:

  • Python---开发语言

  • Appium--自动化测试工具

  • SDK------让电脑和手机进行交换(也是为了后面查看微信元素。)

  • VSCode 或者 PyCharm

具体的配置环境搭建可以去网上找找,如果需要我出教程可以评论区留言。

这里值得提一句的是 SDK 需要 JAVA 环境,而最新的 JAVA 安装时,已经不会自动安装 JRE 了,这需要我们额外安装,否则在运行 uiautomatorviewer.bat 时会闪退。


实现思路

  • 知道如何创建微信群(为了不打扰别人,我们创建一个只有自己的群)

  • 如何将上面的动作转换成为代码。

首先我们来看看怎么创建一个人的群

  • 在微信界面点击右上角的 + 图标

  • 选择发起群聊

  • 选择面对面建群

  • 输入一个四位密码我们默认从 0001~0100

  • 点击进入群聊

  • 点击右上角 ... 图标

  • 点击群聊名称

  • 输入群名【测试 0001】~ 【测试 0100】

  • 点击完成

  • 点击左上角 < , 回到群聊界面

  • 点击左上角 < ,回到微信主界面


代码实现思路:

  • 主要是利用 Appium 和 Python 来操作微信

  • 关于微信的控件元素,我们使用 uiautomatorviewer.bat 来获取

代码实现

0. 创建代码环境

python -m venv env env\Scripts\activatepip install Appium-Python-Client mkdir src
复制代码

env: 我们创建的虚拟环境,为了和其他工程隔离开

src: 我们用来保存代码的目录

1. 进入微信

from appium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECimport time
server='http://localhost:4723/wd/hub'# app启动参数desired_caps={ "platformName": "Android", "deviceName": "Tango", "appPackage": "com.tencent.mm", "appActivity": ".ui.LauncherUI", "noReset":True}
driver = webdriver.Remote(server,desired_caps)
复制代码

4723 是 Appium 默认的端口号

appPackage:我这里用的是微信的包名

appActivity:微信的启动界面

noReset:我不希望将微信的记录清空,因此此处设置了 True

如何查看微信的包名以及启动界面:

手动启动微信放在最前面,

并利用之前配置好的 adb 和以下代码来进行查看


adb shell dumpsys activity activities | findstr Activities
复制代码


根据 tencent 我们可以找到哪一个是微信的东西。

2. 如何查找元素

我们可以利用 uiautomatorviewer.bat 来查看当前手机显示的页面上的各个元素的属性

这个工具位于 SDK 的安装目录-->tools-->bin 下

双击打开,如何环境配置正常的情况下,是可以看到如下界面的

我们点击左上角的第二个图标

如果看到如下错误,可以将后台的 abd 进程全部结束后,重新再打开一次即可

下面是正常的情况,显示的界面

我们选择右上角的图标后,可以看房的右侧的元素熟悉里面,可以很容易的看到这个元素的 ID,这样,我们就可以通过 Appium+Python 来控制他们的点击以及输入了。


完整的工程代码

from appium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECimport time


class AutoWork():
def __init__(self) -> None: server='http://localhost:4723/wd/hub' # app启动参数 desired_caps={ "platformName": "Android", "deviceName": "Tango", "appPackage": "com.tencent.mm", "appActivity": ".ui.LauncherUI", "noReset":True } self.driver = webdriver.Remote(server,desired_caps) self.driver.implicitly_wait(10)
def main(self): self.driver.find_element(By.ID, "hyc").click() # 点击加号 time.sleep(2) self.driver.find_element(By.ID, "ko8").click() # 点击发起群聊 self.driver.find_element(By.XPATH, "//*[@text='面对面建群']/parent::android.widget.LinearLayout").click()

if __name__ == "__main__": mp = AutoWork() mp.main()
复制代码


发布于: 刚刚阅读数: 3
用户头像

一个日语专业的程序猿。 2017.09.10 加入

【坐标】无锡 【软件技能】Java,C#,Python 【爱好】炉石传说 【称号】InfoQ年度人气作者,Intel OpenVINO领航者联盟成员 【B站】https://space.bilibili.com/397260706/ 【个人站】www.it-worker.club

评论

发布
暂无评论
老板让我创建一百个微信群_Python_IT蜗壳-Tango_InfoQ写作社区