今天给大家分享App-UI自动化测试中常用的元素定位方法:
一、通过ID定位,对应【resource-id】属性
示例:
self.driver.find_element(AppiumBy.ID, '')
二、通过Name定位,对应【text】属性
示例:
self.driver.find_element(AppiumBy.NAME, '')
三、通过ClassName定位,对应【class】属性
示例:
self.driver.find_element(AppiumBy.CLASS_NAME, '')
不推荐使用,因为页面很容易出现多个元素class相同的情况
四、通过 AccessibilityId定位,对应 【content-desc 】属性
self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, '')
五、通过Xpath定位
1、元素的 text 唯一
self.driver.find_element(AppiumBy.XPATH, "//*[@text='xxx']")
2、元素的 id 唯一
self.driver.find_element(AppiumBy.XPATH, "//*[@resource-id='xxx']")
3、元素的 class 唯一
self.driver.find_element(AppiumBy.XPATH, "//*[@class='xxx']")
4、元素id不唯一,text唯一
self.driver.find_element(AppiumBy.XPATH, "//*[@resource-id='xxx'][@text='xx' ] ")
5、contains模糊定位
self.driver.find_element(AppiumBy.XPATH, "//*[contains(@text,'搜索')]") ---精准匹配
self.driver.find_element(AppiumBy.XPATH, "//*[contains(@text,'搜')]") ---模糊匹配
6、层级定位
1)根据父级获取子级元素
# 父元素
rootFileView = self.driver.find_elements(AppiumBy.XPATH, "//*[@resource-id='xxx']")
# 子元素
childView = rootFileViewTitle[2].find_element(AppiumBy.XPATH, "//*[@resource-id='xxx']")
2)兄弟元素定位
ancestor |
选取当前节点的所有先辈(父、祖父等) |
ancestor-or-self |
选取当前节点的所有先辈(父、祖父等)以及当前节点本身 |
child |
选取当前节点的所有子元素 |
descendant |
选取当前节点的所有后代元素(子、孙等) |
descendant-or-self |
选取当前节点的所有后代元素(子、孙等)以及当前节点本身 |
following |
选取文档中当前节点的结束标签之后的所有节点 |
namespace |
选取当前节点的所有命名空间节点 |
parent |
选取当前节点的父节点 |
preceding |
选取文档中当前节点的开始标签之前的所有节点 |
preceding-sibling |
选取当前节点之前的所有同级节点 |
self |
选取当前节点 |
attribute |
选取当前节点的所有属性 |
driver.find_element(AppiumBy.XPATH,
"//*[@resource-id='xxx']/following-sibling:://*[@text="xx"]"
获取@text="xx" 的兄弟元素
其他一些场景:
3)通过子元素定位父元素,子元素唯一,父元素不唯一
self.driver.find_element(AppiumBy.XPATH, "//*[@resource-id="xx"]//*[@text="xx"]")
resource-id是父元素的,text是子元素的
4)子元素id相同但是父级元素不相同获取对应子元素
使用 XPath 表达式获取一组元素
elements = self.driver.find_elements(AppiumBy.XPATH, "//*[@resource-id='xxx']")
根据元素下标访问
例如访问第一个元素 element1 = elements[0]
六、下标定位
如果同一页面中某一属性有多个元素时,可以使用定位方法+下标来指定想要操作的元素
textInputs = self.driver.find_element(AppiumBy.CLASS_NAME, "android.widget.EditText")
element1 = textInputs[0]
最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。