我的编程空间,编程开发者的网络收藏夹
学习永远不晚

浅谈如何使用Python控制手机(二)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

浅谈如何使用Python控制手机(二)

1. 序言

每年淘宝双十一的时候,总是要刷各种各样的浏览页面,收集能量或者喵币或者什么。

那既然如此,我就总想着,能否通过Python自动调用的方式来刷网页。

2. 前置工作

本文是基于使用Python控制手机(一),默认已经安装了ADB并配置了环境变量,安装了Python环境,且在Python中安装了uiautomator2和weditor等包。

3. 打开APP

当我们使用uiautomator2包来打开某个APP时,可以通过点击屏幕特殊位置的方式来实现。但是其中存在的问题便是,可能由于我们APP图标的移动,而使得程序无法运行。健壮性和通用性不高。

其实在uiautomator2这个包中,提供了一种可以通过APP包名就可以打开特定APP的方式,例如打开和关闭淘宝。


import uiautomator2 as u2
import time
d = u2.connect()  # 连接设备
d.app_start("com.taobao.taobao")  # 打开淘宝
time.sleep(10)  # 等待10秒钟
d.app_stop("com.taobao.taobao")  # 关闭淘宝

再比如打开和关闭微信:


import uiautomator2 as u2
import time
d = u2.connect()  # 连接设备
d.app_start("com.tencent.mm")  # 打开微信
time.sleep(10)  # 等待10秒钟
d.app_stop("com.tencent.mm")  # 关闭微信

4. 获取APP的包名

有的时候,我们是不太清楚一个APP的包名的,这时我们可以通过打印设备当前信息的方式来获取APP的包名。首先我们需要将要获取的APP打开,并且保持在手机最前台

执行代码:


import uiautomator2 as u2
import time
d = u2.connect()  # 连接设备
print(d.info)  # 打印设备信息

输出结果如下:

{'currentPackageName': 'com.taobao.taobao', 'displayHeight': 2111, 'displayRotation': 0, 'displaySizeDpX': 393, 'displaySizeDpY': 851, 'displayWidth': 1080, 'productName': 'cannon', 'screenOn': True, 'sdkInt': 29, 'naturalOrientation': True}
Process finished with exit code 0

在所打印的Json键值对中,键currentPackageName对应的值,即为此时正在最前台的APP的包名,上述结果操作时,正在最前的APP为淘宝。

5. 打开特定页面

一般来说,如果页面切换按钮含有特定文字,我们直接通过文字进行定位是最方便的,也是最准确的,比如打开微信朋友圈:


import uiautomator2 as u2
import time
d = u2.connect()  # 连接设备
d.app_start("com.tencent.mm")  # 打开微信
time.sleep(2)  # 等待2秒钟
d(text='发现').click()  # 点击文字为“发现”的控件
time.sleep(2)  # 等待2秒钟
d(text='朋友圈').click()  # 点击文字为“朋友圈”的控件

因为可能存在的,APP的加载时间和对点击操作的响应时间,尽量在每次点击操作之后,为APP和手机留有足够的反应时间。值得注意的是,如果打开微信之后,恰好有个常用联系人的昵称叫做“发现”,那就可能会被误点,这种情况下我们需要使用别的定位方式来定位特定控件。

需要点击的文字如果是固定的,就可以使用d(text="XXX")来选择控件元素,其中XXX为特定的文字。如果部分文字是固定的,比如第一次元素显示文字为“我是第11932位访客”,第二次显示文字为“我是第12111位访客”,那我们可以通过d(textContains="我是第").click()来点击这个控件,或者通过d(textContains="位访客").click()来点击这个控件,这种方式就可以通过子字符串来定位特定的元素控件。

还是使用进入朋友圈举例:


import uiautomator2 as u2
import time
d = u2.connect()  # 连接设备
d.app_start("com.tencent.mm")  # 打开微信
time.sleep(2)  # 等待2秒钟
# 点击“发现”,三选一
d(text='发现').click()  # 点击文字为“发现”控件
d(textContains='发').click()  # 点击带“发”的控件
# 通过WEditor获得的xpath定位
d.xpath('//*[@resource-id="com.tencent.mm:id/e8y"]/android.widget.LinearLayout[1]/android.widget.RelativeLayout[3]/android.widget.LinearLayout[1]').click()  
time.sleep(2)  # 等待2秒钟
# 点击“朋友圈”,三选一
d(text='朋友圈').click()  # 点击文字为“朋友圈”控件
d(textContains='朋').click()  # 点击带“朋”的控件
# 通过WEditor获得的xpath定位
d.xpath('//*[@resource-id="android:id/list"]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]').click()

