• 13
  • 13
分享
  • Web自动化,如何使用选择器定位元素?——软件测试圈
  • 曼倩诙谐 2021-07-16 11:12:09 字数 3083 阅读 2358 收藏 13

  概述:在前端自动化中,元素定位少不了,尤其是使用Jquery方法的元素定位。本文主要讲述如何使用Jquery选择器进行元素定位。

  基本选择器

  简要介绍

  Jquery选择器中使用最多的选择器,它由元素id、class、元素名、多个元素符组成。功能表如下表1所示:

表1.png

表1 Jquery基本选择器功能表

  实践举例

  以百度页面举例,说明基本选择器定位元素的方法。

图片 1.png

图1 百度首页

  id定位方法

  由图1可知,“百度一下“的前端代码为<input type="submit" value="百度一下" id="su" class="btn self-btn bg s_btn">,id=”su”。

  使用id定位方法可以使用$(“#id”),如下图2所示,使用console.log($(“#id”))打印出了对应的”百度一下“按钮元素信息,使用id定位成功。

图片 2.png

图2 id定位“百度一下“按钮

  小tips:如何判断元素定位是否正确?

  可以使用浏览器面板的Console交互功能,使用console.log()功能打印使用选择器定位的元素。

  element定位方法

  “百度一下“按钮没有设定元素名name,无法使用element定位。

  为了针对同一案例演示,使用编辑属性方法,临时为”百度一下“按钮元素添加了name=”baidu_btn”的属性。如下图3所示:

图片 3.png

图3“百度一下“按钮元素临时添加name属性

  然后,使用element定位方法,结果如下图4所示:

图片 4.png

图4element方法定位“百度一下“按钮

  class定位方法

  “百度一下“按钮元素的class="btn self-btn bg s_btn",使用class定位结果如下图5所示:

图片 5.png

图5 class方法定位“百度一下“按钮

  *定位方法

  *用于定位所有元素,并不适合某个具体元素定位。如使用*定位,如下图6所示,会输出一个元素集合,很难快速定位到我们案例中的“百度一下“按钮。

图片 6.png

图6*方法难以准确定位“百度一下“按钮

  selector1、selector2、…、selectorN复合定位方法4中单独使用*无法准确定位元素,现在使用*和id复合方法定位“百度一下“按钮,成功定位到元素。结果如下图所示:

图片 8.png

图7 *和id符合方法定位“百度一下“按钮

  层次选择器

  简要介绍

  通过DOM元素之间的结构(层次关系)来获取特定元素,例如后代元素、子元素、相邻元素、兄弟元素等。Jquery层次选择器功能表如下表2所示:

表2.png

表2 Jquery层次选择器功能表

  实践案例

  仍以百度首页举例,简要说明层次选择器的使用方法和定位结果。

图片 9.png

图8 百度首页

  ancestor descendant定位方法

  选取百度首页body元素的子元素,设置css样式为粉红色,Jquery命令为$("body div").css("backgroundColor","#FFB6C1")。结果如下图9所示。

图片 10.png

图9使用ancestor descendant元素定位方法,设置百度首页背景为粉红色

  parent>child定位方法

  选取百度首页body元素的所有后代元素,设置css样式为粉红色,Jquery命令为$("body)div").css("backgroundColor","#FFB6C1")。结果如下图10所示。

图片 11.png

图10 使用parent>child元素定位方法,设置百度首页部分背景为粉红色

  prev+next定位方法

  以下图11为例,输出id= “s_btn_wr“的同辈元素,使用prev+next定位方法输出紧跟其后的元素,结果如图12所示。

图片 12.png

图11 id=”s_btn_wr”元素前端代码

图片 13.png

图12 prev+next方法定位结果

  prev~siblings定位方法

  以下图11为例,输出id= “s_btn_wr“的同辈元素,使用prev~siblings定位方法输出同辈元素,结果如图13所示。

图片 14.png

图13 prev~sibling方法定位结果

  属性选择器

  简要介绍

  Jquery属性选择器是基于元素属性作为筛选条件的选择器Jquery属性选择器功能表如下表3所示:

表3 Jquery属性选择器功能表:

表3.png

表3 Jquery属性选择器功能表

  实践案例

  同样以图1,定位“百度一下“按钮元素为例。

  attribute定位元素

  attribute选择器器和*以及类似,无法快速正确定位到某个元素,因为使用attribute定位不具有唯一性。在此暂不举例,后面再多属性选择器时联合使用举例。

  attribute=value定位元素

  “百度一下“按钮的前端代码为<input type="submit" value="百度一下" id="su" class="btn self-btn bg s_btn">,id=”su”。使用id=”su”属性定位,定位结果如下图14所示。

图片 15.png

图14attribute=value方法定位结果

  attribute!=value定位元素

  使用id!=su定位所有id不等于su的元素,结果如下图15所示。

图片 16.png

图15attribute!=value方法定位结果

  attribute^=value定位元素

  使用attribute^=value定位class="btn self-btn bg s_btn"属性的“百度一下“按钮元素。定位结果如下图16所示。

图片 17.png

图16attribute^=value方法定位结果

  attribute$=value定位元素

  使用attribute$=value定位class="btn self-btn bg s_btn"属性的“百度一下“按钮元素。定位结果如下图17所示。

图片 18.png

图17attribute$=value方法定位结果

  attribute*=value定位元素

  使用attribute*=value定位class="btn self-btn bg s_btn"属性的“百度一下“按钮元素。定位结果如下图18所示。

图片 19.png

图18attribute*=value方法定位结果

  [selector1][selector2][selectorN] 定位元素

  多属性联合定位元素,在本例中使用attribute和attribute*=value联合定位。元素定位结果如下图19所示。

图片 20.png

图19[selector1][selector2][selectorN]方法定位结果

  自动化实践

  在前端自动化测试过程中,可以使用Jquery进行元素定位和操作。如robotframework中使用jquery选择器模式定位元素。

  本节以百度搜索输入框功能为例,模拟“在输入框中输入‘51testing’关键字并点击‘百度一下’按钮”。

  结合robotframework提供了如下3种方法实现该样例。

  ·使用js语句模拟百度搜索“51testing”;

  ·使用rf+jquery选择器定位元素方法模拟百度搜索“51testing”;

  ·使用rf+自身选择器定位元素方法模拟百度搜索“51testing”。

  3种方法的具体代码如下图20所示:

图片 21.png

图20rf+jquery定位元素自动化实践案例

  总结

  本文主要介绍了Jquery定位元素的三种选择器使用方法,用于辅助元素定位。在判断元素定位是否正确的时候,可以使用浏览器开发者工具的Console面板进行在线定位,辅助分析。



作者:刘晓佳Rachel   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 前言综合测试整合测试非常复杂,需要一些开发和逻辑技能。的确如此!那么把这个测试整合到我们的测试策略中的目的是什么呢?这个问题我们先不着急回答,让我们一步步往下看你就知道了。为什么要进行集成测试?以下是一些原因:1、实际上,当开发一个应用程序时,它被分成更小的模块,并将其分配给每个开发者一个模块。一名开发者实现的逻辑与其他开发者完全不同,因此有必要检查开发人员实现的逻辑是否符合预期,并按规定的标准提供正确的值。2、大多数情况下,当数据从一个模块移动到另一个模块时,数据的表面或结构会发生变化。添加或删除某些值会导致后续模块出现问题。3、该模块还与某些第三方工具或应用编程接口互动,这些工具或应用编程...
            0 0 1283
            分享
          • 1、引言关于性能测试的话题,在小鱼的博客中,没有三位数,也有个位数。虽然写的不少,但是能记住的不多…这习惯性的喝点咖啡,然后就…(不喝咖啡睡眠质量也不咋地),索性就再唠点。我们都知道,性能测试的目的就是获取系统响应时间、吞吐量、稳定性、容量等信息。那么,我到底改如何去做或者如何发现这些缺陷?跟着小鱼往下捋~~2、性能测试内容关于性能测试,从以下几个方面入手就可以。2.1 基准测试Benchmark或者Baseline测试。一般为单用户测试,或者是零数据量环境下的测试。目的目的在于建立一个可度量的参考标准,为其他测试场景或者调优过程提供对比参考。也可认为是最基础的性能测试,如果基准测试的结果都不...
            1 1 3125
            分享
          •   12月9日,京东创始人刘强东在内网发文回应了一位京东员工发布的帖子,第一财经记者向京东内部员工确认了该回复的真实性。  在回复中,刘强东表示,“我们天天说客户为先,可是工作中处处以自己为中心进行思考!我们经常说战斗只做第一,但是却处处防守,从不想着如何主动出击!很多人天天说创新,却每天就是抄袭跟随别人。出现这么多问题,当然都是我管理不善,我非常自责,但是无论如何,我不会躺平,也希望兄弟们不会躺平。”  刘强东称,“现在组织庞大臃肿低效,改变起来确实需要时间。”  同时,他还对团队提出了期许,“京东基础依然在,相信我们一定会走出低谷。任何一个人任何一家公司都会经历若干个顶峰和低谷才能成就伟大...
            0 0 976
            分享
          •   金融业机构开展金融数据安全防护工作过程中,越来越多的数据库数据通过网络进行存储和发布,这些数据往往包含有各类敏感信息,即使经过脱敏后仍然有巨大的社会价值与经济价值,一旦出现数据泄露,后果也是无法想象的。因此,需要使用数据水印技术在数据交换及数据使用中的分发共享、委托处理等环节标明数据的所有者、数据分发对象、分发时间、分发途径及使用范围等信息。  一、数据水印的定义  数据水印是指从原始环境向目标环境进行敏感数据交换时,通过一定的方法向数据中植入水印标记,从而使数据具有可识别分发者、分发对象、分发时间、分发目的等因素,同时保留目标环境业务所需的数据特性或内容的数据处理过程。  二、数据水印的...
            13 13 1732
            分享
          • 一、概述bug在最开始指的是计算机软件存在的漏洞,可以导致攻击者在未授权的情况下对系统进行各种操作;而在现在来讲,指的是各种软件存在的缺陷或漏洞以及软件软件可改进的细节、或与需求文档存在差异的功能实现等。bug按照其造成危害的严重程度可以分为四个等级,按照其修改的优先顺序,也可以分为四个等级;按照造成危害的严重程度可以划分的四个等级为严重问题、高级问题、中级问题和低级问题,对于各个问题的具体情况以及其一般对应的优先级如下所述;按照bug被处理的先后顺序也可以分为四个等级,分别为最高优先(Immediate)、高级优先(Urgent)、中级优先(Normal)、低优先级(Low)。不过需要注意的...
            15 16 9807
            分享
      • 51testing软件测试圈微信