2014-03-21 3 views
0

http://theintern.io/: что является лучшим способом для поиска идентификаторов виджетов, созданных dojo, в функциональных тестах, следует ли использовать методы webdriver "elementBy..." или, возможно, "dijit/registry" или "dojo/query"?Dojo Intern: какой лучший способ найти виджеты или элементы страницы?

В настоящее время я использую реестр 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 
    }) 

UPDATE

В настоящее время приложение протестированный избегает настройки идентификаторов на любой, если ее элементы страницы, потому что есть кратна того же типа виджетов используются. Поэтому найти их другими способами сложнее, но я справился с этим примером и с помощью dojo/query, и, конечно, я мог бы использовать xpath. Приведенный выше пример является приблизительным примером, и я мог немного сузить поиск.

Мне просто интересно, какие идеи у людей были для поиска элементов страницы, я сосредоточился на идентификаторах виджета, но поиск любого атрибута был бы полезен. Возможно, есть плагин для Intern, который ищет текст, например?

+0

Хм, это немного смущает. Не могли бы вы рассказать немного больше о том, что вы пытаетесь выполнить, когда вам кажется, что вам нужно перебирать все виджеты страницы, просто чтобы убедиться, что правильный ответ предоставлен для вашей ситуации? –

ответ

0

Просматриваете ли вы каждый виджет, потому что не знаете, где искать, или вы хотите применить изменения ко всем виджетам с определенными атрибутами? Если это так, то вы можете использовать dojo/query (http://dojotoolkit.org/reference-guide/1.9/dojo/query.html), чтобы найти нужный элемент, а затем вы можете получить виджет с помощью registry.byId (id)

0

Что я нахожу для работы лучше всего, если вы хотите просматривать все виджеты и отключать их, например, вы можете сделать следующее и не знать их идентификаторы или типы, если только ниже вы не используете эту информацию для определенной цели.

array.forEach(registry.toArray(), function(item, i) { 
if(item.type != undefined && item.id != 'yourItem') 
    item.set('disabled', true); 
}); 
Смежные вопросы