2015-10-24 2 views
0

Я пишу функциональные тесты с моим файлом в массиве functionalSuite в Intern.js.Не удается получить текст элемента в intern.js с помощью getVisibleText()

У меня есть функция, которая нажимает на URL-адреса и проверяет текст в каком-то элементе заголовка HTML. Тем не менее, тест проходит, утверждает, что 0/3 тестов не удалось, и URL-адрес никогда не будет нажат. Он просто входит в систему и остается там. Я не знаю, что я делаю неправильно.

Это функциональный набор, который бежится

define([ 
    'intern!object', 
    'intern/chai!assert', 
    'intern/dojo/node!fs', 
    'lib/GlobalUtils.js', 
    'headtest/headtest.js' 
], 
function (registerSuite, assert, fs, GlobalUtils, headtest) { 
    registerSuite(function() { 
     var GlobalUtils; 
     var headtest; 
     var testdata; 
     var timeout; 
     var testcases; 

     testcases = 
     { 
      name: 'App Test - headtest', 

      'Setup the Environment': function() { 
       var data = fs.readFileSync('headtest/include/test_data.json', 'utf8'); 
       testdata = JSON.parse(data); 
       timeout = parseInt(testdata.timeout); 
       GlobalUtils = new GlobalUtils(this.remote); 
       headtest = new headtest(this.remote); 
      }, 

      'Log into App': function() { 
       this.timeout = parseInt(testdata.timeout) * 3; 

       return GlobalUtils 
        .login(testdata.username, testdata.password, testdata.sites.mobo_dev, testdata.loginIdentifier) 
        .then(function (result) { 
         assert.ok(result, 'Failed to login.') 
        }); 
      }, 

      'Check Navigation Headers': function() { 
       this.timeout = parseInt(testdata.timeout); 
       var navItems = testdata.navItems; 
       var wasUnmatched = false; 

       for (var i = 0; i < navItems.length; i++) { 
        var result = headtest.check_nav_items(navItems[i], testdata.navHrefHeaderPairMappings); 
        if (result == false) 
         wasUnmatched = true; 
       } 

       return wasUnmatched; 
      } 
     }; 

     return testcases; 
    }); 
}); 

Это headtest.js

define(function(require) { 
    function headtest(remote) { 
     this.remote = remote; 
    } 

    headtest.prototype = { 
     constructor: headtest, 

     check_nav_items: function(key, navTupleTable) { 
      var needle = key.toLowerCase(); 
      var href = navTupleTable[needle][0]; 
      var expect = navTupleTable[needle][1]; 
      var xpath = navTupleTable[needle][2]; 
      var navHeader = this.get_nav_header_text(href, xpath, expect); 

      return navHeader == expect; 
     }, 

     get_nav_header_text: function(href, xpath, expect) { 
      return this.remote 
       .setFindTimeout(5000) 
       .findByXpath('//div[@class="sidebar_nav"]//a[@href="'+ href +'"]/..').click().end() 
       .setFindTimeout(5000) 
       .findByXpath(xpath).getVisibleText() 
       .then(function(text) { 
        console.log(text); 
        assert.strictEqual(text, expect); 
        //return text; 
       }); 
     } 
    }; 

    return headtest; 
}); 

ли я делаю что-то неправильно здесь? Я ожидаю, что в каждой итерации для цикла, чтобы тест щелкнул по N URL-адресам и проверить наличие какого-либо текстового элемента. Однако URL-адрес не нажимается, и проверка не выполняется. Консоль.log (текст) тоже ничего не печатает. Я попытался добавить дополнительную функцию обработки ошибок после , тогда обещал, но он все еще ничего не печатал.

ответ

0

Оказалось, что веб-страница действительно действительно очень медленная. Код работает.

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