Невозможно получить текст элемента в 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 ответ

Решение

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

Другие вопросы по тегам