RanorexSpy XPath查询相同class元素未按DOM结构顺序索引问题咨询
问题原因
Ranorex的默认XPath检索采用广度优先遍历逻辑,会优先返回同一层级的所有匹配元素,再遍历深层嵌套节点,和W3C标准XPath的深度优先(文档顺序)遍历规则不同,不属于Ranorex Spy的bug,是默认优化配置导致的行为差异。
解决方法
- 代码侧直接排序
如果是在自动化脚本中获取元素,可调用Ranorex内置的OrderByDocumentOrder()方法对匹配结果强制按DOM顺序重排,示例代码如下:
// 原始查询 var elementList = Host.Local.Find<Ranorex.WebElement>("/dom[@caption='Document']/body//div[@class='class_sample']"); // 按文档顺序重排 var orderedElementList = elementList.OrderByDocumentOrder();
- 修改Ranorex Spy全局配置
如果需要在Spy工具中直接得到符合DOM顺序的查询结果,可调整工具配置:
- 打开Ranorex Spy,点击顶部菜单栏的【工具】->【选项】
- 切换到【高级】设置页,勾选【XPath评估使用文档顺序】选项
- 保存配置后重新执行XPath查询,返回的元素索引就会和DOM结构顺序保持一致
- XPath显式指定遍历逻辑
不想改全局配置的话,也可以在XPath中补充[position()]标记强制按文档顺序索引,修改后的XPath为:/dom[@caption='Document']/body//div[@class='class_sample'][position()]
内容的提问来源于stack exchange,提问作者JozeStrozer
相关产品推荐
相关产品推荐

