【问题标题】:Dojo Intern: what is the best way to find widgets or page elements?Dojo Intern:查找小部件或页面元素的最佳方法是什么?
【发布时间】: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


【解决方案1】:

您是否因为不知道在哪里查找而搜索每个小部件,或者您想对具有某些属性的所有小部件应用更改?如果是这样,那么您可以使用 dojo/query (http://dojotoolkit.org/reference-guide/1.9/dojo/query.html) 找到您要查找的项目,然后您可以使用 registry.byId(id) 检索 Widget

【讨论】:

    【解决方案2】:

    如果您想查看所有小部件并禁用它们,我发现效果最好,例如,您可以执行以下操作而不需要知道它们的 ID 或类型,除非您将这些信息用于特定目的,如下所示。

    array.forEach(registry.toArray(), function(item, i) {
    if(item.type != undefined && item.id != 'yourItem')
        item.set('disabled', true);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-23
      • 2011-09-15
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多