手机运行python控制手机app,python模拟手机屏幕点击

部署运行你感兴趣的模型镜像

大家好,本文将围绕手机运行python控制手机app展开说明,python模拟手机屏幕点击是一个很多人都想弄明白的事情,想搞清楚python连接手机模拟器需要先了解以下几个事情。

Source code download: 本文相关源码

一、电脑下载并安装SDK Platform Tools

在这里插入图片描述
在这里插入图片描述
下载后的文件:platform-tools_r30.0.4-windows.zip(大约12M)
接着解压文件到指定目录
在这里插入图片描述
解压后的路径与文件,接着为工具目录添加系统环境变量
在这里插入图片描述
验证安装结果

#执行命令
adb version

在这里插入图片描述
验证安装结果

手机连接电脑USB后执行adb devices 查看手机连接状态

查询已连接设备/模拟器:adb devices

此处连接手机,需要手机在开发者模式开启USB调试功能。顺便也开启模拟按键功能,后面会用到python画六瓣花

该命令经常出现以下问题:

offline —— 表示设备未连接成功或无响应;

device —— 设备已连接;

no device —— 没有设备/模拟器连接;

List of devices attached 设备/模拟器未连接到 adb 或无响应

简单获取手机屏幕坐标的方法

方法1、进入手机的开发者模式,打开在手机上实时显示坐标的功能,长按屏幕位置自动显示坐标

方法2、使用android adb shell命令获取

# 截屏到手机
adb shell screencap /sdcard/screen.png
# 将手机上刚才的截图上传到电脑
adb pull /sdcard/screen.png  /Users/Administrator/Desktop/screen.png

从原始图片上,使用PS扣出自己想要的局部图片,然后使用下面的代码获取局部图片在原始图片上的坐标
不会使用PS,可以直接使用截图在原始图片上截图,但是没PS精细。

import aircv as ac

# 根据图片在图片上查找坐标
# imgsrc=原始图像,imgobj=待查找的图片,confidence=设置匹配系数
def matchImg(imgsrc, imgobj, confidence=0.2):
    imsrc = ac.imread(imgsrc)
    imobj = ac.imread(imgobj)
    match_result = ac.find_all_template(imsrc, imobj, confidence)
    return match_result


if __name__ == '__main__':
    p = matchImg("C:\\Users\\Administrator\\Desktop\\screen.png", "C:\\Users\\Administrator\\Desktop\\daicha.png")
    print(p)

使用python操控手机

import os
import time


def execute(cmd):
    adbstr = 'adb shell {}'.format(cmd)
    print(adbstr)
    os.system(adbstr)


if __name__ == '__main__':

    while True:
        # 点击位置一
        execute("input tap 350 2200")
        time.sleep(3)
      
        # 点击位置二
        execute("input tap 970 135")
        time.sleep(5)

adb模拟按键操作

1.模拟文本输入操作

## 模拟输入abc
adb shell input text abc

2.通过键值模拟按键操作

## 模拟按back键
adb shell input keyevent 4
## 或者
adb shell input keyevent KEYCODE_BACK

3.通过坐标模拟点击操作

## 点击横坐标300,纵坐标500的点
adb shell input tap 300 500

4.通过坐标模拟滑动操作

## 从(200,300)的点划到(500,300)的点,滑动时间100ms
adb shell input swipe 200 300 500 300 100

5.通过坐标模拟拖动操作

## 从(100,1220)的点拖动到(500,620)的点,滑动时间2000ms
adb shell input draganddrop 100 1220 500 620 2000

6.通过坐标模拟长按滑动操作注意与滑动操作的区别

按住不放,从(200,300)的点划到(201,301)的点,滑动时间2000ms,由于划动距离短,时间长,在一个图标之内则主观显示为长按操作

可以将游戏背包的物品拖动,扔到仓库。

adb shell input swipe 200 300 201 301 2000

7.模拟实体键长按操作

通过 getevent & 获取实体键键值


/dev/input/event4: 0001 0074 00000001
/dev/input/event4: 0000 0000 00000000
/dev/input/event4: 0001 0074 00000000
/dev/input/event4: 0000 0000 00000000

0074为电源键键值,转换为十进制为116,编写如下脚本

sendevent /dev/input/event4 1 116 1
sendevent /dev/input/event4 0 0 0
sleep 4
sendevent /dev/input/event4 1 116 0
sendevent /dev/input/event4 0 0 0

8.通过坐标/键值模拟同时按下两个键,用and连接

## 电源键亮屏并滑动解锁
adb shell input keyevent KEYCODE_POWER and KEYCODE_MENU

