首页 > 编程语言 >腾讯出品小程序自动化测试框架【Minium】系列(三)元素定位详解

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

时间:2023-01-26 12:33:59浏览次数:67  
标签:定位 Minium get text element 详解 腾讯 page view

写在前面

昨天转发这篇文章时,看到群里有朋友这样说:

这么卷吗?这个框架官方已经不维护了。

姑且不说卷不卷的问题,要是能卷明白,别说还真不错;

不维护又怎样?我想学习,想会,分享给很期待这系列的文章的人罢了。

元素定位

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

1、CSS选择器

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

image.png

如果有[CSS选择器]基础会上手更快 ,如没有可参考

示例:

image.png

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

没错,是支持的!

image.png

使用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()

个人感觉是完美兼容SeleniumCSS 、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的, 则为 自定义组件 。例如小程序页面wxmlmytest 、test2、 test22

image.png

定位 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、定位示例详解

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

image.png

image.png

7、总结

元素定位小结:

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

写到最后

最近又开始焦虑了,虽然家人没催婚,但是到了这个年纪,想有个归属,无奈一直遇人不淑,家里资源用尽,也没人给我介绍对象,还不相信网络,感觉自己没救了,略显尴尬,尬到这些烦恼都不知道跟谁去说!

唉,与理想平等交易,同喧嚣保持距离,事已至此,还是先吃饭吧。

标签:定位,Minium,get,text,element,详解,腾讯,page,view
From: https://www.cnblogs.com/longronglang/p/17067694.html

相关文章

  • 【云原生kubernetes】k8s中pod使用详解
    一、前言在之前k8s组件一篇中,我们谈到了pod这个组件,了解到pod是k8s中资源管理的最小单位,可以说Pod是整个k8s对外提供服务的最基础的个体,有必要对Pod做深入的学习和探究。二......
  • 【Javaweb】Servlet八 | 请求转发的代码实现【详解】
    请求的转发什么是请求的转发?请求转发是指,服务器收到请求时,从一次资源转到另一个资源的操作叫做请求转发。 部分代码//获取请求的参数(办事的材料)查看......
  • ThinkPHP函数详解:cache方法
    cache方法是3.0版本开始新增的缓存管理方法。注意:3.1.2版本后因cache方法并入原S方法,所以cache方法不再建议使用,用S方法即可。cache用于缓存设置、获取、删除操作用......
  • JSP六个动作详解...
    JSP中6个动作为:1.Include、 2.Forward、3.UseBean、 4.GetProperty、 5.SetProperty、6.Plugin。一、Include指令<jsp:include>标签表示包含一个静态的或者动态的文件......
  • typora+picGo腾讯云图床设置
    前言需求原因​ 大部分人在写博客都是使用的较为好看的markdown格式,而我们在本地编写markdown时其中的图片一般都是截图后粘贴的。这些图片其实都保存在了本地文件夹中,ma......
  • python WSGI框架详解(转载)
    thonWSGI框架详解pythonWSGI框架详解 WSGI 几个关于WSGI相关的概念WSGI:全称是WebServerGatewayInterface,WSGI不是服务器,python模块,框架,API或者任何软件,......
  • 腾讯出品小程序自动化测试框架【Minium】系列(二)项目配置及测试套件使用说明
    一、写在前面真的人这一散漫惯了,收心就很难了,上午把小程序开发环境启动后,在QQ游戏里,杀了三把象棋,5把2D桌球,一上午没了,还是没法心静下来去学点东西。那就老样子,逼着自己开......
  • 静态Web服务器-多任务版Python解释器详解实现代理池的API模块
    学习目标能够写出多线程版的多任务web服务器程序1.静态Web服务器的问题目前的Web服务器,不能支持多用户同时访问,只能一个一个的处理客户端的请求,那么如何开发多任务版的web......
  • Mysql之分组查询Python解释器详解实现代理池的API模块
    学习目标能够写出分组查询的SQL语句1.分组查询介绍分组查询就是将查询结果按照指定字段进行分组,字段中数据相等的分为一组。分组查询基本的语法格式如下:GROUPBY列名[HAV......
  • 命令行客户端MySQL的使用Python解释器详解实现代理池的API模块
    学习目标能够知道使用命令行连接数据库命令能够写出增、删、改、查的SQL语句一、登录和登出数据库登录数据库:输入下面命令:mysql-uroot-p说明:-u后面是登录的用户名-p......