| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> iOS自动化测试元素定位 -> 正文阅读 |
|
[移动开发]iOS自动化测试元素定位 |
目录 前言今天要给大家分享的是对元素的定位,在一个页面中有很多不同的策略来定位一个元素,我们选择最合适的方法即可。 一个页面最基本组成单元是元素,想要定位一个元素,我们需要特定的信息来说明这个元素的唯一特征。 一、元素属性介绍? iOS自动化元素查找工具,我使用的是Appium的inspector。最新版的appium自动展示多种元素定位表达式,还可以查看每种定位表达式的执行效率。 ? 1、元素属性
? 2、查看各定位方式执行效率? Appium的inspector功能中,选择某个元素后在“selected Element”中会展示多个定位表达式,而且点击定位表达式后面的“Get Timing”,可以显示每个定位表达式的执行时间。 二、iOS常用定位方法? 1、accessibility_id? iOS自动化测试元素定位的accessibility_id主要使用元素的label或name(两个属性的值都一样)属性进行定位。 ? 例如:第一张截图中label或name都是“我的功能” driver.find_element_by_accessibility_id("我的功能") driver.find_element(MobileBy.ACCESSIBILITY_ID, "我的功能") ? 2、class_name? class_name定位方法使用元素的type属性,type属性表示控件类型,一般不具有唯一性,因此class_name不常用。 ? 例如:type属性为:XCUIElementTypeButton driver.find_element_by_class_name("XCUIElementTypeButton") driver.find_element(MobileBy.CLASS_NAME, "XCUIElementTypeButton") ? 3、Xpath? Appium对app原生环境的xpath定位方法执行效率很低,从iOS 10开始使用的 XCUITest 框架原生不支持,定位速度很慢,官方不推荐这种方式。但是在实际使用中,当其他定位方式都不能找到元素时,可以尝试xpath定位。 ? 例如:第一张截图中“我的功能”定位 driver.find_element_by_xpath("//XCUIElementTypeStaticText[@name='我的功能']") driver.find_element(MobileBy.XPATH, "//XCUIElementTypeStaticText[@name='我的功能']") ? 4、ios_class_chain(类型链)? ios_class_chain仅支持iOS 10或以上,且仅限于WebDriverAgent 框架中使用。此方法用于替代xpath,但该方法还有待完善,没有纳入官方文档。 ? Github说明地址:https://github.com/appium/appium-xcuitest-driver ? 例如:第一张截图中“我的功能”定位 driver.find_element_by_ios_class_chain('**/XCUIElementTypeStaticText[`label == "我的功能"`]') driver.find_element(MobileBy.IOS_CLASS_CHAIN, '**/XCUIElementTypeStaticText[`label == "我的功能"`]') ? 5、ios_predicate(谓词)? iOS Predicate 即谓词逻辑。ios_predicate定位方法支持iOS所有的版本,也就是能适配XCUITest 和 UIAutomation底层测试框架,使用的就是iOS编程语言,因此可以把此方法作为首选定位方式。 ? 谓词表达式由属性、运算符和值构成。 ? ?1.1、常用的属性 ? ?在上面的表格中已经介绍,可以使用的元素属性:type、value、name、label、enabled、visible ? ?1.2、运算符 ? ?1.2.1、比较运算符
? ?可用于数值和字符串的比较,如:label == ‘我的功能’,label >= 500 ? ?示例: driver.find_element_by_ios_predicate("label == '我的功能'") driver.find_element(MobileBy.IOS_PREDICATE, "label == '我的功能'") driver.find_element_by_ios_predicate("type == 'XCUIElementTypeButton' AND value == 'ClearEmail'") ? ?1.2.2、范围运算符 ? ?常用的范围运算符有:
? ?示例: driver.find_element(MobileBy.IOS_PREDICATE, "name IN {'id_cell', 'id_alert'}") driver.find_element_by_ios_predicate("value BETWEEN {5, 7}") ? ?1.2.3、字符串相关
? ?以字符串“自动化软件测试”为例:
? ?扩展:在三个关键字后加上[c]、或者[d]、[cd]
? ?例如:name CONTAINS[c] ABcd 和 ?name CONTAINS abcd是等同的 ? ?示例: driver.find_element_by_ios_predicate("label CONTAINS ‘软件’") ? ?1.2.4、模糊匹配:LIKE ? ?模糊匹配也可以称为通配符匹配,?代表一个字符,*代表多个字符。 ? ?示例:现有元素的label属性:“自动化软件测试” ? ?label LIKE ‘自动化软件测试’? ?# 完全匹配 ? ?label LIKE ‘自动化?件测试’? ? # ? 匹配一个字符 ? ?label LIKE ‘自动化??测试’??? # 两个?号匹配两个字符 ? ?label LIKE ‘自?化?件测试’ ? ?label LIKE ‘*软件测试’? ? ? # *代表多个字符 ? ?label LIKE ‘自动化软件*’ ? ?label LIKE ‘自动化*件测*’ ? ?示例: driver.find_element(MobileBy.IOS_PREDICATE, "label LIKE ‘*软件测试") ? ?1.2.5、逻辑运算符
? ?1.2.6、正则表达式:MATCHES ? ?以字符串的匹配为例:匹配字符串“自动化软件测试”,以“自”开头,然后以“试”结尾。 ? ?表达式:label MATCHES ‘^自.+试$’ ? ?示例: driver.find_element(MobileBy.IOS_PREDICATE, " label MATCHES ‘^自.+试$’") ? ? 符号说明:?^??匹配字符串的开头 ? ? ? ? ? ?.? ?匹配任意字符,除了换行符 ? ? ? ? ? ?+??匹配 1 个或多个的表达式。 ? ? ? ? ? ?$??匹配字符串的末尾 结语1、进入任何行业都需要不断地学习和努力,软件测试工作也不例外,后期的你如果能学习计算机、数据库、开发等知识,将对你的个人提升有极大帮助。 2、时刻保持对行业的热情,既然想在这个行业混,那就就得多去了解行业的新动态,更新自己的技术。你得知道想要站得更高,就需要学习更高水平的技术。 希望有勇气改变的你,能发展得更好,持续学习必不可少,不要让自己很容易被替代!!! 努力的人有的是机会,但不努力的人是一定没机会的!!! 软件测试资料需要的可以私信我关键词(资料)免费获取 欢迎留言,或是关注我的专栏和我交流。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 4:47:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |