appium+python自动化测试实践之使用uiautomatorviewer.bat+webdriver模块查找定位app界面控件(Android)
1.连接手机,在Android sdk安装目录下的tools里面找到uiautomatorviewer.bat,点击运行该.bat文件:
ui automator viewer打开后,界面显示如下,左侧显示的是当前连接的手机界截图,点击界面上的一个控件,比如完成按钮√,右侧可以看到该控件的id,chassname等信息。如截图红框中,查看到了完成√按钮的resource-id,结合webdriver封装好的查找元素的方法,操作,就可以模拟用户点击了。
1)假设已经有一个driver实例,通过bfind_element_by_id的方法查找完成按钮,并点击:
ele = self.driver.find_element_by_id("com.android.contacts:id/icon")
ele.click()
2)如果控件的resource-id为空了,如何定位元素呢?比如遇到以下情况,输入框Name栏,通过ui automator viewer查看,竟然没有id...可以通过界面上的文本名字来定位,用法也比较简单:
ele = self.driver.find_element_by_name("Name")
3)另外还有一种常用的方法定位元素,find_elements_by_class_name,比如手机号码phone输入栏,首先考虑id定位,结果发现木有id,然后考虑name定位,结果直接通过name定位时出错(界面有2个phone,一个全大写,另外一个只有首字母大写),继续考虑by_class_name方法定位,结果发现app的界面有4个输入框:name/phone/email/address,它们的class都是一样的:android.widget.EditText...此时考虑python的list了解决:
list= self.driver.find_elements_by_class_name("android.widget.EditText")
phone = list[1]
ui automator viewer截图:
2.小结:
实践了以上三种查找,定位元素的方法,发现基本可以满足控件查找的需求了,webdrive还提供了其他多种元素定位的方法,比如find_element_by_xpath,find_elements_by_partial_link_text等,看了下目前还没用到,后续继续learning~