小程序自动化测试框架【Minium】系列(三)元素定位详解

news/2024/7/20 2:56:19 标签: 小程序, ui, 前端, 软件测试, 自动化测试

元素定位

元素定位,应该是很多UI自动化测试入门学习必会的技能了,下面我将为大家举例演示元素定位的几种方法。

1、CSS选择器
Minium 可以通过 WXSS 选择器定位元素,如下图所示:

在这里插入图片描述
如果有[CSS选择器]基础会上手更快 ,如没有可参考

CSS选择器
XPath

示例:

2、CSS方式定位

示例代码如下:

# class定位
self.page.get_element(".kind-list-item-hd").click()
# id定位
self.page.get_element("#view").click()
# 属性定位(逻辑运算定位)
self.page.get_element("[id='view'][class='kind-list-item-hd']").click()
# 简单选择器格式 tageName + #id + .className
self.page.get_element("view#view.kind-list-item-hd").click()

3、XPATH方式定位

看到这里,有的同学可能会条件反射性的想到,右键选择 Copy,点击 Copy Xpath 或 Copy full Xpath?

没错,是支持的!


使用xpath语法定位,示例代码如下:

# 绝对定位
self.page.get_element("/page/scroll-view/view/view/view[2]/view/view[1]/view[1]").click()
# 相对定位
self.page.get_element("//view[@id='view']").click()
# 使用属性定位
self.page.get_element("//view[@id='view' and @class='kind-list-item-hd']").click()
# 使用部分属性定位
self.page.get_element("//view[contains(@id,'vi')]").click()
# 使用文本定位
self.page.get_element("//view[text()='视图容器']").click()

个人感觉是完美兼容Selenium的CSS 、XPATH定位方式的,参考学习CSS定位入门、XPATH定位入门这两篇。

4、selector方式定位

推荐使用id/class/标签+属性。inner_text/text_contains/value为增强用法,实现本质还是通过selector获取到元素标签后再通过inner_text/text_contains/value筛选元素。
示例代码如下:

# 适合没有属性元素定位
self.page.get_element("view", inner_text="视图容器").click()
self.page.get_element("navigator", inner_text="swiper").click()

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

怎样识别自定义组件

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


定位 test2 标签下的 text 的元素

示例代码如下:

# 没有元素属性,可以文本定位一试
self.page.get_element("text", inner_text="this is test2").click()
# 绝对对位(dom结构改变就完蛋,不推荐)
self.page.get_element("/page/mytest//test2//view/view/text")
# 使用跨自定义组件的后代选择器
self.page.get_element("mytest>>>test2>>>text")  # 自定义组件 mytest组件节点下的test2组件节点下text标签
# 逐层查找定位
self.page.get_element("mytest").get_element("test2").get_element("#test2").get_element("text")

6、定位示例详解

这里我贴出源代码给的注释部分,个人觉得这个注释写的真好,一看就懂,如下图所示:

7、总结

元素定位小结:

不建议使用基础标签view、text方式定位元素,有时会因为dom加载不出来找不到元素,源码中参数max_timeout=0,有需要可自己指定超时时间。
小程序发版频繁不建议使用绝对定位,使用有一定标识性或属性结合定位,可考虑选择器定位
若元素没有属性,则可考虑XPath,或标签+文本定位
自定义组件定位,可以考虑跨自定义组件的后代选择器或逐层定位元素方法定位

最后:【可能给予你助力的教程】

在这里插入图片描述
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。


http://www.niftyadmin.cn/n/50343.html

相关文章

chatGPT学习

最近看到一个火爆的AI智能聊天工具:ChatGPT。它的功能:文能写文章,武能改BUG,马斯克对它的评价是“Scary Good!”。我非常感兴趣,就试用了一下,感觉还不错,希望大家能喜欢。 ChatGPT&#xff0…

SpringBoot配置文件

配置文件有两种格式: .properties .yml .properties是老版配置文件,.yml是新版配置文件 一、properties详解 IDEA社区版不支持 properties格式的日志的提示,需要安装相应插件。 3.1properties 基本语法 (ps:小技巧&#xff0…

【1797. 设计一个验证系统】

来源:力扣(LeetCode) 描述: 你需要设计一个包含验证码的验证系统。每一次验证中,用户会收到一个新的验证码,这个验证码在 currentTime 时刻之后 timeToLive 秒过期。如果验证码被更新了,那么它…

SQL盲注加速方法总结

sql盲注加速方法总结 盲注分为布尔盲注和时间盲注,一般为加快测试速度都用工具或者脚本跑。但有时还是很慢,这时就需要采取另外办法。在参考了一些资料后经过实验总结可行方案如下。1.二分法加速、2.与运算加速、3.二进制延时注入加速、4.dnslog OOB外带…

docker安装elashticsearch

福利:这是我的个人IT资源网站,所有资源都免费,注册登录后就可以看到密码,需要什么大家尽情选取! 从docker下载elashticsearch镜像(可以指定版本号) docker pull elasticsearch:7.4.22. 从dock…

静态代理,JDK动态代理,Cglib动态代理的写法

目录静态代理JDK动态代理Cglib动态代理小结使用代理模式可以在不改变被代理类的情况下,实现对被代理类的进行增强。 例如:在被代理类中有一个div()方法,方法中只是计算除法,然而想要对其进行增强,如添加异常捕获等。 …

Flask的request

28.10 必知的Flask的request Flask Request对象 来⾃客户端⽹⻚的数据作为全局请求对象发送到服务器。为了处理请求数据,应该从Flask模块导 ⼊。 Request对象的重要属性如下所列: form - 它是⼀个字典对象,包含表单参数及其值的键和值对。 ar…

java基本类型转换

1.什么是类型转换? 因为java是一门强类型语言,所以在数据运算中会存在类型转换。 基本类型转换分为自动转换和强制转换。 自动转换规则:容量小的数据类型可以自动转换成容量大的数据类型,也可以说低级自动向高级转换。这儿的容量…