http://theintern.io/:在功能测试中查找 dojo 生成的小部件 id 的最佳方法是什么,我应该使用webdriver“elementBy...”方法还是“dijit/registry”或“dojo/query”?
目前,我正在使用 dijit 注册表遍历所有小部件,直到通过标签值或属性等标识符找到我感兴趣的小部件。但要做到这一点,我只是在迭代这个registry.toArray()
集合,感觉有点粗糙。
例如
return this.remote.get(url)
.execute(function(){
// return the id of a widget by matching label text
var widgetId = null;
require(["dijit/registry"], function(registry){
for (var i = 0; i < registry.toArray().length; i++){
if (registry.toArray()[i].label && registry.toArray()[i].label === "someLabelText"){
widgetId = registry.toArray()[i].get("id");
break;
}
}
});
return widgetId;
})
.elementById(id)
.click()
.end()
.then(function(){
//assert something
})
更新
目前,正在测试的应用程序避免在其页面元素上设置 id,因为使用了多个相同类型的小部件。因此通过其他方式找到它们更难,但我已经通过上面的示例和使用 dojo/query 来管理它,当然我可以使用 xpath。上面的例子是一个粗略的例子,我可以把搜索范围缩小一点。
我只是想知道人们对查找页面元素有什么想法,我一直专注于小部件 ID,但查找任何属性都会有所帮助。例如,也许有一个 Intern 插件可以查找文本?