python+appium自动化测试-05APP元素定位
和Web端一样,APP端也是可以通过元素进行定位的。有过Web端的七种元素定位的实战经验,APP端的元素定位也容易理解。Web端元素定位点击查看。
APP端的元素定位,可以用uiautomator抓取页面元素。下面介绍一下APP的几种元素定位方式:
1、id定位
APP里面的元素resource-id相当于Web端元素id。
find_element_by_id(‘android:id/button2’)
2、name定位
APP里面的元素text相当于Web端元素name。
find_element_by_name(‘请输入用户名’)
3、class定位
APP里面的元素class相当于Web端元素class。
find_element_by_class_name(‘android.widget.EditText’)
4、相对定位
相对定位是先找到该元素有对应属性的父元素节点,然后基于父元素进行元素定位。
例:先通过resource-id='com.tal.kaoyan:id/activity_register_parentlayout’定位到ImageView的父元素LinearLayout,然后再通过resource-id=‘com.tal.kaoyan:id/activity_register_userheader’定位到ImageView。
5、Xpath定位
APP的Xpath定位方式和Web端的一毛一样。
find_element_by_xpath(’//android.widget.EditText[@text=“请输入用户名”]’)
6、list定位
List定位首先是使用find_elements_by_XX获取一组相同的class属性的元素,然后使用数组下标来区分标记不同元素进行相关操作。
images=driver.find_elements_by_id(‘com.tal.kaoyan:id/item_image’)
#选择第10张图作为上传对象
images[9].click()
7、UIAutomator元素定位
UIAutomator元素定位是 Android 系统原生支持的定位方式,虽然与 xpath 类似,但比它更加好用,且支持元素全部属性定位。定位原理是通过android自带的android uiautomator的类库去查找元素。 Appium元素定位方法其实也是基于Uiautomator来进行封装的。类似于Web端的CSS定位。
7.1、id定位
id定位是根据元素的resource-id属性来进行定位,使用 UiSelector().resourceId()方法即可。
find_element_by_android_uiautomator(‘new UiSelector().resourceId(“com.tal.kaoyan:id/login_password_edittext”)’)
7.2、text定位
text定位就是根据元素的text属性值来进行定位,new UiSelector()
find_element_by_android_uiautomator(‘new UiSelector().text(“请输入用户名”)’)
7.3、text定位class name定位
find_element_by_android_uiautomator(‘new UiSelector().className(“android.widget.EditText”)’)