本教程是基于本人学习android NativeApp自动化测试过程积累总结的,学习过程用到的工具是appium+python+UIAutomator+android手机+待测APP!
一、准备定位工具
首先我们需要先下载android studio,然后安装android sdk,在系统变量里添加export ANDROID_HOME="/Users/xxx/Library/Android/sdk"。我们需要的工具就是uiautomator,它在android_sdk/tools/uiautomatorviewer里。
二、启动定位工具
1、在终端上用命令进入tools目录,我的tools目录在/Users/wuyanjiao/Library/Android/sdk/tools,然后直接执行命令./uiautomatorviewer,当看到如下页面就表示工具启动成功。
定位工具
2、手机连接上电脑
用数据线把手机和电脑连接上,并把手机设置成开发者模式,USB调试开启。然后在终端上执行adb devices,可以查看是否连接成功。连接成功后,我们在手机上打开待测APP,在这里我以自带计算器APP为例。打开后,点击图片中左上角第二个按钮,就可以看到app的页面元素了。想要找哪个元素,鼠标移动到上面,就可以看到详细的元素了。
image.png
三、基本定位元素方法
1、find_element_by_id()
当遇到resource-id有唯一值。以定位计算器上8这个元素并点击为例:
number8 = self.driver.find_element_by_id("digit8")
number8.click()
2、find_elements_by_id()
当遇到的resource-id有多个相同的值,可以使用该方法。以元素在列表中的位置来定位,以定位计算器上的8并点击为例:
elements = self.driver.find_elements_by_id("digit8")
elements[0].click()
3、find_element_by_accessibility()
当某个元素的content-desc有值的时候,可以使用该方法。以定位计算器上的÷号为例:
element = self.driver.find_element_by_accessibility_id(u"除")
element.click()
4、find_elements_by_accessibility()
当页面的content-desc值有多个相同的时候,可以使用该方法。以定位计算器上的÷号为例:
elements = self.driver.find_elements_by_accessibility_id(u"除")
elements[0].click()
5、find_element_by_class_name()
当页面的class有值的时候,可以使用该方法,以向计算器上的输入框输入数字为例:
input=self.driver.find_element_by_class_name("android.widget.EditText")
input.send_keys("10")
6、find_elements_by_class_name()
当页面的class有多个值的时候,可以使用该方法,以向计算器上的输入框输入数字为例:
input=self.driver.find_elements_by_class_name("android.widget.EditText")
input[0].send_keys("10")
7、press_keycode()
该方法是发送键值,以下是部分键值,例如手机上的按键“0”它的键值是7,手机上的按键“1”,它的键值是8。若要了解更详细的android键值表,可以访问此链接:http://www.cnblogs.com/larack/p/4223465.html
image.png
以下是计算器计算10除以5的具体代码:
#输入10
self.driver.press_keycode(8)
self.driver.press_keycode(7)
#点击除号
element = self.driver.find_element_by_accessibility_id(u"除")
element.click()
#输入5
self.driver.press_keycode(12)
#点击=号
equal = self.driver.find_element_by_id("equal")
equal.click()