• 〖Python APP 自动化测试实战篇④〗- 通过 appium 驱动夜神模拟器完成第一个自动化脚本 - 查看通讯录


    万叶集
    🎉 隐约雷鸣,阴霾天空。 🎉
    🎉 但盼风雨来,能留你在此。 🎉


    前言
    ✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS - 全栈 赋能的博主 ✌
    🏆 CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主 🏆
    📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
    💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬
    🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦


    专栏系列(点击解锁)学习路线指引知识定位
    🔥Python全栈白皮书🔥 零基础入门篇 以浅显易懂的方式轻松入门,让你彻底爱上Python的魅力。
    语法进阶篇 主要围绕多线程编程、正则表达式学习、含贴近实战的项目练习 。
    自动化办公篇 实现日常办公软件的自动化操作,节省时间、提高办公效率。
    自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。
    数据库开发实战篇 更新中
    爬虫入门与实战 更新中
    数据分析篇 更新中
    前端入门+flask 全栈篇 更新中
    django+vue全栈篇 更新中
    拓展-人工智能入门 更新中
    网络安全之路 踩坑篇 记录学习及演练过程中遇到的坑,便于后来居上者
    网安知识扫盲篇 三天打鱼,不深入了解原理,只会让你成为脚本小子。
    vulhub靶场漏洞复现 让漏洞复现变得简单,让安全研究者更加专注于漏洞原理本身。
    shell编程篇 不涉及linux基础,最终案例会偏向于安全加固方向。 [待完结]
    WEB漏洞攻防篇 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
    渗透工具使用集锦 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
    点点点工程师 测试神器 - Charles 软件测试数据包抓包分析神器
    测试神器 - Fiddler 一文学会 fiddle ,学不会倒立吃翔,稀得!
    测试神器 - Jmeter 不仅是性能测试神器,更可用于搭建轻量级接口自动化测试框架。
    RobotFrameWork Python实现的自动化测试利器,该篇章仅介绍UI自动化部分。
    Java实现UI自动化 文档写于2016年,Java实现的UI自动化,仍有借鉴意义。
    MonkeyRunner 该工具目前的应用场景已不多,文档已删,为了排版好看才留着。


    接下来我们通过一个简单的例子一起来看一看如何通过 appium 这养一个工具、框架实现操作手机app,使用的例子也非常的简单,就是访问查看通讯录。

    后续我们将使用安卓模拟器进行演示的交互,模拟器为 “夜神模拟器”。其实这是一款游戏模拟器,但是它的兼容性与使用起来都非常的方便,所以我们的APP自动化测试领域经常采用它。(除了夜神这款模拟器之外,比较知名的还有逍遥、雷电、MuMu模拟器等)

    夜神模拟器的安装直接访问官网 www.yeshen.com 下载安装即可。

    🐳 使用模拟器的前置操作

    在我们配置好 appium 的环境、安装好 “夜神模拟器” 之后,还需要进行一步操作。这就是将 “夜神模拟器” 自身的 adb 替换成 我们安装的 Android SDK 的 adb 。

    这是因为 模拟器的 adb 的版本比 Android SDK 的 adb 要低,这种情况下就会导致服务没有办法启动,所以需要替换掉。(如果是 windows 系统的话,还需要将复制过来的 adb.exe 改成 nox_adb.exe ,具体视实际情况而定。)

    如此就能够保证两个 adb 的版本是完全一致的。

    夜神模拟器的路径为 /Applications/NoxAppPlayer.app/Contents/MacOS



    然后利用进入夜神模拟器的路径,利用 adb 链接当前的夜神模拟器。

    • 执行命令:adb connect 127.0.0.1:62001 ;夜神模拟器的默认端口是 62001;当出现 connected to 127.0.0.1:62001 则表示已连接到设备。
    • 执行命令:adb devices ;如果出现 127.0.0.1:62001 device 则代表当前的 adb 链接已经大功告成。


    🐳 编写脚本 - 自动查看通讯录

    编写脚本之前,确保我们已经安装了 appium-python-client 模块,在我们搭建 APPIUM 环境的时候其实已经安装了这个模块。

    # coding=utf-8
    
    
    from time import sleep
    from appium import webdriver    # appium 的特色就是将安卓、IOS的底层封装成了 webdriver 类型的语句
    # from appium.webdriver.common import appiumby
    
    '''
        区别于WEB自动化,APP自动化需要有一个设备的概念;
        所谓的设备概念,就是启动的参数
    '''
    
    # 启动参数
    desired_caps = {}       # 定义 desired_caps 变量,用以赋值很多的启动信息
    desired_caps['platformName'] = 'Android'    # 设备名称、系统为 "Android"
    desired_caps['platformVersion'] = '7.1.2'   # 这里是在夜神模拟器的设置中心查看安卓版本是 "7.1.2" ,后续会告诉大家如何切换版本
    desired_caps['deviceName'] = '127.0.0.1::62001'     # 这里如果是真机的话填写的是设备名称;因为我们用的是模拟器,填写的是IP端口号
    desired_caps['appPackage'] = 'com.android.contacts'     # APP 的包名;这里我们使用的是通讯录
    desired_caps['appActivity'] = '.activities.PeopleActivity'    # 启动的界面的名字(也或者叫启动名,默认是 "." 开头的)
    desired_caps['automationName']='UiAutomator1'
    
    # 声明手机驱动
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)  # 注册到这个节点上,传入 "desired_caps"。这个节点就是 "appium" 开启的端口节点
    
    # 定位到要操作的联系人
    driver.find_element_by_id('com.android.contacts:id/cliv_name_textview').click()     # 这里问了演示效果,先写上。后续会告诉大家如何定位这个id
    sleep(3)
    driver.quit()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    运行结果如下:



    关于这个脚本中的详细的 appium Capability 属性,会在下一章节进行详细的讲解,这一章节主要是给大家演示一下 appium 的自动化的效果。



  • 相关阅读:
    ChatGPT 提示词技巧一本速通
    【宋红康 MySQL数据库 】【高级篇】【19】多版本并发控制MVCC
    HttpClient使用不当,服务挂了,是时候系统学习一下了
    Django基本使用
    低代码平台选型时,要注意哪些?
    工业设计公司的办公环境有哪些特点?
    SpringBoot+Vue 整合websocket实现简单聊天窗口
    ASP.Net Core创建MVC项目上传多个文件(流方式)
    全网最全JAVA面试八股文,终于整理完了
    基于原子轨道搜索算法优化概率神经网络PNN的分类预测 - 附代码
  • 原文地址:https://blog.csdn.net/weixin_42250835/article/details/125465393