Dojo Intern:找到小部件或页面元素的最佳方法是什么?

时间:2014-03-21 16:10:51

标签: javascript dojo selenium-webdriver intern

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,但找到任何属性都会有所帮助。也许有一个实习生的插件,例如寻找文字?

2 个答案:

答案 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);
});