找回密码
 会员注册
查看: 37|回复: 0

Python+Appium自动化操作微信入门看这一篇就够了

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
65016
发表于 2024-9-4 13:06:48 | 显示全部楼层 |阅读模式
Appium 是一个开源的自动化测试工具,支持Android、iOS平台上的原生应用,支持Java、Python、PHP等多种语言。Appium封装了Selenium,能够为用户提供所有常见的JSON格式的Selenium命令以及额外的移动设备相关的控制命令,比如:多点触控手势、屏幕朝向等。环境本文主要环境如下:Win7JDK1.8AppiumPython3.7android-sdkmumu模拟器JDK下载地址: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-sdk-windows在Path变量值的末尾添加;%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安装完成启动后,点击编辑配置,配置JDK和android-sdk,如图所示:mumu下载地址:http://www.51xiazai.cn/soft/584481.htm,也可在文末直接获取mumu模拟器下载完后,除了根据自己需要更改一下安装路径,其他选项默认即可安装,装完后打开点击应用中心,搜一下微信,搜到之后安装一下,微信安装完成后再用自己的微信号登录一下。因为我们是通过安卓的adb连接虚拟机的,因此需要在控制台执行adbconnect127.0.0.1:7555命令,让adb连接上虚拟机。执行了上面连接模拟器的命令后,我们可以在cmd控制台输入adbdevices查看当前连接的虚拟机。使用首先启动Appium和mumu,因为之前我们已经配置了Appium,此时我们直接点击Appium的启动服务器按钮即可,如下图所示:启动之后如图所示:现在我们可以先通过Python来启动一下微信,代码实现如下:desired_caps={"platformName":"Android",#操作系统"deviceName":"emulator-5554",#设备ID"platformVersion":"6.0.1",#设备版本号"appPackage":"com.tencent.mm",#app包名"appActivity":"com.tencent.mm.ui.LauncherUI",#app启动时主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实现添加好友的操作,基本过程为:打开微信->点击⊕->选择添加朋友->在搜索框输入微信号->点击搜索->点击添加到通讯录,功能的代码实现如下:desired_caps={"platformName":"Android",#操作系统"deviceName":"emulator-5554",#设备ID"platformVersion":"6.0.1",#设备版本号"appPackage":"com.tencent.mm",#app包名"appActivity":"com.tencent.mm.ui.LauncherUI",#app启动时主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",#操作系统"deviceName":"emulator-5554",#设备ID"platformVersion":"6.0.1",#设备版本号"appPackage":"com.tencent.mm",#app包名"appActivity":"com.tencent.mm.ui.LauncherUI",#app启动时主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/f8y').click()time.sleep(10)print('在搜索框输入搜索信息')driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys('Python小二')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)设置大一些。 总结:感谢每一个认真阅读我文章的人!!!作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。软件测试面试文档我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。      视频文档获取方式:这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-29 12:59 , Processed in 0.660038 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表