重点关注第五步实战,这个地方只要可以成功启动就可以,目前不用过多关注具体细节;
aapt部分可以帮助获取到包的信息,最后有使用方法
还有个简单的方法可以获取到'appPackage'和'appActivity',adb连接上设备后打开应用,使用命令:adb shell dumpsys activity top|findstr ACTIVITY(下图)
top代表获取最顶层页面,“/”前面是'appPackage',后面是'appActivity',注意前面的“."不能省略
def setUp(self):
desired_caps={}
#在三个配的是手机
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '8.1.0'#这里需要改成对应设备版本
desired_caps['deviceName'] = 'Android Emulator'
#下面俩配的是app的信息,aapt可以查,下面有获取方式
desired_caps['appPackage'] ='com.guokr.mentor'
desired_caps['appActivity'] = '.activity.MainActivity'
#下面俩配的是键盘,不用键盘可以不配,用完需要手动恢复下手机键盘,appium不会自动恢复
desired_caps['unicodeKeyboard']='true'#使用Unicode键盘
desired_caps['resetKeyboard']='true'#重置当前输入法
# APP是否重新设置,没有这个每次都会重新设置,一定要有
desired["noReset"] = "true"
#下面是远程连接设备
self.driver=webdriver.Remote("http://localhost:4723/wd/hub",desired_caps)
desired Capabilities
参考:appium-DesiredCapability详解与实战 - 会跑的熊 - 博客园
Desired Capabilities 是由 keys 和 values 组成的 JSON 对象。
DesiredCapability对启动app至关重要,是启动app前的准备工作。如果配置错误,app不会成功启动。
DesiredCapability有appium公共健值对、Android专有和IOS专有三部分。
appium服务关键字和android专有关键字来源于github
一、appium关键字
appium关键字是appium的一些公共关键字,主要是针对测试平台的设置以及启动前。比如选择ios还是android,测试前要不要安装app等。
二、Android专有关键字
android专有关键字是android测试时可以选择配置的一些键值对。所有配置只针对android手机有效。
下表中需要一定的android知识,avd是android virtual device。
下表几个与网络和浏览器测试,混合app测试有关。
下表中操作与手机设置有关
三、android app测试重要关键字
重要关键字的填写在进行测试时可以更准确的定位测试环境,使测试结果更加精准。
四、iOS特有
五、源码键值对实战
键值对就是一个字典,key值写上面列表中的内容,值写对应的信息。变量名caps可以自己取,不用一定写他。执行下列代码可以启动testapp。
#! /usr/bin/env python
#coding=utf-8
from appium import webdriver
caps = {
'platformName':'Android',
'platformVersion':'4.2',
'deviceName':'Android Emulator',
'unicodeKeyboard':True,
'resetKeyboard':True,
'app':'D:/Appium/jishiben.apk',
'appPackage':'com.smartisan.notes',
'appActivity':'com.smartisan.notes.NewNotesActivity'
''
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',caps)
或者写成:
desired={}
desired['platformName'] = 'Android'
# 改成自己的安卓设备版本号
desired['platformVersion'] = '8.1.0'
desired['deviceName'] = 'Android Emulator'
desired['appPackage'] ='com.guokr.mentor'
desired['appActivity'] = '.activity.MainActivity'
desired["noReset"]="true"
self.driver=webdriver.Remote("http://localhost:4723/wd/hub",desired)
与key相关的几个是打包apk时需要添加的信息。这里添加是为了给apk重签名。重签名后的apk更方便测试
aapt的使用
aapt: Android Asset Packaging Tool 就是android的一个资源打包工具。
路径:在sdk的build-tools下,所以一般配置好sdk就可以使用该工具。或者单独下载aapt这个工具,在环境变量path中添加aapt的路径。
cmd中输入‘aapt v’:查看aapt版本号,确认aapt是否配置好。
主要应用:
aapt l :简单的罗列压缩文件中每一项的内容
aapt l -v XXX.apk(apk路径):列表方式详细标识出压缩文件中的每一项和很多参数
Length 原始文件参数
Date 日期
Time 时间
Name 名称
Method压缩方法,Deflate及Stored两种,即该Zip目录采用的算法是压缩模式还是存储模式
Ratio 压缩率
Size 压缩省掉的大小
CRC-32 循环冗余校验 这个计算是特定的算法的
offset:zipfile中偏移量的意思
aapt l -a:详细输出压缩文件中所有目录的内容
aapt dump strings :打印apk中所有string资源表
(重点)aapt dump badging aak路径.apk:查看apk中的配置信息
package:name ='应用包的名称'
Launchable-activity:name ='入口页面'