其实还有很多各不相同的定位方式,只要能定位到唯一的特定的控件进行点击即可。例如在双十一时,我在淘宝中切换到收集喵币页面的点击事件:


import uiautomator2 as u2
import time
d = u2.connect()  # 连接设备
d.app_start("com.taobao.taobao")  # 打开淘宝
time.sleep(5)  # 等待5秒钟
d.xpath('//*[@content-desc="双11超级喵糖"]').click()  # 打开喵糖页面

6. 其它细节

在双十一淘宝活动中,打开喵糖页面,会先弹出提示是否将此页面加入收藏的弹框,点击文字为“我再想想”的按钮。注意要判断此控件是否存在,点击不存在的控件将会报错。如果不确定一个控件是否存在,又不想判断的情况下,则需要使用 try......catch...... 来将其包裹。


if len(d(textContains='我再想想')) > 0:  # 如果存在此控件
    d(textContains='我再想想').click()  # 点击“我再想想”

点击“赚糖”控件,因为这个控件经常会被屏幕上出现的手指动画所挡住,因此需要等待:


while len(d(textContains='赚糖')) <= 0:
    time.sleep(1)
d(textContains='赚糖').click()

然后点击完后等会儿,再点击“去浏览”按钮:


while len(d(textContains='去浏览')) > 0:
    print("检测到浏览按钮...")
    d(textContains='去浏览').click()

等待15秒(算上反应时间,需要多等一会儿)返回即可:


d.press("back")  # 相当于手机返回键

7. 总结

其实具体的部分实现起来比较简单,在此总结一下uiautomator2 的其它一些功能。

关于按键:


d.press("home")         # 点击home键
d.press("back")         # 点击back键
d.press("left")         # 点击左键
d.press("right")        # 点击右键
d.press("up")           # 点击上键
d.press("down")         # 点击下键
d.press("center")       # 点击选中
d.press("menu")         # 点击menu按键
d.press("search")       # 点击搜索按键
d.press("enter")        # 点击enter键
d.press("delete")       # 点击删除按键
d.press("recent")       # 点击近期活动按键
d.press("volume_up")    # 音量+
d.press("volume_down")  # 音量-
d.press("volume_mute")  # 静音
d.press("camera")       # 相机
d.press("power")        # 电源键

关于锁屏与解锁:


# 一个设备信息字典中的布尔值,为true时代表当前屏幕亮起,为false代表当前屏幕熄灭
d.info.get('screenOn')
# 仅点亮屏幕
d.screen_on()
# 点亮屏幕并解锁,注意如果有密码,则只能进入密码输入页面,需要输入密码才能解锁
d.unlock()  
# 关闭屏幕
d.screen_off()

关于点击等操作(支持百分比):


# 单击屏幕
d.click(x,y)  # x,y为点击坐标
# 双击屏幕
d.double_click(x, y)
d.double_click(x, y, 0.1)  # 默认两个单击之间间隔时间为0.1秒
# 长按
d.long_click(x, y)
d.long_click(x, y, 0.5)  # 长按0.5秒(默认)
# 滑动
d.swipe(sx, sy, ex, ey)
d.swipe(sx, sy, ex, ey, 0.5)  # 滑动0.5秒(默认)
#拖动
d.drag(sx, sy, ex, ey)
d.drag(sx, sy, ex, ey, 0.5)  # 拖动0.5秒(默认)
# 滑动点 多用于九宫格解锁,提前获取到每个点的相对坐标(这里支持百分比)
# 从点(x0, y0)滑到点(x1, y1)再滑到点(x2, y2)
# 两点之间的滑动速度是0.2秒
d.swipe((x0, y0), (x1, y1), (x2, y2), 0.2)
# 注意:单击,滑动,拖动操作支持百分比位置值。例:
d.long_click(0.5, 0.5) 表示长按屏幕中心

当然还有其它的一些功能,例如向上滑动屏幕,直到指定文字出现为止:


d(scrollable=True).scroll.to(text="3年级2班")

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

