【项目】安卓测试记录

确定包名

在安卓模拟器上打开待测应用
在shell窗口输入
adb shell dumpsys window | grep mCurrentFocus
(windows系统将grep替换成findstr)

会得到待测应用的appPackage和appActivity
比如得到输出mCurrentFocus=Window{9a14051 u0 com.vmware.view.client.android/com.vmware.view.client.android.BrokerAddressPrompt}

那么appPackage就是com.vmware.view.client.android,appActivity就是com.vmware.view.client.android.BrokerAddressPrompt或者直接写.BrokerAddressPrompt

注意:可能应用程序无法通过脚本自动启动,看下是不是你的appActivity找错了,因为有时启动的activity和进入应用以后停留界面的activity不同,我们需要找到启动的第一activity。

建立session

连接应用程序的代码如下:

# -*- coding: utf-8 -*- ​​​​​​​​​​
from appium import webdriver
from selenium.webdriver.common.by import By
from appium.webdriver.extensions.android.nativekey import AndroidKey
from time import sleep

desired_caps = {
    'platformName': 'Android',
    'platformVersion': '12',
    'deviceName': 'emulator-5554',
    'appPackage': 'com.vmware.view.client.android',
    'appActivity': '.VMwareViewPcoipActivity',
    'noReset': True,
    'newCommandTimeout': 6000,
}

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) #4622

配置参数说明:
noReset设为True,则每次测试不会重置app
deviceName可以随便起

测试过程及原理

Appium Server填好服务器的host、port和pathhttp://127.0.0.1:4723/wd/hub
配置里写好Android SDK和JAVAHOME的路径,否则会报错
使用Android自带的UIAutomator,或者下载Appium Inspector,因为我的m1芯片用不了前者,所以下载了后者。
点击UI界面的各个控件,会在右侧显示控件信息,一般是根据id来表示控件。
然后就通过driver确定元素。

修改安卓模拟器hosts文件

参考:How to edit /etc/hosts file in Android Studio emulator running in nougat?
步骤:
使用安卓自带的emulator启动模拟器,注意要加上-writable-system参数(否则后面adb remount会failed)

/Users/yueh2/Library/Android/sdk/emulator/emulator -avd Pixel_2_API_31 -writable-system

adb root
adb remount

使用自己修改好的hosts文件替换安卓里面的hosts文件
adb push /Users/yueh2/Desktop/hosts /system/etc/hosts

验证修改结果:
进入安卓命令行
adb shell
查看安卓hosts文件
cat /system/etc/hosts

自己写的hosts文件内容

127.0.0.1       localhost
::1             ip6-localhost
10.0.2.2	test-server.local

主要是添加了最后一行
10.0.2.2是安卓模拟器连接PC的 127.0.0.1地址的方式,具体参考:why do we use 10.0.2.2 to connect to local web server instead of using computer ip address in android client

启动本地模拟服务器

我们本地有一个自己写的专用来测试的服务器(因为client要连到远程桌面,但为了测试我们就用一个假的),要用它测试的话,就要启动它,以如下命令启动:

python server/main.py -d -s 0.0.0.0 -p 4443 -m launchitems auth_windowspwd

然后在client里就连接到test-server.local:4443这个域名(必须用这个域名,可在hosts文件里改,因为测试用例里都是用这个名字)
username:user
password:ca$hc0w

运行
nosetests sampleTests.py

授予权限

  • 一开始尝试了这个命令:adb install -g xxx.apk ,安装时添上-g的参数,就可以赋予apk所有权限。不生效!
  • 然后尝试这个命令:(adb shell) pm grant com.vmware.view.client.android android.permission.READ_PHONE_STATE
    com.vmware.view.client.android是包名,
    android.permission.READ_PHONE_STATE是权限名。
    这个当下设置能成功,但应用reset之后就不生效了!
  • 最后,在desired_caps添加autoGrantPermissions': True,成功!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值