Katalon如何校验列表中指定元素的可见性
解决方案
你可以直接修改原有selectItem方法,新增指定索引项的单独可见性校验逻辑,修改后参考代码如下:
def static selectItem(int itemIndex) { // 入参合法性校验 if (itemIndex < 0) { throw new IllegalArgumentException("列表索引不能为负数,传入索引:${itemIndex}") } // 等待列表容器加载可见 WebUI.waitForElementVisible(findTestObject('dashboard/ItemList'), 7, FailureHandling.STOP_ON_FAILURE) // 获取列表下所有子项(包含不可见的项,用于先校验索引是否合法) // 如果你没有对应工具方法,可替换为Katalon原生的WebUI.findWebElements实现 final List<TestObject> allItems = CommonUtils.findElementsFromTestObject(findTestObject('dashboard/ItemList')) // 提前校验索引是否超出列表总长度 if (itemIndex >= allItems.size()) { throw new IndexOutOfBoundsException("列表总长度为${allItems.size()},传入索引${itemIndex}超出范围") } // 单独校验目标索引项的可见性 TestObject targetItem = allItems.get(itemIndex) WebUI.waitForElementVisible(targetItem, 5, FailureHandling.STOP_ON_FAILURE) // 滚动到目标项,确保元素在视口范围内可点击 WebUI.scrollToElement(targetItem, 0) WebUI.click(targetItem) }
逻辑说明
- 如果你要求入参为1基(即调用
selectItem(17)对应点击列表第16项,或者说第17个自然位的项),可在入参校验之后添加itemIndex = itemIndex - 1的索引转换逻辑即可适配你的调用习惯。 - 方法中先获取列表所有子项(包含未渲染可见的项),可以提前判断传入的索引是否合法,避免出现调用时报数组越界的问题。
- 单独对目标项调用
waitForElementVisible,只有对应项可见时才会继续执行,不符合预期会直接终止用例,满足你单独校验指定项可见性的需求。 - 新增的
scrollToElement逻辑可以解决长列表、懒加载列表中元素不在当前视口内的问题,确保点击操作可正常执行。
内容的提问来源于stack exchange,提问作者Uzair Farooqi
相关产品推荐
相关产品推荐

