掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务

UI自动化测试之元素管理

自动化测试框架意义

自动化测试框架的意义在于提高脚本编写效率,降低代码的冗余度,提高脚本的可读性及降低脚本的维护成本。

框架的分层思想

自动化测试脚本从最初的线型测试,到模块驱动测试、数据驱动测试、对象驱动测试,自动化框架的分层思想一直在改进。自动化测试框架分层思想大致可归为:元素对象层、业务场景层、测试数据层、公共服务层;例如:driver管理,日志,测试报告,运行机制等,均可写在公共service层中;分层思想可以达到最大程度的减少冗余代码,降低代码的维护成本;

元素对象的管理

元素对象作为脚本执行的基础颗粒,对其的管理尤为重要。元素对象的维护成本将直接影响脚本的维护成本。本文将介绍3种元素对象的管理方式,通过比较其优缺点,表明元素对象的管理对自动化脚本的影响。

1)使用文本管理元素对象

以web端页面元素为例,使用XML或YAML等格式的文件管理元素对象,具体实现如下:

  • 元素对象管理文件---TestBaidu.yaml

  • 使用jar包:jyaml-1.3.jar解析yaml文件,生成Map<String,Map<String, String>>类型的数据elements;

  • 根据type类型将value转换成By对象;

  • 生成一个WebElement对象:

public WebElement getElement(String key) { 
    String type = elements.get(key).get("type");
    String value = elements.get(key).get("value");    return driver.findElement(this.getBy(type,value));
}

这种管理方式的优点:

  • 如果UI变了,我们只需要修改文件中对应元素的值,脚本不需要重新编译(如果是用需要编译的语言,如JAVA);

  • 只有在用到页面上的一个元素时,才会去定位这个元素,实例化该元素对象;

  • 可以用中文给元素命名,脚本可读性高;

  • 操作人员上手的门槛低;

这种管理方式的缺点:

  • 编写脚本时,输入元素对象,不能利用代码编辑器中的智能提示功能;

  • 文件中元素的命名有可能重复,导致前一个元素值被后一个同名元素值覆盖;

  • 手误导致文件中元素的名称与代码中元素名不一致;

  • 文件数量较大的时候,UI变了,修改元素对象的值的时候,定位文件比较困难,文件维护成本随着脚本量增多而增大;

2)使用代码管理元素对象,编写元素对象类:

脚本中编写页面元素对象类,可以按页面或业务来组织,其中,可以重写WebElement类的方法,来简化页面对象的定义及实例化,增强部分方法的健壮性及打Log,具体实现如下:

  • 重写WebElement类的方法 (如下,只截取部分代码);

  • 编写Locator类,优化getElement方法、等待元素加载完成方法、等待元素显示等方法,保证脚本的健壮性;

  • 按页面或业务场景编写元素对象类;

未命名1512716179.png

这种管理方式的优点:

  • 编写脚本时,输入元素对象,利用代码编辑器中的智能提示功能,降低输入错误的概率;

  • 没有管理元素的文件的成本;

  • UI改变后,脚本运行报错,可根据报错信息,利用代码编辑器的Go to Declaration功能找到该元素对象定义的地方,修改元素对象值,定位错误较快捷;

这种管理方式的缺点:

  • 编写脚本的测试人员需要懂代码;

  • 没有1中的元素管理方式的可读性强;

  • 对于IOS及Android应用,需要维护2套元素对象类;

3)Appium PageFactory

针对IOS及Android应用,页面元素对象值不同的问题,Appium的客户端提供了一个类AppiumFieldDecorator,FieldDecorator  顾名思义,是Page对象Field的Decorator。PageFactory主要就是在Feild上下功夫,使用注解的方式实现页面元素对象的定义。

  • 脚本的元素层:

  • 元素层的父类PageObjectBase,使用PageFactory初始化field;

这种管理方式的优点

  • IOS与android自动化脚本可以合并为一份,减少脚本的维护量;

  • 自己决定是否缓存找到的元素。默认情况下,每次调用方法时,都会重新去定位页面元素,这对于处理使用AJAX技术的页面很有用;处理其它的页面,可以找到元素后就缓存起来。

  • 使用注解的方式的方式定义页面元素,简洁;

  • 只有在用到页面上的一个元素时,才会去定位这个元素;

这种管理方式的缺点

  • 编写脚本的测试人员需要懂代码;

文章到这里就结束了,欢迎大家一起交流探讨。

原文来自:点融黑帮

声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

  • AI文本审核服务

    基于大模型能力构建的文本审核服务,能够高效精准地识别各类文本违规内容。与传统文本内容安全审核方案相比,具备更强大的语言理解与分析能力,能精准识别复杂、隐晦的违规内容,突破了传统模式的局限。

    基于大模型能力构建的文本审核服务,能够高效精准地识别各类文本违规内容。与传统文本内容安全审核方案相比,具备更强大的语言理解与分析能力,能精准识别复杂、隐晦的违规内容,突破了传统模式的局限。

  • AI图片审核服务

    基于图片审核大模型服务,能够全方位识别图片中的色情、性感、涉政、暴恐、违禁、宗教、引流广告、不良等违规内容,并支持返回大模型的审核结果。结合大模型和专家小模型,提供更细粒度的标签(如色情细分、具体行为、特定物体等),识别范围更广、标签更丰富。 综合效果最佳,适合对误判率、漏判率都有较高要求的场景。

    基于图片审核大模型服务,能够全方位识别图片中的色情、性感、涉政、暴恐、违禁、宗教、引流广告、不良等违规内容,并支持返回大模型的审核结果。结合大模型和专家小模型,提供更细粒度的标签(如色情细分、具体行为、特定物体等),识别范围更广、标签更丰富。 综合效果最佳,适合对误判率、漏判率都有较高要求的场景。

  • AIGC图片风险检测

    针对AIGC场景,检测AIGC生成的图片是否存在违规或者不宜传播的内容。建议AIGC生成的图片都进行该项检测。

    针对AIGC场景,检测AIGC生成的图片是否存在违规或者不宜传播的内容。建议AIGC生成的图片都进行该项检测。

  • AI生成图片鉴别

    检测图片是否疑似由AI生成合成、图片是否含有AI生成合成隐式标识(如果有隐式标识时支持返回图片AIGC元数据信息)。

    检测图片是否疑似由AI生成合成、图片是否含有AI生成合成隐式标识(如果有隐式标识时支持返回图片AIGC元数据信息)。

  • 诈骗风险感知检测

    根据身份证/手机号进行核验号码是否有涉险诈骗风险。

    根据身份证/手机号进行核验号码是否有涉险诈骗风险。

0512-88869195
客服微信二维码

微信扫码,咨询客服

数 据 驱 动 未 来
Data Drives The Future