本项目主要练习使用Appium完成对一个Android上的APP进行测试。
01
项目目的
1. 掌握Appium测试环境的安装和配置。
2. 熟练应用常见的ADB命令功能及用法。
3. 熟练使用Android SDK及Android模拟器。
02
项目要求
1. 安装appium环境。
2. 编写代码在应用上进行操作,也可对Android原生应用进行操作,例如点击button,输入字符等。
3. 添加断言。
4. 退出driver driver.quit。
5. 运行程序看是否执行成功。
6. 将上述关键步骤截图并加以说明。
03
项目过程
1
●
安装 appium 桌面版客户端
打开github地址:
https://github.com/appium/appium-desktop/releases
可以看到最新版本的appium有 WIndows版本、Linux版本和Mac版本,可以点击Appium-windows-1.21.0.exe进行下载安装,如图1所示。
图1 appium下载
2
●
安装 Appium-Python-Client
在终端中输入pip install Appium-Python-Client,安装Appium-Python-Client(版本>=0.29),如图2所示。
图2 Appium-Python-Client安装
3
●
安装 selenium
在终端中输入pip install selenium,安装selenium(版本>=3.141.0)。
4
●
安装jdk
下载操作系统对应版本jdk,安装jdk1.8任意版本并配置环境变量。
5
●
安装Android SDK
下载Android SDK,并配置环境变量。
ANDROID_HOME—sdk的存放目录 如d:/sdk
在用户变量PATH后面加上变量值;%ANDROID_HOME%\platform-tools;点击确认即可
配置完成后在cmd命令行输入adb,若不报错则说明配置正确。
6
●
安装 夜神模拟器
打开地址:https://www.yeshen.com/
下载并安装nox_setup_v7.0.1.1_full.exe。
7
●
替换
将Android SDK中 platform-tools路径下的adb.exe 复制到模拟器安装路径下的bin目录替换原有的adb.exe,删除原有的nox_adb.exe,将新的adb.exe复制一份改名nox_adb.exe。
8
●
打开模拟器
启动appium 桌面版客户端服务。
9
●
输入命令
在cmd进入夜神模拟器安装路径下的bin,输入命令:nox_adb.exe connect 127.0.0.1:62001 . 出现successfully,connected to 127.0.0.1:62001说明连接成功。
10
●
下载待测试应用的apk包
访问
http://www.appchina.com/app/com.ibox.calculators
并从
http://103.231.68.98/McDonald/e/6816204/0/0/0/1622518914826/package_1327.1622518914826
处下载待测试的计算器应用的apk包(将其命名为testcalc.apk)。
11
●
获取appPackage和appActivity
在cmd进入Android SDK中build-tools\29.0.3路径下(29.0.3代表版本号,在不同的环境下可能不同) 输入命令aapt.exe dump badging testcalc.apk (此处的testcalc.apk代表该文件的完整路径)
观察输出的
package: name='com.ibox.calculators'
和
launchable-activity: name='com.ibox.calculators.SplashActivity',
并修改demo.py中的
desired_caps['appPackage']='com.ibox.calculators'
desired_caps['appActivity']='com.ibox.calculators.SplashActivity'。
12
●
定位app中的元素
点击Appium界面上的放大镜按钮,如图3所示。
图3 启动Appium工具
配置Appium工具的参数,如图4所示。
图4 Appium参数配置
点击右下角的Start Session按钮,待应用启动完成后,点击刷新(Refresh Source & Screenshot),如图5所示。
图5 Appium刷新
点击左侧应用区域内的元素即可在右侧查看其所对应的id,如图6中显示的计算器界面上的1号数字按钮所对应的id为 com.ibox.calculators:id/digit1。
图6 获取元素id
获取元素id后,可以在demo.py中调用
driver.find_element_by_id
来对元素进行操作,若某元素不存在id,则可以用上述方法获取其xpath并调用
driver.find_element_by_xpath。
13
●
运行demo.py(以下代码)
fromappium importwebdriver
importtime
importunittest
desired_caps = {}
desired_caps[ 'platformName'] = 'Android'
desired_caps[ 'platformVersion'] = '7.1.2'
desired_caps[ 'deviceName'] = '127.0.0.1:62001'
desired_caps[ 'appPackage'] = 'com.ibox.calculators'
desired_caps[ 'appActivity'] = 'com.ibox.calculators.SplashActivity'
desired_caps[ 'unicodeKeyboard'] = True
desired_caps[ 'resetKeyboard'] = True
driver = webdriver.Remote( 'http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep( 10)
driver.find_element_by_id( "com.ibox.calculators:id/digit1").click
driver.find_element_by_id( "com.ibox.calculators:id/plus").click
driver.find_element_by_id( "com.ibox.calculators:id/digit2").click
driver.find_element_by_id( "com.ibox.calculators:id/equal").click
element = driver.find_element_by_xpath( "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.RelativeLayout/android.widget.TextView[2]")
print(element.text)
unittest.TestCase.assertEqual(element.text, "3")
time.sleep( 3)
driver.quit
目标应用成功启动,模拟点击‘1’ ‘+’ ‘2’ ‘=’ ,并断言其结果为 ‘3’ ,最后退出,终端中无任何错误信息,如图7所示。
图7 运行结果
04
项目总结
通过本项目,我们基本了解了使用Appium对Android上的APP进行测试的基本思路,熟悉了Appium测试工具的基本操作。
05
视频讲解
06
源代码下载
关注微信公众号,后台回复关键词 “demo” 即可获得完整源代码。
07
参考书籍
《 软件测试技术》
ISBN:9787302573722
作者:吕云翔 况金荣 朱涛 杨颖 张禄
定价:59.80元
08
精彩推荐
软件测试实训|界面自动化测试工具Selenium IDE 录制回放
鲲鹏架构入门与实战︱鲲鹏应用迁移(附代码)
《机器学习》实验指导书(附实验参考+代码)
Python爬虫综合实战 │ 创建云起书院爬虫(附代码)
Python爬虫实战 │ Email提醒(附代码)
Python深度学习 │一文掌握卷积神经网络
Python边做边学︱商品列表信息爬取(附代码)
P ython爬虫实战│状态521网页的爬取
Python爬虫实战│爬取天气数据的实例详解(附源码)
Python实训:用贪婪算法分析业务员路径问题|附源码