QTP——使用DOM识别树形节点进行Web测试

简介:

Web测试中,不可避免的会遇到树形节点的识别。如下就是通过IEDevToolBar抓下的一个page的树形结构。

  QTP在对树形结构的节点进行识别时,可以采用DOM(Document Object Model文档对象模型)模型,在DOM中,每个网页元素都对应着一个对象。树结构中每一个元素都被称为一个节点。QTP可以通过DOM来访问HTML标签。在QTP中,访问DOM主要通过使用page测试对象的object属性来进一步访问。

  举个简单的例子:在百度贴吧首页,我们需要获得”热门转帖排行”下的标题。

  代码如下:

'获得贴吧首页热门转帖排行下的所有标题
Set oBj=Browser("贴吧").Page("贴吧page").WebTable("Table").Object
Set oDIV= oBj.getElementsByTagName("DIV")
num=0
For i=0 to oDIV.length-1
If  oDIV(i).innertext="热门转贴排行" then
For j=0 to oDIV(i).NextSibling.ChildNodes.length-1
num=num+1
Datatable.SetCurrentRow(num)
Datatable.Value("innertext")=oDIV(i).NextSibling.ChildNodes(j).innertext   '将获得的标题储存到Datatable中
Next
End If
Next
Set oBj=Nothing
Set oDIV=Nothing

  在这段代码中,就是通过访问贴吧页面下的WebTable对象的Object属性来进一步访问HTML标签的。

我们用到了几个方法和属性:

  getElementsByTagName()方法:返回带有指定标签名的对象的集合。
NextSibling属性:返回处于同级节点下某个元素之后紧跟的元素。
ChildNodes属性:返回指定节点的子节点的节点列表。

  我们借助于IEDevToolBar,可以发现,“热门转帖排行”这一列中,“热门转帖排行”是DIV的innertext,而底下的标题则分别是UL的innertext,因此要访问到UL的节点列表,就需要用到NextSibling属性。

  最后程序运行的结果在Report的Run-Time Data Table中:

  DOM还有很多方法和属性,之前提到了NextSibling,那么还有PreviouSibling;以及NodeName,NodeType,NodeValue等等。

  关于NodeName,NodeType,NodeValue;很多人可能还有很多混淆,这里做些总结:

  Nodetype:返回节点的类型,1为元素,2为属性,3为文本,8注释,9文档
Nodename:返回节点的名称,元素返回的是标签名称,属性返回的是属性名称,文本返回的是#text(innertext),文档返回的是#document
Nodevalue:返回当前节点的值,文本节点返回文本值,属性节点返回属性值,标签和文档节点返回null

  其他的一些方法和属性待大家自己学习DOM后了解。如果大家熟悉DOM的方法和属性,在利用QTP做Web测试时,将会很有益处。


本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
|
6月前
|
存储 关系型数据库 测试技术
玩转n8n测试自动化:核心节点详解与测试实战指南
n8n中节点是自动化测试的核心,涵盖触发器、数据操作、逻辑控制和工具节点。通过组合节点,测试工程师可构建高效、智能的测试流程,提升测试自动化能力。
|
前端开发 JavaScript 区块链
连接区块链节点的 JavaScript 库 web3.js
连接区块链节点的 JavaScript 库 web3.js
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
409 4
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
367 4
|
分布式计算 Hadoop Unix
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
303 1
|
XML JavaScript 测试技术
Web自动化测试框架(基础篇)--HTML页面元素和DOM对象
本文为Web自动化测试入门指南,介绍了HTML页面元素和DOM对象的基础知识,以及如何使用Python中的Selenium WebDriver进行元素定位、操作和等待机制,旨在帮助初学者理解Web自动化测试中的关键概念和操作技巧。
244 1
|
机器人 Shell 开发者
`roslibpy`是一个Python库,它允许非ROS(Robot Operating System)环境(如Web浏览器、移动应用等)与ROS环境进行交互。通过使用`roslibpy`,开发者可以编写Python代码来远程控制ROS节点,发布和订阅话题,以及调用服务。
`roslibpy`是一个Python库,它允许非ROS(Robot Operating System)环境(如Web浏览器、移动应用等)与ROS环境进行交互。通过使用`roslibpy`,开发者可以编写Python代码来远程控制ROS节点,发布和订阅话题,以及调用服务。
|
分布式计算 Hadoop 测试技术
|
存储 安全 数据安全/隐私保护
Web应用程序的会话管理是一种跟踪和识别特定用户与Web服务器之间交互的技术
【5月更文挑战第12天】Python Web开发中,会话管理用于跟踪用户与服务器交互,如Flask框架提供的内置功能。以下是一个简单示例:安装Flask后,设置应用密钥,通过session读写用户状态。例如,创建一个显示和设置用户名称的Web应用,用户提交的名字将保存在会话中。在生产环境中,应安全存储密钥,如使用环境变量。扩展会话管理可借助第三方库实现更多功能,但可能需更多配置。
369 2
|
分布式计算 Hadoop 测试技术