如何用Python控制手机 -- appuim安装与使用

  今天由于个人需求,想要用自动连点器之类的APP控制下手机,但是目前网上可以搜到的连点器都没有判断停止条件的功能,而我正好需要这个,于是决定自己写一个!问了百度和同学之后,决定用ADB调试,安装appium来实现。

目录

  • ADB环境安装配置
    • Python
    • Java
    • Android SDK
    • Node.JS
    • .NET Framework
    • Appium
    • Appium-Python-Client
  • Appium基础使用
    • 启动
    • 使用文档
  • 文字识别与自动点击

ADB环境安装配置

Python

  官网下载地址
  作为开发人员应该都有Python的环境,所以自行安装Python3以上版本,原因不赘述,注意配置环境变量Path。

Java

  官网下载地址
  同样,作为开发人员应该都有Java的环境,自行安装Java8或Java11的JDK。注意配置环境变量JAVA_HOMEPath

Android SDK

  官网下载地址
  Android Studio中文社区官网
  安卓环境的安装不难,自行安装Android的SDK。注意配置环境变量ANDROID_HOMEPath
  可以直接安装Android Studio,然后使用Android Studio安装SDK。
  菜单--Tools--SDK Manager,钩选自己要安装的版本点击Apply进行下载即可。

Node.JS

  官网下载地址
  双击安装包就可以。这里不需要配置环境变量,因为安装过程中已经自动配置好了。
如何用Python控制手机 -- appuim安装与使用_第1张图片
  npm是一个node包管理和分发工具。npm可以输入指令在线安装appium。打开cmd输入npm install –g appium
如何用Python控制手机 -- appuim安装与使用_第2张图片

.NET Framework

  官网下载地址
  也是双击,会有傻瓜式指引安装。
  如果已安装的就不用再安装了。
如何用Python控制手机 -- appuim安装与使用_第3张图片

Appium

  BitBucket下载地址
  GitHub下载地址
  双击安装。
如何用Python控制手机 -- appuim安装与使用_第4张图片
  将\node_modules\.bin添加到环境变量Path中。
  命令行输入 appium-doctor 进行检查,出现如下字样即为成功。
如何用Python控制手机 -- appuim安装与使用_第5张图片

Appium-Python-Client

  直接打开cmd输入pip install Appium-Python-Client
  这是将Appium与Python连起来。
如何用Python控制手机 -- appuim安装与使用_第6张图片

Appium基础使用

启动

  命令行输入appium
  若出现error: uncaughtException: primordials is not defined date=这样的错误报告,可能是node.js版本太高,下个5.7.0的版本可以解决。
  低版本node.js下载地址
  在cmd输入adb devices,获取模拟器的本地地址的端口或手机的设备名(一串英文和数字)
如何用Python控制手机 -- appuim安装与使用_第7张图片
如何用Python控制手机 -- appuim安装与使用_第8张图片

使用文档

  Appium中文官方文档
  获取控件文本:mobile_name.get_attribute('text')或者 mobile_name.text
  模拟按钮点击login_btn.click(),快速点击click(self),调用对象需是UiObject eg. driver.find_element_by_xx.click()
  单指或多指点击,长按tap(self,[(x0,y0),...],duration=None),最多可模拟五个手指同时点击,duration单位ms
  截取屏幕:save_screenshot()该方法直接保存当前屏幕截图到当前脚本所在的文件位置
  文字识别:可以选用百度开发者SDK的API
  根据xpath定位元素:driver.find_element_by_xpath()

文字识别与自动点击

  针对我的个人需求,设计如下脚本。

from appium import webdriver # 导入appium包

desc={
     }# 连接手机app初始化的一些信息
desc['deviceName']='127.0.0.1:62001' # 模拟器端口或手机设备名称,adb devices
desc['platformVersion']='4.4.2' # 手机版本,在手机中:设置--关于手机
desc['platformName']='Android' # 手机类型,ios或android
# 输入命令,获取app信息:aapt dump badging C:\Users\83473\Desktop\mobileqq_android.apk
desc['appPackage']='com.tencent.mobileqq' # 包名
desc['appActivity']='com.tencent.mobileqq.activity.SplashActivity' # 启动入口
desc["unicodeKeyboard"] = "True" # appium提供的一种输入法,可以传中文。测试时直接用这个输入法
desc["resetKeyboard"] = "True" # 程序结束时重置原来的输入法
desc["noReset"] = "True" # 不初始化手机app信息(类似不清除缓存)

# 在cmd窗口输入appium,启动服务端
# 如果appium没有安装好,可以打开appium-desktop,也相当于启动了服务

driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desc) # 访问服务接口,并启动手机app。url参数是当appium启动后,默认访问服务地址和接口

# 实际需求很小,不用启动应用
# 而是在已经打开的界面进行点击和判断
# 逻辑如下,因为时间和未找到解决方法,故暂不更新

# 根据坐标点击屏幕中央a位置
# 获取固定坐标位置b的文字(截图识别或者获取xpath定位的元素的文本)
# 根据文字判断点击c位置(不退出循环)还是d位置(退出循环)
# 若能循环,继续点击a位置

  
参考文章:
https://www.cnblogs.com/du-hong/p/10985654.html#autoid-0-6-0
https://www.cnblogs.com/lsdb/p/10108165.html
https://www.cnblogs.com/bendouyao/p/9346379.html
https://www.jianshu.com/p/21589ff62871

你可能感兴趣的:(Debug记录,python,java,android,appium,nodejs)