微信小程序自动化测试框架 Minium—— 元素定位

在做小程序UI自动化时,大家遇到最多的,也是最基础的问题是,如何识别或定位需要操作的元素。

Minium关于元素操作的文档可以参考 元素定位。这里我们再详细简介下元素定位的几种方法。

由于小程序是类Web的方式,大家做元素选择是,可以先了解下CSS选择器的一些基础知识 ,可参考

minium 可以通过 WXSS 选择器定位元素,一般有以下几种类型:

  • 选择器 selector (id/class/标签/属性等)
    特别的class、id等属性选择器定位,例如
<view class="child">test</view>
  • 选择器 selector + inner_text/text_contains/value
    元素属性或标签定位以及元素内的文本定位,例如
<view class="child">test</view>
<view>test2</view>
  • XPath定位
    在开发者工具中获取元素XPath,可以右键选择 Copy,点击 Copy XpathCopy full Xpath
  • 跨自定义组件的后代选择器(用>>>连接自定义组件元素)
<test22>
<view>xxx</view>
</test22>

各种定位方式推荐用法

  • xpath:推荐使用完整的xpath(full Xpath)路径,不带 “//” 这一类的写法, 有助于提高搜索速度
  • selector:推荐使用id/class/标签+属性inner_text/text_contains/value为增强用法,实现本质还是通过selector获取到元素后再通过inner_text/text_contains/value筛选元素
  • 跨自定义组件的元素获取方法:推荐使用xpath的方式。选择器方式实现是需要先获取到自定义组件再寻找其符合条件的子组件

小程序内置组件定位方式

例如小程序页面wxml

在这里插入图片描述

1. 定位 class="child" 的第2个元素

minium脚本几种写法

# 1. 耗时较短
get_element("/page/view[6]/view")  # xpath 

# 2.耗时较长
ele = get_elements("view[class='child']")[1]   # 返回第2个class=child的元素

# 3.耗时最长
get_element(".child",inner_text="parent>child")   # class=child,控件内文本为parent>child
2. 定位 class="testclass"的第1个元素

minium脚本写法

1.耗时较短
get_element("/page/view[2]")  # xpath
2.耗时较长
get_element("view[class='testclass']")   # 返回第一个class=testclass的元素
3.耗时最长
get_element(".testclass",inner_text="test class 2")  # class=testclass,控件内文本为test class 2
3. 定位没有属性的元素

在这里插入图片描述

minium脚本写法

1.耗时较短
get_element("/page/view[1]")  # xpath
2.耗时较长
get_element("view",inner_text="first node")  # view标签,控件内文本为first node

跨自定义组件元素定位方式

如何识别自定义组件
  1. 看wxml文件或微信开发者工具的wxml pannel,标签名字不在小程序官方组件列表中的都是 自定义组件
  2. 看微信开发者工具的wxml pannel, 标签下面有 #shadow-root 的, 则为 自定义组件 。例如小程序页面wxml中 mytesttest2test22

在这里插入图片描述

1. 定位 test2 标签下的 text 的元素

minium脚本写法

1.耗时较短
get_element("/page/mytest//test2//view/view/text")  # xpath
2.耗时较长
get_element("mytest>>>test2>>>text")   # 自定义组件 mytest组件节点下的test2组件节点下text标签
3.耗时最长
# 逐个获取自定义组件及自定义组件下的标签
get_element("mytest").get_element("test2").get_element("#test2").get_element("text")
2. 定位 test22标签下的第1个view的元素

minium脚本写法

1.耗时较短
get_element("/page/mytest//test22/view")  # xpath
2.耗时较长
get_element("mytest>>>test22>>>view")  # 自定义组件 mytest组件节点下的test2组件节点下text标签
3.耗时最长
# 逐个获取自定义组件及自定义组件下的标签
get_element("mytest").get_element("test22").get_element(".test22")

总结

如何缩短元素查找时间

例如该用例中获取元素方式,查找慢,会导致用例执行时长较长
get_element("view", inner_text="xxx", max_timeout=5)

元素定位用基础标签view、text方式,时间相对会长,建议用特别的class等css选择器定位,或者尝试用xpath(//view)

选择定位方式
  • 若小程序页面结构不经常发生变化,可优先使用XPath定位
  • 部分项目由于工程打包后,元素class、id等属性会随机变化,考虑使用XPath定位,或者标签+文本定位
  • 若元素class、id等属性不会随机变化,且有一定标识性,可考虑选择器定位,或者XPath定位
  • 若元素没有属性,则可考虑XPath,或标签+文本定位
  • 自定义组件定位优先考虑XPath,其次考虑跨自定义组件的后代选择器

需要帮助

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pytest ui自动化测试实战主要包括安装并配置环境、练习pytest基本使用、练习selenium基本使用以及使用pytest和selenium实现UI自动化测试四个部分。在练习pytest基本使用中,我们可以通过编写简单的用例格式来实现对测试目的和要求的覆盖。而在练习selenium基本使用中,我们可以使用脚本语言来模拟用户行为操作,接近真实用户场景,实现对web页面的自动化测试。通过这些实践,我们可以了解基于pytest和selenium的UI自动化测试的基本思路,并熟悉这两种测试工具的基本操作。此外,pytest还是一个非常成熟的Python测试框架,它具有简单的用例编写格式和丰富的插件,如pytest-html和pytest-rerunfailures等,可以生成漂亮的测试报告并实现失败用例的重复执行。通过实战,我们可以基本掌握pytest的使用方法。另外,还可以基于pytest实现测试用例收集方案、自定义参数化方案、页面元素定位数据存储方案、测试用例数据存储和维护方案等,以避免重复设计和维护复杂的问题。此外,还可以修改定制并汉化html测试报告,使其更加简洁、美观、易读。同时,还可以封装集成selenium、appiumminium和WinAppDriver等工具,以更好地支持不同平台和应用的自动化测试。总之,通过pytest ui自动化测试实战,我们可以全面了解和掌握UI自动化测试的基本原理和实践技巧。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [软件测试案例|使用 pytest+selenium 进行UI自动化测试](https://blog.csdn.net/qq_41640218/article/details/124031645)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [基于pytest设计自动化测试框架实战](https://blog.csdn.net/hotswwkyo/article/details/103211805)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值