• 13
  • 14
分享
  • Web自动化测试,为什么总是定位不到元素?——软件测试圈
  • 曼倩诙谐 2021-01-11 10:28:36 字数 2007 阅读 2119 收藏 14

  一、写在前面

  本文讨论的基础,是基于Robotframework(简称RF)+Selenium测试框架的Web前端自动化测试。针对Robotframework和Selenium的安装、使用等基础知识不做介绍,只讨论在进行自动化脚本编写过程中遇到的元素定位失败问题。

  二、但是你不得不了解的事

  RF框架在做前端自动化时,支持的元素定位方式有:css定位、id定位、name定位、xpath定位和js定位。在介绍如何使用这几种方法之前,你不得不认识并熟悉我们Web测试的基础工具(客户端)——浏览器。

  以Chrome浏览器为例,Chrome的开发者工具栏的Elements面板,提供了用户捕捉前端元素及获取元素定位的方法。如下图1所示,打开Chrome开发工具的Elements面板,点击最左侧的箭头(图中1),在界面点击关键字搜索框(图中2),即可获取搜索框的元素(图中3)html文本:

  “<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">”

  在该html文本处右键点击,并点击Copy按钮(图中4),即可见Chrome关于该搜索框元素定位的几种方式:selector、Xpath、JS path。

  如图1例中,selector的值为“#kw”;Xpath的值为“//*[@id="kw"]“;JS path的值为“document.querySelector("#kw")”。

  selector提供了css或id或name的元素定位方式,Xpath提供了xpath相对路径的元素定位方式。使用selector和Xpath,结合RF Selenium2Library的Click Element、Click Button、Checkbox Should Be Selected等关键字使用,即可定位元素进行点击、判断等操作。除此外,RF还提供js定位方式,结合Chrome的JS Path和RF的Execute JavaScript关键字,即可完成对元素的操作。

1.png

图1 chrome开发工具获取元素定位

  三、你可能不知道的事

  尽管使用过“02”中的几种定位方式,能够捕捉到大部分元素,但是现实往往不是那么尽善尽美,你可能还是遇到了下面几个问题:

  1、自动化脚本编写好,测试通过了,但是过几天回归测试就失败,元素找不到?

  在这里,只能建议你:请确认你所使用的定位方式是唯一不变的。例如,避免使用“//*[@id="9134245532398"]“这类包含动态id的xpath定位方式。有的前端设计某些元素的id为随机数,每次刷新都会更改,切记勿用这类随机变换的标识做元素识别。元素定位只有一个标准:唯一性,推荐id和name优先。

  2、元素处于frame框架嵌套中,即使获取到了正确的定位路径,测试脚本运行仍然失败?

  请记住,处于frame框架中的元素,你需要先切换进frame(RF的 select frame关键字试一试,会有惊喜),再进行元素定位。好比你远远地看到一扇玻璃窗里有个熟人,你大声跟他说话,他却无动于衷。这个时候,你需要走进这扇玻璃窗的门里,因为,玻璃窗是隔音的,你的呼喊门里的人听不见。

  3、如何操作被遮挡的元素?

  针对这类情况,也许你尝试了id、name、css和xpath等定位方法,结果都失败了。也不存在2中所说的frame切换,不要灰心,试试js定位操作吧。使用RF的execute javascript配合JS path直接操作被遮挡元素,百试不爽。

  4、如何处理新开tab页或新开窗口后的元素操作?

  同02方法类似,将当前操作的窗口切换到新开的窗口或tab页,再结合chrom的元素定位路径对元素进行操作,RF的select window值得尝试。

  5、定位没问题,点击按钮有显示被点中的样式,但是就是没效果?

  元素定位正确,使用click button和click element点击元素都,也无报错,就是没反应,那就试试press key按钮吧。

  6、自动化测试脚本运行太快,页面还没加载出来,元素找不到?

  这个时候,没有其他办法,只能设置等待时间或者使用RF的Element Should Be Visible这类关键字判断元素已经再页面可见或可用后,在进行操作。

  四、告诉你一个大事情

  如果你遇到的问题,“03“中的方法都不能解决,那么……打印源码吧。

  RF的get source关键字,将会告诉你,你当前操作的页面,所有html文本,按图索骥,根据你的定位方式是否真的能在当前页面中找到你定位的元素。get source将是你调试路上的好帮手!



