2013-12-05 4 views
2

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

Например, у меня есть следующий тестовый фрагмент:

var mainItem = "Menu 1"; 
var subItem = "Sub Menu 1"; 
var mainItemId = ""; 
       return this.remote 
       .elementByXPath("//*[contains(text(),'" + mainItem + "')]/ancestor::*[@dojoattachpoint='focusNode']") 
        .getAttribute("id") 
        .then(function(id){ mainItemId = id; }) 
        .clickElement() 
        .end() 
       .wait(500) 
       .then(function(){ console.log(mainItemId); }) 
       .elementByXPath("//*[contains(text(),'" + subItem + "')][ancestor::*[@dijitpopupparent='" + mainItemId + "']]") 
        .clickElement() 
        .end() 

В принципе, когда я запустить тест, значение mainItemId протоколирует правильно, но второй elementByXPath не будет найден. Если я инициализирую mainItemId с тем же значением, работает xpath. Основываясь на том, что я вижу, его как будто mainItemId сохранит значение только в контексте .then().

Спасибо.

ответ

1

Все методы remote неблокируются и выполняются немедленно при вызове функции тестирования. mainItemId не установлен до выполнения 4-й команды. Если вам необходимо выполнить запрос, который зависит от данных, полученных из более ранней команды, вам необходимо сделать это в обратном вызове:

var mainItem = "Menu 1"; 
var subItem = "Sub Menu 1"; 
var mainItemId = ""; 
var remote = this.remote; 
return remote 
    .elementByXPath("//*[contains(text(),'" + mainItem + "')]/ancestor::*[@dojoattachpoint='focusNode']") 
     .getAttribute("id") 
     .then(function(id){ mainItemId = id; }) 
     .clickElement() 
     .end() 
    .wait(500) 
    .then(function(){ 
     return remote.elementByXPath("//*[contains(text(),'" + subItem + "')][ancestor::*[@dijitpopupparent='" + mainItemId + "']]") 
      .clickElement() 
      .end() 
    }); 
+0

Отлично работает! Благодаря! – AmanB

Смежные вопросы