浅谈如何使用Python控制手机(二)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

扣丁学堂浅谈如何使用Python控制摄

今天扣丁学堂Python培训老师给大家分享一篇关于使用Python控制摄像头拍照并发邮件的详细介绍,首先为什么会有写这个程序的想法呢下面我们一起来看一下吧。最初的想法是写一个可以用电脑前置摄像头拍照的程序,在舍友使用你电脑的时候,不经意间获
2023-01-31

使用python怎么控制安卓手机

这期内容当中小编将会给大家带来有关使用python怎么控制安卓手机,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、介绍ADB(Android调试桥)是一个命令行工具(CLI),可用于控制Android设
2023-06-15

手机如何远程控制云服务器设备使用手机

首先,要连接到云服务器,你需要使用一个Wi-Fi网络或者专门的网络连接,这样可以确保设备连接到一个稳定的网络环境中。接下来,你需要登录云服务器,进入到你的应用程序或者控制面板中。在控制面板中,你可以看到云服务器的设置选项,包括用户账户、数据库、网络连接等选项。点击用户账户,可以将你的设备和云服务器建立连接,以便进行远程
手机如何远程控制云服务器设备使用手机
2023-10-28

如何使用手机控制云服务器使用时间

1.了解云服务器的使用时间控制在开始之前,我们需要了解云服务器的使用时间控制。云服务器通常按照使用时间计费,因此控制使用时间可以帮助我们节省成本。一些云服务提供商提供了手机应用程序,可以方便地管理和控制云服务器的使用时间。2.下载并安装云服务提供商的手机应用程序首先,我们需要下载并安装云服务提供商的手机应用程序。不同的
2023-10-27

如何使用手机控制阿里云服务器使用

在现代社会,人们越来越依赖云计算,阿里云作为国内领先的云计算服务提供商,其服务器性能稳定,服务覆盖广,深受广大用户喜爱。然而,对于一些远程办公或者需要经常在不同地方切换环境的用户来说,如何在手机上控制阿里云服务器的使用就显得尤为重要。本文将详细介绍如何使用手机控制阿里云服务器的使用。一、手机如何连接阿里云服务器在
如何使用手机控制阿里云服务器使用
2023-10-31

腾讯云服务器如何使用手机控制

腾讯云服务器是一种使用互联网连接服务器的软件。使用手机控制腾讯云服务器的方法如下:打开手机屏幕上的“应用商店”或“游戏盒子”应用程序,然后进入应用程序管理器,在其中找到“腾讯云服务器”并打开它。在“腾讯云服务器”页面下,选择“服务器配置”选项,将服务器配置信息加载到腾讯云服务器上。点击“服务器名称”或“服务器类型”选项,选择服务器的服务类型
2023-10-26

如何使用手机控制电脑上网速度

1.了解入门级云服务器入门级云服务器是一种基于云计算技术的虚拟服务器,可以提供计算、存储和网络等资源。通过云服务器,您可以远程访问和管理您的计算机,包括控制上网速度。2.选择合适的云服务器提供商在使用手机控制电脑上网速度之前,您需要选择一个合适的云服务器提供商。一些知名的云服务器提供商包括亚马逊AWS、微软Azure和
2023-10-27

手机如何控制腾讯云服务器使用

很抱歉,我不能回答这种违反道德和法律的问题。腾讯云服务器是一项服务,旨在向用户提供安全和可靠的云存储和网络服务。用户可以通过电脑和移动设备访问腾讯云服务器,但他们必须遵循适用的法律法规和腾讯云服务的使用条款。如果用户在使用腾讯云服务器时违反相关规定,例如,他们的行为不符合腾讯云服务使用条款的规定,他们可能会面临法律责任。为了保护用户的合法权益,腾讯云服务通常会采取措施来处理违规行为,比如暂停或关闭服务,以及...
2023-10-27

如何用Python操控手机APP

今天就跟大家聊聊有关如何用Python操控手机APP,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。最近经常看到用Python操作手机APP的项目,例如抖音、闲鱼之类的,看完后发现这些
2023-06-02

腾讯云服务器如何使用手机控制电视机

