简介Appium是一款开源的自动化测试工具,支持Android和iOS平台原生应用,支持Java、Python、PHP等多种语言。Appium封装了Selenium,可以为用户提供所有常见的JSON格式的Selenium命令和附加的移动设备相关的控制命令,例如:多点触控手势、屏幕方向等。环境本文主要环境如下:Win7JDK1.8AppiumPython3.7android-sdkmumuSimulatorJDK下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html,你也可以文末直接获取配置环境变量:计算机(右键)->属性->高级系统设置->高级->环境变量->新建环境变量JAVA_HOME,如图:系统变量->找到Path变量->编辑->在变量值末尾添加;%JAVA_HOME%\\bin;%JAVA_HOME%\\jre\\bin;新建一个CLASSPATH变量,变量值为:.;%JAVA_HOME%\\lib;%JAVA_HOME%\\lib\\tools.jarandroid-sdk下载地址:https://www.androiddevtools.cn/,也可以文末直接获取配置环境变量:与JDK配置类似,新建一个环境变量ANDROID_HOME,变量值为android-sdk所在位置,例如:D:\\android-addsdk-windowsatPath变量值结尾;%ANDROID_HOME%\\tools;%ANDROID_HOME%\\build-tools\\30.0.0-preview;%ANDROID_HOME%\\platform-toolsAppium下载地址:https://github.com/appium/appium-desktop/releases/tag/v1.18.3,也可以直接获取并安装文末Python库:pipinstallappium-python-clientAppium安装启动后,点击EditConfiguration进行配置JDK和android-sdk,如图:mumu下载地址:http://www.51xiazai.cn/soft/584481.htm,也可以直接在e上获取mumu文章的nd。模拟器下载完成后,除了根据自己的需要更改安装路径外,其他选项默认安装即可。安装完成后,打开点击应用中心,搜索微信,搜索后安装,微信安装完成后使用自己的微信账号登录。因为我们是通过Android的adb连接虚拟机的,所以需要在控制台执行adbconnect127.0.0.1:7555命令让adb连接虚拟机。执行以上命令连接模拟器后,我们可以在cmd控制台输入adbdevices查看当前连接的虚拟机。先启动Appium和mumu,因为我们之前已经配置好了Appium,我们可以直接点击Appium的启动服务器按钮,如下图:启动后,如图:现在我们可以先通过Python启动微信,代码实现如下:desired_caps={"platformName":"Android",#operatingsystem"deviceName":"emulator-5554",#deviceID"platformVersion":"6.0.1",#deviceversionnumber"appPackage":"com.tencent.mm",#应用包名"appActivity":"com.tencent.mm.ui.LauncherUI",#应用启动时的主Activity'noReset':True,#是否保留session信息到避免重新登录'unicodeKeyboard':True,#使用unicodeKeyboard的编码方式发送字符串'resetKeyboard':True#隐藏键盘}driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)执行以上代码后,如果发现mumu模拟器中的微信已经启动,说明基础环境已经调好编;如果执行代码后发现mumu模拟器中的微信无法调整,先在cmd中执行adbconnect127.0.0.1:7555命令,再执行程序。添加好友,我们先用Appium来实现添加好友的操作。基本流程是:打开微信->点击⊕->选择添加好友->在搜索框中输入微信ID->点击搜索->点击添加到通讯录,函数代码实现如下:desired_caps={"platformName":"Android",#操作系统"deviceName":"emulator-5554",#设备ID"platformVersion":"6.0.1",#设备版本号"appPackage":"com.tencent.mm",#应用包名"appActivity":"com.tencent.mm.ui.LauncherUI",#应用启动时的主Activity'noReset':True,#是否保留session信息避免重新登录'unicodeKeyboard':True,#使用unicodeKeyboard的编码方式发送字符串'resetKeyboard':True#隐藏键盘}driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)time.sleep(10)print('点击+签名')driver.find_element_by_id('com.tencent.mm:id/ef9').click()time.sleep(5)print('选择添加好友')driver.find_elements_by_id('com.tencent.mm:id/gam')[1].click()time.sleep(5)print('点击搜索框')driver.find_element_by_id('com.tencent.mm:id/fcn').click()time.sleep(5)print('在搜索框输入微信号')driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys('ityard')time.sleep(3)print('点击搜索')driver.find_element_by_id('com.tencent.mm:id/ga1').click()time.sleep(3)print('点击添加到通讯录')driver.find_element_by_id('com.tencent.mm:id/g6f').click()简单的说,在代码中我们通过driver.find_element_by_id('com.tencent.mm:id/xx')获取微信上的元素,如果有重复,可以使用driver.find_elements_by_id('com.tencent.mm:id/xx')[n]来获取,使用send_keys('xx')实现信息的输入,通过click()实现点击操作。上面我们说了元素是通过find_element(s)_by_id('com.tencent.mm:id/xx')得到的,那么xx怎么确定呢?一起来看看吧。首先,我们点击Appium中放大镜的位置,如下图:点击之后,我们会进入如下界面:我们在图中所需功能下的代码中配置desired_caps信息,点击配置后启动会话按钮。你会发现Appium中的微信效果与mumu中的效果不一致,如下图:此时只要点击上图中红框圈出的刷新按钮即可,此时我们可以确定元素(也就是上面说的xx),例如:我们先确定微信中添加位置⊕的值,然后用鼠标点击⊕查看,如下图:我们再点击⊕,操作步骤为:首先在mumu模拟器中点击微信中的⊕,如下图:点击之后,点击Appium中的刷新按钮,如下图:从图中可以看出,列表中的每个选项都是com.tencent.mm:id/gam,此时在代码中我们只是使用driver.find_elements_by_id('com.tencent.mm:id/gam')[1]来获取它。通过上面的介绍,相信大家对Appium的使用有了基本的了解。发送消息我们模拟发送消息的基本流程是:打开微信->点击搜索放大镜->在搜索框中输入好友昵称->点击搜索到的好友->发送文字+表情,代码为实现方式如下:desired_caps={"platformName":"Android",#operatingsystem"deviceName":"emulator-5554",#deviceID"platformVersion":"6.0.1",#deviceversionnumber"appPackage":"com.tencent.mm",#app包名"appActivity":"com.tencent.mm.ui.LauncherUI",#app启动时的主Activity'noReset':True,#是否保留session信息避免重新启动-login'unicodeKeyboard':True,#使用unicodeKeyboard编码方式发送字符串'resetKeyboard':True#隐藏键盘}driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)time.sleep(10)print('点击微信搜索框')driver.find_element_by_id('com.tencent.mm:id/f8y').click()time.sleep(10)print('输入搜索信息在搜索中box')driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys('Python2')time.sleep(3)print('点击搜索到的好友')driver.find_element_by_id('com.tencent.mm:id/tm').click()time.sleep(3)#输入文本driver.find_element_by_id('com.tencent.mm:id/al_').send_keys('hello')time.sleep(3)#输入表达式driver.find_element_by_id('com.tencent.mm:id/anz').click()time.sleep(3)driver.find_element_by_id('com.tencent.mm:id/rv'.click()#点击发送按钮发送信息driver.find_element_by_id('com.tencent.mm:id/anv').click()#退出driver.quit()最后一件事,因为模拟器的响应可能会比较慢,如果程序执行出错,可以将中间等待时间time.sleep(x)设置大一些,在公众号Python小二201104后台获取软件和代码。
