Невозможно получить текст элемента в intern.js, используя getVisibleText()
Я пишу функциональные тесты с моим файлом в массиве functionsSuite в Intern.js.
У меня есть функция, которая нажимает на 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 не нажимается, и проверка не выполняется. Console.log(текст) тоже ничего не печатает. Я попытался добавить дополнительную функцию обработки ошибок после обещания, но он все равно ничего не печатал.
1 ответ
Оказывается, веб-страница действительно очень медленная. Код работает.