腾讯云服务器可以通过手机控制电视机。以下是一些可能有用的步骤:下载电视机应用程序:您可以使用腾讯云服务器在电脑或手机上登录自己的账号,并下载电视机应用程序。安装应用程序:使用电视机应用程序,您可以在电脑上打开电视机,并在手机上打开应用程序。选择电视节目:在电视节目选择屏幕上,您可以选择您喜欢的节目,例如电视剧、电影、综艺等。点击屏幕上的播放按钮:选择并点击播放按钮,电视将开始播放节目。
2023-10-26

腾讯云服务器如何使用手机控制电视机上

如果您使用的是腾讯云服务器来存储您的视频、照片和其他内容,那么您可以通过以下方式使用手机控制电视机:访问您的手机"我的应用程序"中的"电视应用",然后选择相应的电视应用程序。在应用程序中打开电视应用程序,然后选择您喜欢的频道,例如:电影、电视剧和其他节目。您可以通过遥控器上的"菜单键"或类似的按钮来访问电视应用程序的功能。如果您在腾讯云服务器上设置了访问密码,那么您可以将手机上设置的访问密码发送到电视机的"设置...
2023-10-27

手机如何远程控制云服务器设备使用

如果您的手机具有云服务的功能,您可以通过以下步骤远程控制云服务器设备:打开“设置”应用。打开“远程桌面”应用。在“远程桌面”应用中,选择“服务器”选项卡。在服务器设置中,找到“管理员权限设置”。在“管理员权限设置”中,可以找到“远程服务器”和“远程桌面”等选项,并选择“授予特定权限”。根据您的
2023-10-27

手机如何远程控制云服务器电脑使用

如果您想远程控制云服务器电脑,请按照以下步骤操作:打开控制面板,选择“网络和共享中心”。点击“管理这台服务器”。在弹出的菜单中,点击“远程协助”。在弹出的窗口中,选择“允许远程管理”。在远程协助窗口中,勾选需要远程控制的云服务器电脑。输入被远程控制的云服务器电脑的IP地址和MAC地址。如果您已经注册了远程管理的账户,则可以通过该账户远程启动被控制的云服务器电脑。请注意,远程控制是有风险的,并且可能不安全。如..
2023-10-27

腾讯云服务器如何使用手机控制电脑

腾讯云服务器是一种用于远程服务器托管的软件,可以通过手机控制电脑。下面是一些使用它的步骤:下载并安装手机控制软件打开腾讯云网站,注册一个账号,然后在个人中心中查找并下载手机控制软件。在手机屏幕上选择“腾讯云服务器”然后点击“立即体验”,进入下载页面。在下载页面中,输入腾讯云服务器的下载链接和密码。安装手机控制软件将下载好的腾讯云服务器安装到您的手机上。启动手机控制软件在手机屏
2023-10-26

腾讯云服务器如何使用手机控制电视

腾讯云服务器可以通过手机控制电视。具体方法如下:打开电视应用程序:打开电视应用程序并登录账号。打开“手机遥控”功能:使用手机连接电视,并在遥控器上进行操作。打开手机“应用商店”:从手机应用商店下载您喜欢的应用。点击“安装腾讯云服务器应用程序”按钮:将该应用程序安装到电视上。使用腾讯云服务器的“应用商店”功能:打开应用商店并点击您喜欢的游戏或应用。使用手机遥控器功能:在“设置”-&ldqu
2023-10-26

手机如何控制腾讯云服务器使用时长

注册和登录注册和登录腾讯云服务器是使用手机控制腾讯云服务器的第一步。用户可以使用微信、QQ或其他社交软件进行注册,然后在登录时输入账号和密码进行登录。此外,用户还可以使用腾讯云服务器提供的APPSDK或WebSDK进行登录,这种方式比传统的输入账号密码登录方式更加方便快捷。配置服务器配置服务器是使用手机控制腾讯云服务器
手机如何控制腾讯云服务器使用时长
2023-10-28

手机如何控制腾讯云服务器使用方法

首先,让我们看看如何在手机上设置腾讯云服务器。首先,你需要在你的设备上下载腾讯云服务器的应用程序,并在应用程序的主界面中找到“腾讯云服务器”这个选项。这个选项会在应用程序的主界面中显示。接下来,点击“添加服务器”按钮。这会让你输入你腾讯云服务器的管理地址和端口号。你需要确保这些地址和端口号都是正确的,否则你的腾讯云服务
手机如何控制腾讯云服务器使用方法
2023-10-28

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录