Tricentis Tosca中如何遍历相同XPath匹配的多个控件元素
Tricentis Tosca多匹配元素遍历方案
Tricentis Tosca原生支持同一定位规则匹配多元素的遍历能力,和Selenium的findElementsBy方法逻辑对等。你遇到的more than one control found for action是默认单控件模式下的常规报错:默认配置中测试对象预期仅匹配1个页面元素,当定位规则匹配到多个元素时,引擎无法确定唯一操作目标就会抛出该提示。
多元素遍历配置步骤
要实现多元素遍历,首先要把对应测试对象切换为集合模式:
- 打开使用该XPath的测试对象属性面板
- 找到
IsCollection参数,将值设置为True,保存后该测试对象就会代表所有匹配当前XPath的元素集合,无匹配数量限制,你提到的匹配5个元素的场景可直接支持。
集合常用操作方式
配置为集合模式后,可通过以下方式操作元素:
- 获取集合总长度:直接读取集合的
Count属性即可,语法为{控件名.Count},你的场景下该表达式返回值为5 - 按索引取单个元素:Tosca集合索引从1开始计数,访问单个元素的语法为
{控件名.Item[索引值]},比如取第2个匹配元素就写{控件名.Item[2]},配合Tosca标准库自带的For循环、While循环模块,即可逐个遍历元素执行点击、输入、取值、校验等操作 - 批量执行相同操作:如果不需要单独处理每个元素,要对所有匹配元素执行同一操作(比如批量勾选复选框、批量提取文本),不需要额外编写循环逻辑,直接将操作步骤的目标指向集合控件即可,操作会自动批量作用到所有匹配元素。
非遍历场景的报错修复
如果你没有遍历需求,仅需要操作多个匹配结果中的某一个,不需要修改IsCollection属性,任选一种方式调整定位规则即可消除报错:
- 在原有XPath外层补充索引限定,比如要操作第一个匹配元素,将XPath修改为
(你的原XPath)[1],确保XPath仅返回单个元素 - 给测试对象补充其他唯一识别属性(比如元素文本、专属class、业务自定义属性等),缩小匹配范围直到仅定位到目标元素。
内容的提问来源于stack exchange,提问作者CCC
相关产品推荐
相关产品推荐