android adb shell 常用命令

android adb shell官方命令(英文)https://adbshell.com/

以下命令来源:https://www.jianshu.com/p/ccd35afa8470

1.模拟点击

adb shell input tap 100 100

2.滑动

adb shell input swipe x1 y1 x2 y2 
adb input touchscreen swipe x1 y1 x2 y2 100

adb shell input swipe 100 100 400 100  300 #左往右
adb shell input swipe 400 100 100 100  300 #右往左
adb shell input swipe 100 100 100 400  300 #上往下
adb shell input swipe 100 400 100 100  300 #下往上
adb shell input swipe 100 100 400 400  300 #上往下斜
adb shell input swipe 400 400 100 100  300 #下往上斜

3.长按

adb shell input swipe 100 100 100 100  1000 //在 100 100 位置长按 1000毫秒

adb shell input swipe 367 469 367 469 800

4.打印所有包名

adb shell pm list packages

➜  ~ adb shell pm list packages
package:com.huawei.floatMms
package:com.android.defcontainer
package:com.tencent.mm

5.打印制定包的apk路径

adb shell pm path com.android.phone

➜  ~ adb shell pm path com.huawei.android.launcher
package:/system/app/HwLauncher6.apk

6.删除制定包

adb shell pm clear com.test.abc

7.截图

adb shell screencap /sdcard/screen.png
adb pull /sdcard/screen.png #下载到本地

8.获取被点击的位置信息

adb shell getevent

>
/dev/input/event0 3 39 3e1
/dev/input/event0 1 14a 1
/dev/input/event0 1 145 1
/dev/input/event0 3 35 406  //x坐标
/dev/input/event0 3 54 1083  //y坐标
/dev/input/event0 0 0 0
/dev/input/event0 3 39 ffffffff
/dev/input/event0 1 14a 0
/dev/input/event0 1 145 0
/dev/input/event0 0 0

getevent -l -c 16
输出所有event设备的基本信息

add device 1: /dev/input/event2
  name:     "hi6421_on"
could not get driver version for /dev/input/mouse0, Not a typewriter
add device 2: /dev/input/event4
  name:     "huawei,touchscreen"
add device 3: /dev/input/event0
  name:     "mhl_rcp_dev"
could not get driver version for /dev/input/mice, Not a typewriter
add device 4: /dev/input/event1
  name:     "hisi_gpio_key.14"
add device 5: /dev/input/event3
  name:     "hi3630_hi6401_CARD Headset Jack"

getevent -c 10 //输出10条信息后退出
getevent -l  //将type、code、value以对应的常量名称显示

9.打开对应的activity

adb shell am start -n {包(package)名}/{包名}.{活动(activity)名称}

adb shell am start com.songheng.eastnews/com.oa.eastfirst.activity.WelcomeActivity

10.获得当前活动窗口的信息,包名以及活动窗体

adb shell dumpsys window windows | grep mCurrent 

11.包名管理命令,获得对应包名的对应apk路径

adb shell pm  path com.migu.lobby

12.使用dumpsys命令可以查看Android手机当前正在运行的Activity

adb shell dumpsys activity activities | findstr "Run"

13.使用 uiautomator dump 获取app上的页面元素

adb shell uiautomator dump /data/local/tmp/uidump.xml
adb shell uiautomator dump /sdcard/dump.xml

14.下载文件

adb pull /sdcard/demo.mp4 

15.上传文件

adb push test.apk /sdcard

16.息屏

adb shell input keyevent 26

17.keyevent

adb shell input keyevent 20 #向下

adb shell input keyevent 4 #返回

adb shell input keyevent 3 #Home

adb shell input keyevent 6 #挂机

adb shell input keyevent 84 #搜索

adb shell input keyevent 26 #电源

adb shell input keyevent 24 #音量+

adb shell input keyevent 25 #音量-

18.输入框输入

adb shell input text "ANDROID"

19.利用无线来查看adb shell

> adb tcpip 5555

连接:
> adb connect IP:5555

20.查看所有已经连接上的设备

adb devices

21.安装卸载

adb install <apk文件路径>
adb install -r <apk文件路径>     通过install命令来安装apk文件,-r参数可以重新安装某个应用并保留应用数据

adb install -r ~/chrome.apk

卸载应用:
adb uninstall <软件名>
adb uninstall -k < 软件名>         如果加 -k 参数,为卸载软件但是保留配置和缓存文件

adb uninstall com.android.chrome

22.关机命令

adb shell
su
reboot -p

您可能感兴趣的与本文相关的镜像

