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,这样是可以打开的。

相关文章
|
9天前
|
数据采集 存储 API
在信息时代,Python爬虫用于自动化网络数据采集,提高效率。
【7月更文挑战第5天】在信息时代,Python爬虫用于自动化网络数据采集,提高效率。基本概念包括发送HTTP请求、解析HTML、存储数据及异常处理。常用库有requests(发送请求)和BeautifulSoup(解析HTML)。基本流程:导入库,发送GET请求,解析网页提取数据,存储结果,并处理异常。应用案例涉及抓取新闻、商品信息等。
29 2
|
4天前
|
运维 数据安全/隐私保护 Python
Python基于telnetlib模块实现交换机全面巡检自动化运维项目
Python基于telnetlib模块实现交换机全面巡检自动化运维项目
37 14
|
4天前
|
数据采集 存储 监控
python 10个自动化脚本
【7月更文挑战第10天】
15 3
|
7天前
|
数据采集 数据处理 数据安全/隐私保护
Python的自动化脚本可以完成哪些任务?
【7月更文挑战第7天】Python的自动化脚本可以完成哪些任务?
15 3
|
12天前
|
测试技术 API 持续交付
【Python自动化测试】文章探讨了Python在测试领域的关键作用,分为三部分
【7月更文挑战第2天】【Python自动化测试】文章探讨了Python在测试领域的关键作用,分为三部分:1) 自动化测试的重要性与Python的易用性、库支持、跨平台和社区优势;2) Unittest作为标准测试框架的基础用法,及Pytest的灵活性与强大功能;3) 实践中包括Selenium的Web UI测试、Requests的API测试,强调测试隔离、持续集成等最佳实践。Python助力高效稳定的软件测试。
24 2
|
18天前
|
XML 测试技术 数据格式
软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(下)
软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(下)
29 3
|
11天前
|
Python
python项目实战——人生重开模拟器
python项目实战——人生重开模拟器
|
16天前
|
测试技术
Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)
Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)
|
16天前
|
测试技术 Python
python接口自动化测试 - unittest框架suite、runner详细使用
python接口自动化测试 - unittest框架suite、runner详细使用
|
17天前
|
程序员 API 计算机视觉
技术经验解读:【python自动化】02.pywin32库自动操作键鼠(保姆级代码注释)
技术经验解读:【python自动化】02.pywin32库自动操作键鼠(保姆级代码注释)
15 0