无法使用 getVisibleText() 获取 intern.js 中的元素文本
Cannot get element text in intern.js using getVisibleText()
我正在用 Intern.js 中 functionalSuite 数组中的文件编写功能测试。
我有一个函数可以点击 URL 并检查某些 HTML header 元素中的文本。然而,测试 运行s 声称 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;
});
我是不是做错了什么?我期望在每个 for-loop 迭代中,测试将单击 N URLs 并检查是否存在某些文本元素。但是,没有 URL 被点击,也没有进行检查。 console.log(text) 也不打印任何内容。我尝试在 then 承诺之后添加一个额外的错误处理函数,但它仍然没有打印任何内容。
原来网页真的很慢。代码正在运行。
我正在用 Intern.js 中 functionalSuite 数组中的文件编写功能测试。
我有一个函数可以点击 URL 并检查某些 HTML header 元素中的文本。然而,测试 运行s 声称 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;
});
我是不是做错了什么?我期望在每个 for-loop 迭代中,测试将单击 N URLs 并检查是否存在某些文本元素。但是,没有 URL 被点击,也没有进行检查。 console.log(text) 也不打印任何内容。我尝试在 then 承诺之后添加一个额外的错误处理函数,但它仍然没有打印任何内容。
原来网页真的很慢。代码正在运行。