http://theintern.io/:如果我使用webdriver "elementBy..."方法或"dijit/registry"或{{3 }?
目前我正在使用dijit注册表遍历所有小部件,直到我找到一个我感兴趣的标签值或属性之类的标识符。但要做到这一点,我一直在迭代"dojo/query"集合,感觉有点粗糙。
e.g。
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
})
更新
目前正在测试的应用程序避免在任何if页面元素上设置id,因为使用了多个相同类型的小部件。因此,通过其他方式找到它们更难,但我通过上面的示例并使用dojo / query来管理它,当然我可以使用xpath。上面的例子是一个粗略的例子,我可以缩小搜索范围。
我只是想知道人们有什么想法来查找页面元素,我一直专注于小部件ID,但找到任何属性都会有所帮助。也许有一个实习生的插件,例如寻找文字?
答案 0 :(得分:0)
您是否正在搜索每个小部件,因为您不知道在哪里查看,或者您是否要对具有特定属性的所有小部件应用更改?如果是这样,那么您可以使用dojo / query(http://dojotoolkit.org/reference-guide/1.9/dojo/query.html)来查找您正在查找的项目,然后您可以使用registry.byId(id)检索Widget
答案 1 :(得分:0)
如果您想要查看所有窗口小部件并禁用它们,我发现效果最佳,例如您可以执行以下操作,而不需要知道其ID或类型,除非您将此信息用于特定目的。
array.forEach(registry.toArray(), function(item, i) {
if(item.type != undefined && item.id != 'yourItem')
item.set('disabled', true);
});