Wicket 9页面渲染测试:如何查找组件、链接等对应的componentPath路径
Wicket Tester componentPath获取方法
路径基本规则
Wicket的组件路径是组件在页面组件树中的层级标识,从页面根的直接子组件开始,每一级嵌套的组件wicket:id用冒号:拼接。
你给出的模板里optionLink是options组件的子组件,所以基础路径结构是[options组件的路径]:optionLink。
绝大多数人暴力尝试失败的原因是忽略了循环渲染组件的索引后缀:如果你的options是ListView、RepeatingView这类重复渲染组件,每一条渲染出来的子项都会自动加上数字索引,比如第1条(索引从0开始)的路径是options:0,对应内部的optionLink路径就是options:0:optionLink。
不用暴力尝试的精准获取方法
方法1:开发模式直接查看页面元素
开启Wicket开发模式后,渲染出的页面元素会自动带上wicketpath属性,直接在浏览器右键检查你要测试的a标签,复制该属性的值就是可以直接用的componentPath。
方法2:测试代码打印全量组件路径
在测试代码中渲染完页面后,直接遍历打印所有组件的路径,精准定位目标:
// 假设你已经用tester渲染了页面,拿到页面对象 Page page = tester.getLastRenderedPage(); page.visitChildren((component, visit) -> { System.out.println(component.getPath() + " | " + component.getId()); });
运行测试后在控制台找到id为optionLink的行,复制前面的路径即可。
示例调用
如果你要模拟点击第1个options项的链接,代码如下:
tester.executeAjaxEvent("options:0:optionLink", "click");
内容的提问来源于stack exchange,提问作者miroana
相关产品推荐
相关产品推荐