Qwen-Image-Edit-2509

Qwen-Image-Edit-2509

图片编辑
Qwen

Qwen-Image-Edit-2509 是阿里巴巴通义千问团队于2025年9月发布的最新图像编辑AI模型,主要支持多图编辑,包括“人物+人物”、“人物+商品”等组合玩法

<think>好的,用户想用Python控制手机微信打开某个App。首先,我需要理解用户的具体需求。他们可能希望通过微信内的链接或小程序来启动其他应用,或者直接通过微信自动化操作触发手机打开另一个App。这涉及到Android或iOS系统的自动化控制,以及微信客户端的操作。接下来,我需要考虑现有的Python库和工具。Appium是一个常用的移动端自动化框架,支持跨平台,可以用于模拟用户操作。另外,uiautomator2是专门针对Android的库,而iOS可能需要使用Facebook的WDA。用户提到的微信自动化,可能需要先打开微信,然后进行一系列点击操作,比如找到某个聊天中的链接或小程序,从而触发打开目标App。然后,我需要检查用户提供的引用内容。引用2提到了使用Appium来自动添加微信好友,引用3讨论了使用WindowControl来操作微信窗口,但这是在PC端的。用户的问题是关于手机微信的,所以可能需要不同的方法。需要区分PC端和手机端的自动化,因为两者的实现方式不同。 用户可能需要的是在手机上通过Python脚本控制微信,比如点击某个消息中的链接,从而打开另一个App。这需要手机端的自动化工具,比如Appium配合Android的UIAutomator或iOS的XCUITest。可能需要编写脚本启动微信,找到特定元素并点击,或者处理意图(Intent)来直接打开App。 此外,微信本身的安全限制可能会影响自动化操作,比如频繁操作可能导致账号被封。需要提醒用户注意合规使用,避免滥用。最后,整理步骤:安装必要的库,配置设备环境,编写脚本启动微信并执行操作,处理可能的元素定位问题,以及提供优化建议。同时,生成相关问题,帮助用户深入理解可能遇到的挑战和解决方案。</think>要实现通过Python控制手机微信打开指定App的功能,通常需要结合移动端自动化框架和微信控件的操作。以下是分步骤实现方案: ### 一、环境准备 1. 安装Python 3.8+和adb工具 2. 安卓设备开启开发者模式/USB调试 3. 安装依赖库: ```bash pip install appium-python-client uiautomator2 weditor ``` ### 二、核心实现原理 通过Appium发送Android Intent或操作微信控件: 1. **直接启动方式**:使用Android Intent协议 ```python from appium import webdriver desired_caps = { "platformName": "Android", "udid": "设备ID", "appPackage": "com.tencent.mm", "appActivity": ".ui.LauncherUI" } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) driver.start_activity("目标App包名", "目标Activity") ``` 2. **控件操作方式**(以打开小程序为例): ```python # 定位微信发现页 discover_btn = driver.find_element_by_xpath('//*[@text="发现"]') discover_btn.click() # 定位小程序入口 mini_program = driver.find_element_by_xpath('//*[@text="小程序"]') mini_program.click() ``` ### 三、完整代码示例 ```python from appium import webdriver from time import sleep def open_app_via_wechat(): desired_caps = { "platformName": "Android", "deviceName": "设备名称", "appPackage": "com.tencent.mm", "appActivity": ".ui.LauncherUI", "noReset": True } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) try: # 操作微信进入目标页面 driver.find_element_by_id("聊天元素ID").click() driver.find_element_by_xpath('//*[contains(@text,"目标链接")]').click() sleep(3) # 获取当前上下文并切换到WebView contexts = driver.contexts driver.switch_to.context(contexts[-1]) # 执行JavaScript打开App driver.execute_script("mobile:deepLink", { "url": "目标App的URL Scheme", "package": "目标App包名" }) finally: driver.quit() ``` ### 四、关键技术点 1. **元素定位**: - 使用`weditor`工具生成XPath - 微信WebView需切换上下文[^3] 2. **特殊场景处理**: ```python # 处理弹窗 if driver.find_elements_by_id("弹窗ID"): driver.back() # 多窗口处理 window_handles = driver.window_handles driver.switch_to.window(window_handles[1]) ``` 3. **性能优化**: - 增加隐式等待`driver.implicitly_wait(10)` - 使用UIAutomator2提升速度[^1] ### 五、注意事项 1. 微信版本需保持最新(v8.0.30+) 2. Android API Level需≥24 3. 部分操作需要微信特殊权限[^2] 4. iOS系统需额外配置WebDriverAgent
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值