问题描述

在定位元素时直接复制的xpath. 但是因为下面这些原因导致之前引用的路径失效, 不得不频繁修改脚本重新定位元素, 大降低了脚本的复用性, 也增加了维护的成本:

1. UI修改 (比如增加了弹出框或新添加了form等等)

2. 操作顺序不同

3. 多标签或多个Form切换场景

根本原因

前面提到的这些动作都会引起DOM结构的变化 , 导致定位元素的路径和之前不同; 或者多个标签切换时共用某个控件,该控件结构虽然相同, 其引用路径也相同, 不特别说明的情况下只会去寻找第一个找到的控件, 而有时这个控件是deactive的. 凡此种种, 皆需要修改脚本.

解决办法

因为控件的结构相对是稳定的, 所以每次在写元素的路径时不要用直接生成的xpath(包含整个DOM的路径), 而是自己按照特定格式组合一个路径出来. 比如下面这个元素, 在多个标签页都存在,而且可以通过不同的操作顺序调出该控件.

如果直接复制xpath, 在最简单步骤下, 路径是 : /html/body/div[7]/div/div[2]/div/div[1]/div/div/div[2]/button

 在更复杂一些操作下仍然复制xpath,路径是  :   /html/body/div[11]/div/div[2]/div/div[1]/div/div/div[2]/button

解决办法:

1. 找到该元素上层相对固定结构的一个元素(一般是控件的上层)作为起点元素, 且在DOM结构中唯一.

如上例中, 找到的元素 class = 'ant-confirm-body-wrapper'  (该class在整个DOM结构中是唯一的)

2. 从该起点元素找起, 起到要定位的元素(这之间的结构因为是一个控件内相对固定), 完整的xpath结构可以写成:

//*[@class=\'ant-confirm-body-wrapper\']/div[2]/button

注意: 有时, 起点元素到需要定位的元素中间有很多层div结构, 手动去找极易漏掉div或出错, 这时可以在该起点元素上加id.

a. 选中起点元素, 右键点dd attribute, 然后添加id (id的值可以自己随意添加,只要是唯一的就可以).

  

b. 找到需要定位的元素复制xpath, 得到路径 : //*[@id="unique"]/div[2]/button.

   c. 将上述步骤中得到的路径 id部分替换成class. 所以需要定位元素最终脚本中使用的路径是:  //*[@class=\'ant-confirm-body-wrapper\']/div[2]/button

转载于:https://www.cnblogs.com/cheese320/p/8980064.html

提高测试脚本复用性降低DOM结构引起路径变化的影响相关推荐

  1. 设计模式第二弹: 不知道怎么提高代码复用性?看看这几种设计模式吧!

    本文是设计模式的第二篇文章,第一篇文章是不知道怎么封装代码?看看这几种设计模式吧!,后面还会有提高扩展性,提高代码质量的设计模式,点个关注不迷路,哈哈~ 想必大家都听说过DRY原则,其实就是Don't ...

  2. 关于提高代码复用性的几个知识点的回顾

    在java学习过程中,我发现有几个知识点,它们的作用都包含有提高代码的复用性.所谓提高代码复用性,简单来说就是能够让一个东西重复操作,还能减少工作量(也就是懒人思想).目前提到提高代码复用性的知识点有 ...

  3. 大中台的黄粱一梦和复用性设计的繁荣盛世

    K8s已经成为一线大厂分布式平台的标配技术.你是不是还在惆怅怎么掌握它?来这里,大型互联网公司一线工程师亲授,不来虚的,直接上手实战,3天时间带你搭建K8s平台,快速学会K8s,点击下方图片可了解培训 ...

  4. FPGA之道(71)提高设计的综合性能(三)提高设计的重用性与易改性

    文章目录 前言 提高设计的重用性 构建自己的IP库 提高设计的易改性 常量参数化模块设计 结构参数化模块设计 总线参数化 规模参数化 功能参数化 参数化设计的参数管理与组织 参数相关性 可传递的模块参 ...

  5. 如何提高测试人员问题分析能力

    本帖最后由 xinkai 于 2011-7-13 15:20 编辑 如何提高测试人员问题分析能力        这个问题有很多人问过,闲暇时也曾与老Zee.鹤舞等测试领域专家讨论过.今天来自CSDN成 ...

  6. android课堂小测试,[小薇班]APPIUM自动化测试 优酷APP测试脚本编写实例

    本课程主要包含: Appium入门基础 以优酷APP为例,介绍如何编写自动化脚本. Appium概述 appium 是一个自动化测试开源工具,支持 iOS, Android, Windows, Fir ...

  7. 面试百问:如何提高自动化测试脚本稳定性

    相信执行过自动化测试的同学都知道,测试脚本的维护也是不可或缺的,并不是你脚本写完之后就结束,往往自动化脚本执行报错了,你首先考虑的问题是自己的脚本出现的问题还是发现了开发bug,如果报错大部分因为你的 ...

  8. 控件获取图像可从几方面取得?_基于图像特征与布局刻画的移动测试脚本跨平台录制回放...

    一. 引言 移动应用在全球范围内有着越发举足轻重的地位,因此移动应用的快速迭代和频繁的需求变更的特点引发了对应用质量保障的要求不断提高.在大型设备集群上迁移测试脚本是移动应用质量保障的关键技术之一,因 ...

  9. 提高网页可访问性的十条建议

    提高网页可访问性的十条建议 2 这篇文章提供了十条有关于提高网页可访问性的指导原则,这些原则将保证提高你网站的可访问性. 引用万维网(W3C)的创始人@Tim Berners-Lee一句话来说网络的力 ...

最新文章

  1. Linux那些事儿 之 戏说USB(3)我是一棵树
  2. LeetCode:Spiral Matrix I II
  3. Oracle数据库中的优化方案
  4. 单片机涡轮流量传感器_暖通慧教你一文读懂流量传感器
  5. oracle的clob赋值_JAVA处理Oracle数据库CLOB读写操作
  6. mongoDB的监控工具
  7. nginx.pid failed (2: The system cannot find the file specified
  8. 如何提高代码质量:代码复查
  9. PHP的统一换行PHP_EOL
  10. 移动端ajax,jQuery基于$.ajax设置移动端click超时处理方法
  11. python error loading package_Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决...
  12. 【知识必备】如何优雅的退出应用和处理崩溃异常并重启
  13. 计算机专业教学实施,中职计算机专业教学项目的设计与实施
  14. Vmware+Virtualbox+Ubuntu+debian+USB转串口+kermit
  15. Acme CAD Converter 2019简体中文直装破解版
  16. dell服务器运维,【产品鉴赏】戴尔DELL R710服务器
  17. 编程实现类Logo语言(海龟语言)
  18. xlsx表格怎么做汇总统计_excel考勤统计表汇总怎么做
  19. 安卓app上架各大应用商店
  20. (最新最详细)安装ubuntu18.04

热门文章

  1. mvc5 @html,如何在MVC 5中使用 HTML5 Viewer
  2. Java基础之深入认识hashCode和equals
  3. linux内容对齐的快捷键,linux第一波命令总结
  4. 与c++ 进行最简单的进程通信
  5. 我的docker随笔18:阿里云docker仓库的使用
  6. 【Elasticsearch】Elasticsearch 查询过程中的 pre-filter 原理
  7. 【Elasticsearch】Elasticsearch如何物理删除给定期限的历史数据?
  8. 【MySQL】MySQL常见的读写分离方法
  9. 95-140-130-源码-transform-算子coGroup
  10. Centos KVM 基本安装过程