termux+uiautomator2给多个QQ好友点赞

termux+uiautomator2给多个QQ好友点赞

安装依赖和uiautomator2库并通过打印设备详情测试环境

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
  # 安装依赖
  apt install -y clang libxml2 libxslt python-pip libjpeg-turbo zlib android-tools 
  pip install cython lxml
  # 安装库
  pip install --pre uiautomator2
  # 初始化设备  
  # 手机无线调试并执行adb配对,然后连接手机ip对应的adb设备,端口为5555是因为配置连接后执行 adb tcpip 5555 设置的
  adb connect 192.168.1.101:5555
  {
	echo 'import uiautomator2 as u2'
	echo 'd = u2.connect("192.168.1.101")'
	echo 'print (d.info)'
  } > testdemo.py
  python -m uiautomator2 init		# 前提是USB调试打开的情况下已经连接无线调试或者USB连接电脑
  python testdemo.py

最后执行testdemo.py打印信息如下:

{'currentPackageName': 'com.tencent.mobileqq', 'displayHeight': 2400, 'displayRotation': 0, 'displaySizeDpX': 411, 'displaySizeDpY': 914, 'displayWidth': 1080, 'productName': 'CN_AI2401', 'screenOn': True, 'sdkInt': 35, 'naturalOrientation': True}

环境没有问题了之后就可以进行下一步了,借助WEditor写QQ好友点赞脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import sys
import uiautomator2 as u2

d = u2.connect('192.168.1.101')

# 可以通过传入ip参数执行该程序,如:python qq好友点赞.py 192.168.1.101
# d = u2.connect(sys.argv[1])

d.app_start('com.tencent.mobileqq')
d.xpath('//*[@resource-id="com.tencent.mobileqq:id/e3u"]/android.widget.FrameLayout[1]').click()
d(resourceId="com.tencent.mobileqq:id/us4").click()
d.click(949,650)
for i in range(1):
  for j in range(10):
    xpath = f'//*[@resource-id="com.tencent.mobileqq:id/kzn"]/android.widget.LinearLayout[{i+1}]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.ImageView[1]'
    d.xpath(xpath).click()

d.app_stop('com.tencent.mobileqq')
# d.app_clear('com.tencent.mobileqq')

在WEditor中连接adb设备之后,通过不断的不断的双击控件和刷新界面,进而不断的更新控件操作脚本,然后再根据规律将点选的XPath中嵌入for循环变量,来实现给多个好友点赞,变量i对应多个好友,一共给6个好友点赞,通过{i+1}来切换好友,{i+1}是因为变量是从0开始的,而第一个好友对应的变量是从1开始的,所以变量i加1,然后每个好友通过变量j循环点赞10次。如果只要给第1个好友点赞,可以直接修改循环变量i的范围由6改为1,或者修改{i+1}为固定值比如3或者5,由于是修改为固定值,此时没有变量j的参与,所以把花括号也去掉。

脚本优化-1

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import os
import time
import uiautomator2 as u2

connect=os.system('adb devices | grep -w "device" | awk \'{print $1}\'')
d = u2.connect(connect)
# d = u2.connect('127.0.0.1')
# 也可以通过传入ip参数执行该程序,如:python qq好友点赞.py 192.168.1.101
# d = u2.connect(sys.argv[1])

# d.app_stop('com.tencent.mobileqq') # 如果是调试时可以取消注释该行,该行代码作用是为了每次打开指定软件前先关闭指定软件
d.app_start('com.tencent.mobileqq')
d.xpath('//*[@resource-id="com.tencent.mobileqq:id/e3u"]/android.widget.FrameLayout[1]').click()
d(resourceId="com.tencent.mobileqq:id/us4").click()

# d.click(949,650)
# 或
d(resourceId="com.tencent.mobileqq:id/us_").click()

d(resourceId="com.tencent.mobileqq:id/l0g").click()
if d(resourceId="com.tencent.mobileqq:id/l0g").exists:
  d(resourceId="com.tencent.mobileqq:id/l0g").click()
  time.sleep(0.5)

if d(resourceId="com.tencent.mobileqq:id/h7r").exists:
  d(resourceId="com.tencent.mobileqq:id/h7s").click()
  time.sleep(0.3)
else:
  for i in range(1):
    xpath = f'//*[@resource-id="com.tencent.mobileqq:id/kzn"]/android.widget.LinearLayout[{i+1}]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.ImageView[1]'
    for j in range(10):
      d.xpath(xpath).click()
    time.sleep(0.3)

d.app_stop('com.tencent.mobileqq')#+end_src
最后添加了d.app_stop()qq点完赞后会自动关闭

**** 执行方式

#+begin_src bash
  python qq好友点赞.py
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计