Python+Appium自动化测试(15)-使用Android模拟器(详细)(一)

简介: 做APP的UI自动化测试时,我们往往会使用真机跑自动化测试脚本,因为这样才是最真实的使用场景。但前期调试脚本的话,可以先使用模拟器,这样相对更加方便。不推荐使用Android SDK里自带模拟器,太卡。这里介绍两款我正在用于做自动化测试的模拟器:Genymotion 与 夜神模拟器。

一,Genymotion


1,注册账号


使用Genymotion时需要登录账号,我们需要去Genymotion官网注册账号。

官网地址:https://www.genymotion.com/

官网首页点击【Sign In】

微信图片_20220424195751.png

进入登录页面后点击【Create an account】,进入注册页面,填写信息注册账号。

微信图片_20220424163422.png


2,下载Genymotion


官网下载地址:https://www.genymotion.com/download/

这里我选择下载第一个,即with VirtualBox,电脑已安装了VirtualBox的话则下载第二个。

微信图片_20220424163432.png


3,安装Genymotion


3.1,双击下载好的exe文件,选择好安装路径(或默认),然后一路点击next即可。

安装过程中会提示安装VirtualBox,同样的,选择好安装路径(或默认),一路点击确定即可。

安装完成后桌面会出现以下3个图标

微信图片_20220424163436.png

3.2,双击Genymotion打开,输入注册好的账号登录,点击NEXT按钮。

微信图片_20220424163439.png

3.3,选择Personal Use,点击NEXT。(当然有购买证书的话选择 I have a license也行)

微信图片_20220424163444.png

3.4,勾选协议,点击NEXT。

微信图片_20220424163447.png

然后就进入到了Genymotion首页

微信图片_20220424163451.png


4,创建虚拟设备


4.1,点击页面右上角“+”,进入选择设备页面。

微信图片_20220424163455.png

4.2,下拉滑动可查看选择不同的机型与系统版本,大家可根据需要自行选择下载。

注意:因为后面会安装的ARM转换工具Genymotion-ARM-Translation暂时只支持最高android 8.0,所以我这里选择Samsung Galaxy S8 系统为Android 8.0,点击NEXT,跳转至下一个页面。

微信图片_20220424163459.png

4.3,该页面下,我们可以给设备重新命名,选择分辨率、系统版本等配置,填写选择好后,点击右下角 "INSTALL" 按钮。我这里全部选择默认,点击安装。

微信图片_20220424163503.png

然后页面显示正在下载,下载需要点时间,耐心等待即可

微信图片_20220424163507.png

4.4,安装完成后,双击该设备即可启动,或如下图步骤点击也可启动。

微信图片_20220424163510.png

4.5,启动后界面如下。每次打开后要确保图中所指的wifi图标是连接状态,否则不能联网。

微信图片_20220424163513.png


5,安装app


5.1,将下载好的apk文件拖动到模拟器界面,即进行安装。

5.2,首次安装APP时通常会出现以下提示:Genymotion device cannot run ARM instructions,如下图

微信图片_20220424163518.png

原因:Genymotion模拟器基于x86,不能运行基于ARM架构的APP。

解决方法:安装3.2中提到的ARM转换工具Genymotion-ARM-Translation。

支持android 8 的Genymotion-ARM-Translation下载地址如下

链接:https://pan.baidu.com/s/1_q31jqIbWubHzGU__IKnmA

提取码:s5gn

下载完成后,将该压缩文件拖到模拟器即可安装,点击OK,安装完成后重启模拟器即可。

微信图片_20220424163521.png

5.3,继续安装app,以安装今日头条APP为例。

在今日头条官网下载今日头条app,拖动至模拟器,等待安装完成即可。安装完成后,打开如下:

微信图片_20220424163524.png

5.3,查看模拟器设备id

在模拟器打开的情况,cmd输入命令:adb devices,可以查看该模拟器的设备id,如下:

微信图片_20220424163528.png


6,python+appium启动Genymotion模拟器中的APP


6.1,获取模拟器的设备信息,以及被测app的信息(以今日头条APP为例)。获取方法跟博客appium连接真机启动app中第二部分的方法一样。

6.2,根据获取到的参数信息,编写示例脚本如下:

# -*- coding:utf-8 -*-
# @author: 给你一页白纸
from appium import webdriver
desired_caps = {
    "platformName": "Android",
    "platformVersion": "8.0",
    "deviceName": "Samsung Galaxy s8",
    "appPackage": "com.ss.android.article.news",
    "appActivity": ".activity.MainActivity",
    "unicodeKeyboard": True,
    "resetKeyboard": True,
    "noReset": True,
}
# 启动app
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

启动appium服务,再运行脚本,可以看到被测app被启动。

注意:点击APP打开时可能会出现:xxx keeps stopping,导致打不开APP,如下图。

微信图片_20220424163532.png

这种情况暂时没有找到解决方法。在公司测试自己的APP时,为了避免出现这种情况,不要在模拟器里安装从应用市场下载来的APP,而是安装自己在本地打的release包,或者直接让开发给你打包一个用于测试的app,这样是可以打开的。

相关文章
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
776 1
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
844 18
|
IDE 测试技术 API
python调试与测试
python调试与测试
|
测试技术 Python
Python测试报告生成:整合错误截图,重复用例执行策略,调整测试顺序及多断言机制。
如何组织这一切呢?你可以写一本名为“Python测试之道”的动作指南手册,或者创建一个包含测试策略、测试顺序、多断言机制的脚本库。只要你的测试剧本编写得足够独到,你的框架就会像一位执行任务的超级英雄,将任何潜伏于代码深处的错误无情地揪出来展现在光天化日之下。这些整理好的测试结果,不仅有利于团队协作,更像冒险故事中的精彩篇章,带给读者无尽的探索乐趣和深刻的思考。
397 10
|
安全 测试技术 API
Python 单元测试详解
单元测试是Python开发中不可或缺的环节,能确保代码按预期运行、发现Bug、提升代码质量并支持安全重构。本文从基础概念讲起,逐步介绍Python单元测试的实践方法,涵盖unittest框架、pytest框架、断言使用、Mock技巧及测试覆盖率分析,助你全面掌握单元测试技能。
712 0
|
人工智能 Java 测试技术
Java or Python?测试开发工程师如何选择合适的编程语言?
测试工程师如何选择编程语言?Java 还是 Python?多位资深专家分享建议:Python 入门简单、开发效率高,适合新手及自动化测试;Java 生态成熟,适合大型项目和平台开发。建议结合公司技术栈、个人基础及发展方向选择。长远来看,两者兼通更佳,同时关注 Go 等新兴语言。快速学习与实践才是关键。
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
2448 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
测试技术 Python
Python接口自动化测试中Mock服务的实施。
总结一下,Mock服务在接口自动化测试中的应用,可以让我们拥有更高的灵活度。而Python的 `unittest.mock`库为我们提供强大的支持。只要我们正确使用Mock服务,那么在任何情况下,无论是接口是否可用,都可以进行准确有效的测试。这样,就大大提高了自动化测试的稳定性和可靠性。
579 0
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
1528 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。

推荐镜像

更多