APP自动化测试2--androd的基础知识

时间:2021-03-15 05:58:26

ADB工具

adb全称是Android Debug Bridge ,它是一个debug调试工具。它是一个标准的CS结构的工具,连接开发电脑和你的手机或虚拟器的桥梁。

adb部分用法

adb devices                 查看已经连接的安卓手机或虚拟器

abd install  XXX.apk   安装apk,需要指定apk的路径,前提需要有连接的安装设备

当电脑连接了多台安装手机时,需要指定安装到哪个设备:

adb -设备名称 install  xxx.apk

例子:

//查看电脑连接的安装设备
$adb devices
List of devices attached
DU2SSE1467010378 device1
DFE23FGR234332FD device2
//安装到device2
abd -DFE23FGR234332FD install wechat.apk
abd uninstall xxx.apk     这个是卸载应用
adb connect  + IP   连接到指定的设备(安卓手机或虚拟机)Usage: adb connect <host>[:<port>]

注意:   

1.要链接的IP ,必须和自己的PC的网络在同一个局域网内,adb 不能跨局域网链接设备
 2.如果通过usb链接Android设备,通过adb devices 可以看见设备列表,但是使用不了,可以参考下面的命令

adb tcpip 5555   //查看设备端口
adb connect 192.168.0.101:5555 //连接该台设备

uiautomatorviewer

简单说明

uiautomatorviewer是一个定位工具,用来扫描和分析安卓应用程序UI控件的工具,做UI自动化测试前就必须要找到元素位置,这个东西就是来帮助我们找元素或控件的位置的。在Windows和mac中都可以使用。

要使用这些工具,你必须安装Android开发工具以下版本:

  • Android SDK Tools:API 21 版本或者21以上版本;(在SDK Manager.exe中可以查看版本及下载)
  • Android SDK Platform:API 16 版本或者16以上版本.

uiautomatorviewer在安卓sdk的D:\android-sdk-windows\tools,tools目录下,双击就能打开。

uiautomatorviewer界面介绍

  1. 首先电脑连接手机,在comand界面输入:adb devices 确保手机连接电脑
  2. 打开需要定位的APP的页面
  3. 在D:\android-sdk-windows\tools下找到uiautomatorviewer.bat,双击就能打开

APP自动化测试2--androd的基础知识

1.切换页面获取快照

需要获取APP某个页面时,先在APP中切换到该页面,点击左上角的图标更新快照到uiautomatorviewer中。注意,在APP中没更新一个页面都需要点击这个按钮同步。

2.页面层级

页面右上角区域就是当前页面布局层级。

3.不可用区域

点击页面右上角黄色叹号!(Toggle NAF Nodes)会出现黄色模块,如图。这些控件是不能被uiautomatorviewer识别的,是无法获取这些控件的实例。通过uiautomator提供的API获取它们的属性、或者对这些元素进行点击等操作是做不到的,因为无法得到这些控件的实例。

4.属性详情区域

右下方是当前页面或定位到某个控件的属性详情。

主要属性:

index、text(name)、resource-id(id)、class、package、content-desc(name)

需要注意一个问题:

这个页面属性的text属性定位方式是针对name定位,但是在新版本appium中已经去掉了name定位。

APP自动化测试2--androd的基础知识

driver.find_element_by_name("Hybrid设计").click()
sleep(1)
driver.find_element_by_name("开始学习").click()


上面是通过真机操作,另外通过模拟器的需要注意:

1.在这里需要记住一个问题,国产的模拟器,所以在启动模拟器后需要adb connect 127.0.0.1:xxxx,但是在这个之前你还是需要将模拟器里面的开发者选项打开的,因为只有建立连接后才能够使用定位工具,不然会报错。

2.在模拟器中安装APP:

     adb install xxx.apk

安装应用到设备中去

   driver.install_app('path/to/my.apk')

package和Activity

查看启动参数:

#启动参数,字典
desired_caps = {}
desired_caps['platformName'] = "Android"
desired_caps['platformVersion'] = "23"
desired_caps['deviceName'] = "7N3HPX159H051514"
desired_caps['udid'] = "7N3HPX159H051514"
desired_caps['appPackage'] = 'cn.com.open.mooc' #app的package
desired_caps['appActivity'] = '.index.splash.MCSplashActivity' #APP的activity
#开启Unicode键盘
desired_caps['unicodeKeyboard'] = 'True'
desired_caps['resetKeyboard'] = 'True'
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_caps)

package是什么?

package中文意思是包,每个APP都有一个package,而且每个APP的package都是唯一的。在做自动化测试时,在启动参数中需要添加appPackage,appium服务器才会知道哪个APP进行自动化测试。
获取package方式:
1.在uiautomatorviewer中可以获取;

APP自动化测试2--androd的基础知识

Activity是什么?

Activity是Android中最基本的最常见的4大组件之一。activity是和用户进行交互的,APP中每个页面就是一个Activity。
在做自动化测试时,告诉appium对哪个APP做自动化测试后,还需要告诉appium操作APP的哪一个Activity,也就是操作哪个页面。所以需要在启动参数中传入这个app的Activity,传入一个其它APP的Activity是不行的。
在哪里可以查看APPActivity?

APP自动化测试2--androd的基础知识