【小程序自动化Minium】三、元素定位- WXSS 选择器的使用

简介: 【小程序自动化Minium】三、元素定位- WXSS 选择器的使用

最近更新略疲,主要是业余时间多了几个变化。比如忙活自己的模拟赛车驾舱升级、还跟朋友筹备一个小程序项目、另外早上的时间留给背单词了。。。


上一章中讲到Page接口的get_element()get_elements()方法,其中有个必填参数就是选择器,而 minium 正是通过它来定位元素的。


对前端有过了解的童鞋,肯定对css选择器不陌生,CSS 选择器用于“查找”(或选取)要设置样式的 HTML 元素


但是在小程序中用的是特有的格式WXSS,WXSS (WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式,说白了就是用来决定 WXML 的组件应该怎么显示。

为了适应广大的前端开发者,WXSS 具有 CSS 大部分特性。同时为了更适合开发微信小程序,WXSS 对 CSS 进行了扩充以及修改


因为不是完全一样的东西,所以小程序中的 wxss 仅支持部分css选择器


1268169-20220705210340307-457483626.png


下面逐个看下不同选择器的用法。


一、选择器介绍


1. 类选择器 .class


根据类名称选择元素,比如.navigator-text,就是选择所有拥有class="navigator-text"的组件。


class ComponentTest(minium.MiniTest):
    def test_ui_op(self):
        print(self.page.get_elements("view.kind-list-item", index=2))
        self.page.get_element("view", inner_text="表单组件").click()
        self.page.get_element(".navigator-text").click()


示例代码中最后一行,如果get_element()找到多个符合的,就返回第一个。


1268169-20220705221154735-535457844.png


存在多个类的时候可以以点为间隔一直拼接下去,比如:


<view id="main" class="page-section page-section-gap" style="text-align: center;"></view>
view#main.page-section.page-section-gap


2. id选择器 #id


根据id选择元素,比如#form,就是选择拥有id="view"的组件。


1268169-20220706214307832-16919180.png


class ComponentTest(minium.MiniTest):
    def test_ui_op(self):
        print(self.page.get_element("#view"))


打印一下,看结果。


1268169-20220706214355339-175777251.png


3. 类型选择器


在每个元素中,都有自己的元素标签,标签名称tagName就可以用来作为类型的选择。


1268169-20220706220214864-1751631254.png


比如这里的image


class ComponentTest(minium.MiniTest):
    def test_ui_op(self):
        print(self.page.get_element("image"))


打印下结果:


1268169-20220706220339332-411591122.png


4. 多个类型选择器


除了上述单个元素标签外,还可以同时选择多个标签。


1268169-20220706221612981-1419220809.png


比如这个页面,标签text有1个,标签button有2个,那么我可以使用get_elements()方法同时选择这3个:


class ComponentTest(minium.MiniTest):
    def test_ui_op(self):
        self.page.get_element("view", inner_text="基础内容").click()
        self.page.get_element("view.navigator-text", inner_text="text").click()
        print(self.page.get_elements("text,button"))


打印下结果,应该有3个元素。


1268169-20220706221733061-1128047382.png


5. ::after


关于::after,作用是在选择的组件后插入内容。


1268169-20220707222454958-2062332227.png


我在官方的demo中找到了一个使用的地方,参考css中的:after用法,content中是插入的内容,官方demo项目中这里是空格。


这里更多的应该还是前端中涉及到的用法,暂时没想到在UI自动化中用到这个选择器的作用,有懂的看官还望不吝赐教。


6. ::before


同上


7. 跨自定义组件的后代选择器


跨自定义组件的后代选择器,这里体现在2个点:


  • 自定义组件
  • 后代选择器


自定义组件,就是你自己定义的组件,像示例中出现的<view>这些都不是自定义的。


再者就是后代选择器,这里要注意的是,指定的父元素下的后代元素,什么意思?


custom-element1>>>.custom-element2>>>.the-descendant


在上述示例中,custom-element1标签就是爷爷,然后标签里class名叫custom-element2的就是父亲,最后在这个父亲的儿子中,选择class名叫the-descendant的元素。


或者再借用css中的使用举例:


<div>
  <p> 
     <span> 把苹果咬哭 </span>
  </p>
  <span> 举栗子 </span>
</div>
<style> 
  div>span{color:red;}
</style>


这里的css选择器div>span设置元素为红色,那么举栗子会变红。


8. 属性选择器


可以选择带有特定属性或属性值的元素。


1268169-20220708073529025-1286413795.png


class ComponentTest(minium.MiniTest):
    def test_ui_op(self):
        self.page.get_element("view", inner_text="表单组件").click()
        self.page.get_element("view.navigator-text", inner_text="input").click()
        print(self.page.get_elements("input[placeholder='将会获取焦点']"))


这里input[placeholder='将会获取焦点']就是利用了属性和值的方式来定位元素。


打印下结果。


1268169-20220708073643998-317814063.png


9. xpath


选择器参数也可以之间传xpath语句,之前在web项目时候个人非常喜欢用xpath,很灵活。具体语法这里不展开了,可以自行搜索:xpath语法xpath轴


还是以上面的元素为例,用xpath可以这样定位:


class ComponentTest(minium.MiniTest):
    def test_ui_op(self):
        self.page.get_element("view", inner_text="表单组件").click()
        self.page.get_element("view.navigator-text", inner_text="input").click()
        print(self.page.get_element("//input[@placeholder='将会获取焦点']"))


这里的//input[@placeholder='将会获取焦点']就是xpath语法,利用tagName+属性值来定位。


打印下结果。


1268169-20220708075556525-835539549.png


二、简单选择器的组合使用


在上面提到的选择器中,简单易用的当属:tagNameidclassName,通常我们可以组合起来使用。


<view id="main" class="page-section page-section-gap" style="text-align: center;"></view>


组合一起使用:


view#main.page-section.page-section-gap


一种写法(注意2个类之间有个空格):


view[id='main'][class='page-section page-section-gap']


三、小结


目前来看,小程序中对于css选择器的支持还是不错的,常用的类型都可以支持,具体怎么写定位器就还是结合具体项目来了。


灵活、稳定、复用性,我觉得是最重要的。


刚看了下之前给官方提的2个issue,目前还没有回复。得,先去肝小程序开发了,回见了您!

相关文章
|
6月前
|
前端开发 Java 测试技术
《手把手教你》系列技巧篇(十三)-java+ selenium自动化测试-元素定位大法之By partial link text(详细教程)
【4月更文挑战第5天】本文介绍了Partial Link Text,这是一种用于网页自动化测试的方法,允许部分匹配超链接文本,尤其适用于长链接不便完全输入的情况。为确保准确性,建议选择具有唯一性的字符组合。文章列举了8种常用的定位方法,包括id、name、class name等,并重点讲解了partial link text。实战部分展示了如何通过 PartialLinkText 在百度首页找到并点击“打哭伊藤!孙颖莎:过瘾”这一热搜链接的代码示例。
100 2
|
3月前
|
小程序 前端开发 持续交付
小程序全栈开发中的CI/CD流程与自动化部署是一种高效的开发模式。
本文探讨小程序全栈开发中的CI/CD流程与自动化部署,介绍持续集成与部署的概念,包括自动化构建、测试、代码审查及部署实践。通过提高代码质量、迭代速度及团队协作效率,确保小程序稳定运行与良好用户体验。
84 2
|
6月前
|
XML 前端开发 Java
《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)
【4月更文挑战第6天】按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath。xpath 的定位方法, 非常强大。使用这种方法几乎可以定位到页面上的任意元素。xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath 的用法来定位页面元素。XPath 是XML 和Path的缩写,主要用于xml文档中选择文档中节点。基于XML树状文档结构,XPath语言可以用在整棵树中寻找指定的节点。
98 0
|
6月前
|
JavaScript 前端开发 Java
《手把手教你》系列技巧篇(四十九)-java+ selenium自动化测试-隐藏元素定位与操作(详解教程)
【5月更文挑战第13天】本文主要讨论了在Selenium自动化测试中如何处理前端隐藏元素的问题。隐藏元素通常是通过`type="hidden"`或`style="display: none;"`属性实现的,它们在页面上不可见,但仍然存在于HTML代码中。Selenium可以定位到这些隐藏元素,但无法直接进行点击、输入等操作,会报错“ElementNotInteractableException”。
109 3
|
6月前
|
Web App开发 前端开发 测试技术
【如何学习Python自动化测试】—— 页面元素定位
【如何学习Python自动化测试】—— 页面元素定位
|
6月前
|
JavaScript 小程序
微信小程序 搜索框实现模糊搜索(带模拟数据,js,wxml,wxss齐全
微信小程序 搜索框实现模糊搜索(带模拟数据,js,wxml,wxss齐全
|
6月前
|
Web App开发 前端开发 JavaScript
《手把手教你》系列技巧篇(二十)-java+ selenium自动化测试-元素定位大法之终卷(详细教程)
【4月更文挑战第12天】本文介绍了Selenium的八种元素定位方式,包括id、name、class name、css selector、link text、partial link text、tag name和xpath,并给出了每种方式的示例代码。建议在选择定位方法时,优先使用唯一性的id和name,其次考虑css或xpath,但要注意它们的性能影响。
214 6
|
6月前
|
前端开发 JavaScript Java
《手把手教你》系列技巧篇(十九)-java+ selenium自动化测试-元素定位大法之By css下卷(详细教程)
【4月更文挑战第11天】按计划今天宏哥继续讲解css的定位元素的方法。但是今天最后一种宏哥介绍给大家,了解就可以了,因为实际中很少用。
90 2
|
6月前
|
前端开发 JavaScript Java
《手把手教你》系列技巧篇(十七)-java+ selenium自动化测试-元素定位大法之By css上卷(详细教程)
【4月更文挑战第9天】本文介绍了CSS定位方式的使用,包括它的优势和8种常用的定位方法。CSS定位相比XPath定位更快、更稳定。文章通过示例详细讲解了如何使用CSS定位元素,包括通过id、name、class name、tag name、link text、partial link text以及XPath进行定位。还提供了Java代码示例来演示如何在自动化测试中使用这些定位方法。
156 1
|
6月前
|
小程序 前端开发 持续交付
小程序全栈开发中的CI/CD流程与自动化部署
【4月更文挑战第12天】本文探讨了小程序全栈开发中的CI/CD流程和自动化部署,强调其在提升开发效率和代码质量上的重要性。持续集成和持续部署确保了代码的频繁集成与快速迭代。实践中,利用构建工具、测试框架和部署工具实现自动化,并借助代码审查工具保证代码质量。同时,注意安全性、性能和团队协作,以实现小程序的稳定运行和优质用户体验。
190 0