无法使用getVisibleText()在intern.js中获取元素文本

时间:2015-10-24 13:35:27

标签: javascript intern

我正在使用我的文件在Intern.js的functionalSuite数组中编写功能测试。

我有一个点击URL并检查某些HTML标题元素中的文本的函数。但是,测试运行,声称0/3测试失败,并且网址永远不会被点击。它只是登录并保持在那里。我不知道自己做错了什么。

这是正在运行的功能套件

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循环迭代中,测试将点击 N URL并检查一些文本元素的存在。但是,没有单击任何URL,也没有进行检查。 console.log(文本)也不打印任何内容。我尝试在然后承诺之后添加额外的错误处理功能,但它仍然没有打印任何内容。

1 个答案:

答案 0 :(得分:0)

事实证明,网页真的很慢。代码正在运行。