作者:刘晓佳   

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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 作者:IDO老徐 每天收到的问题无数,梳理分析后,无外乎如下几类 。 1. 如何找到一份靠谱的工作 ? 2. 遇到职业迷茫了,如何抉择 ? 3. 目前xx现状,打算入行(或转行)测试,是否适合 ? 4. 遇到具体的xx技术障碍了,不知道怎么解决(找答案) 。 等等 。 今天, 聊聊《如何找到一份靠谱工作 ?》 1. 从现在开始(看完此文后),确定自己的职业发展方向 推荐一文, 之前写的测试从业者18条可行性路径, ...
            2 1 3416
            分享
          • 什么是大数据大数据是指无法在一定时间范围内用传统的计算机技术进行处理的海量数据集。对于大数据的测试则需要不同的工具、技术、框架来进行处理。大数据的体量大、多样化和高速处理所涉及的数据生成、存储、检索和分析使得大数据工程师需要掌握极其高的技术功底。需要你学习掌握更多的大数据技术、Hadoop、Mapreduce等等技术。大数据测试策略大数据应用程序的测试更多的是去验证其数据处理而不是验证其单一的功能特色。当然在大数据测试时,功能测试和性能测试是同样很关键的。对于大数据测试工程师而言,如何高效正确的验证经过大数据工具/框架成功处理过的至少百万兆字节的数据将会是一个巨大的挑战。因为大数据高效的处理测...
            14 14 828
            分享
          • 一、上传图片对于上传的文件,假设系统要求上传的文件为jpg或gif格式图片,大小为<=5M的文件,我们在设计测试用例时,应该从以下几个方面进行考虑:1:文件类型正确,文件大小合适的校验例如:上传一种jpg或gif的格式图片,文件大小为4.9M,结果为上传成功2:文件类型正确,文件大小不合适的校验例如:上传一种jpg或gif的格式图片,文件大小为5.1M,提示为:“上传的附件中大小不能超过5M”3:文件类型正确,文件大小合适的校验例如:上传一种jpg或gif的格式图片,文件大小为5M,结果为上传成功4:文件类型错误,文件大小合适的校验例如:上传.doc;.xls;ppt;bmp;jpeg;...
            14 14 2367
            分享
          • 1、哪一刻,让你想起了自动化作为一名大厂测开,编写自动化脚本,嫣然成为一种必备的技能。但是,什么情况下使用自动化,使用自动化的前提条件,却不是很多人都熟知。这就好比,拿到驾照会开车的人很多,但车子何时需要做养护,每个阶段养护内容是什么,应该不是所有驾驶员都知道。所以,为了能彻底搞懂自动化的来龙去脉,我们今天就来聊一聊,自动化的场景及成本维护等…1.1 执行回归测试问:在日常测试工作中,由于新追加的需求(不允许怼产品经理)或者修复BUG,如何确定是否因其而引起新的BUG?答:我们常用做法,就是 回归测试。问:那么在每次修复bug或新增需求时,都需要手动去回归吗?在没有更多的成本、资源、时间时,依...
            0 1 4480
            分享
          • 1、添加线程组--在测试计划上右击-添加-Threads-线程组线程数:登录用户人数Ramp-up Period:5s内5个人完成登录,隔一秒就开始登录下一个人循环测试:可以设定请求次数,此处是5个人循环两次,发送10个http请求2、添加http请求默认值--在线程组上右击-添加-配置元器件-http请求默认值这是下边sampler相同信息的集合,添加http请求默认值之后,sampler中此项信息可以空白,jmeter执行时会自动获取3、添加sampler-http请求-登录界面4、添加sampler-http请求-登录-携带用户名和密码可以看到-登录界面和登录携带参数的请求网址是不一样的...
            14 14 2170
            分享
      • 51testing软件测试圈微信