【发布时间】:2014-03-21 16:10:51
【问题描述】:
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 插件可以查找文本?
【问题讨论】:
-
嗯,这有点令人困惑。您能否多谈谈您想要完成的任务,您觉得需要遍历所有页面的小部件,以确保为您的情况提供正确的答案?
标签: javascript dojo selenium-webdriver intern