当前位置: 首页 > news >正文

论自动化测试中的xpath | 多语言测试最新案例

XPath(XML Path Language)是一门在XML文档中查找信息的语言。XPath是XML处理中非常重要的组成部分,能大大简化文档的解析和处理。它与XSLT、XPointer等标准一起被广泛应用于XML的解析处理。

一般情况下,xpath主要应用在以下几个方面。

测试Web应用程序的UI元素定位。(与Selenium结合在自动化测试中定位元素)通过xpath精确定位web页面元素,如按钮、文本、链接等,应用于UI自动化功能测试中元素的验收,

测试响应XML/HTML内容。通过XPath来解析响应回来的XML或HTML内容,以便从中提取需要的值来进行验证测试;

测试接口响应数据。(与Jenkins结合在持续集成中实现测试自动化)对于基于XML或JSON格式的接口响应,用XPath解析响应数据,获取需要的节点作为实际结果;

测试参数化和数据驱动。通过XPath来参数化测试数据,从外部XML文件中读取测试数据,实现数据驱动测试;

测试数据库。基于XML的数据库,可以直接用XPath在数据库中查询数据;

测试配置文件。用XPath在配置文件中查找需要的配置项等。

Xpath的优劣势

在软件测试中,xpath本身语法简单、语义清晰,学习和使用都比较简单,而且和许多语言和工具都有良好的集成支持,比如 Selenium、HTTPUnit等。Xpath的功能也很强大,可以编写灵活的表达式来定位元素,定位动态生成的内容,解析XML/HTML响应内容很方便。但是,xpath使用时间长会导致测试脚本难以维护,可读性比较差,并且在易用性上没有CSS选择器那样直观,需要对文档结构比较了解,xpath也有无法检测页面是否可见,有时候会定位到不可见的元素,解析复杂页面时效率比较低的问题。

xpath和selenium的完美结合

从自动化功能测试的角度来看,xpath和selenium能进行完美结合。XPath为Selenium提供了非常强大而便捷的元素定位和内容提取能力。二者高度契合,使得Selenium可以智能地与浏览器交互,完成自动化测试。因此,掌握XPath在Selenium中的用法是非常关键的。

XPath可以用于Selenium定位元素

在使用Selenium的WebDriver API编写测试脚本时,可以通过XPath来定位页面元素。这是Selenium中最常用的定位方式之一。

例如:driver.findElement(By.xpath("//input[@id='username']"));

Selenium API支持XPath相关功能

Selenium提供了findElements、getText等方法,可以直接基于XPath进行元素定位和信息提取。

基于XPath的显式等待

Selenium的WebDriverWait可以配合XPath来实现智能等待,判断元素是否可见或可点击。

例如:wait.until(EC.element_to_be_clickable((By.XPATH, "//*[@id='submit']/")));

通过JavaScript操作DOM

在Selenium中可以执行JavaScript代码,配合XPath来查找或修改DOM元素。

解析日志文件

测试生成的日志文件也常常是XML格式,可以使用XPath解析日志,获取执行结果等。

xpath应用实际案例

龙测科技最近服务了一家跨境电商。大家都知道跨境面对的第一个问题就是语言。软件测试工程师们在进行UI功能测试时,如何保证中文、英文、法文等多语言测试的准确性,这是一个难题。目前,我们了解到的市面上的解法大概有这么几个。

1.以xpath为主,确保文本位置不懂,控件显示,辅以UI自动化,断言图片是否正确

2.借助翻译平台,保证多语言被翻译,最后判断文案是否属于对应语种

3.凭借开发规范,对所有文字通过资源文件配置,最后通过静态代码扫描的方式实现多语言适自动化检测

我们使用的就是第一种方案,借助xpath的能力确保文本显示以及文本位置不偏移,再借助图片断言的方式判断文本显示的正确性。这个方案的准确性很高,但是需要AI成本投入,目前我们能做到中英文的完全自动化,但是其他语言还需要多多训练。

http://www.lryc.cn/news/194996.html

相关文章:

  • CSS基础详细解析(附带综合小练习)
  • react中ant.design框架配置动态路由
  • Linux运行环境搭建系列-Openresty安装
  • React TreeSelect设置默认展开项的方法
  • Golang基础学习笔记
  • ES _bulk 批量操作用法
  • LCR 176.判断是否为平衡二叉树
  • 跨境商城源码有哪些独特的功能和优势
  • latex如何对.pdf格式的图片实现裁剪
  • windows10下 iperf3测试带宽
  • Stratasys F170 3D打印教程
  • 以太坊 CALL 数据解析【ETH】
  • Xilinx IP 10G Ethernet PCS/PMA IP Core
  • 软件设计师_面向对象_学习笔记
  • 行业追踪,2023-10-16
  • ubuntu深度学习配置
  • 大数据flink篇之三-flink运行环境安装后续一yarn-session安装
  • Chrome Extensions v3 迁移清单
  • TCP/IP(十二)TCP的确认、超时、重传机制
  • C/C++陷阱——临时变量的产生和特性
  • 【音视频|ALSA】SS528开发板编译Linux内核ALSA驱动、移植alsa-lib、采集与播放usb耳机声音
  • C/C++基础讲解(一百三十一)之经典篇(信息合并/平均分数存储)
  • 【ROS】使用vscode浏览navigation2源码时,提示:没有那个文件或目录
  • ARM-day9作业
  • ORA-00600: internal error code, arguments
  • C#里氏替换
  • Java-使用sqlSessionTemplate实现批量更新-模拟mybatis 动态sql
  • Eslint配置 Must use import to load ES Module(已解决)
  • 正向代理(流量代理)
  • 易天光通信推出100G BIDI ER光模块最新解决方案