如何从控制台日志中检索值并在我的量角器测试中断言?

时间:2017-08-24 04:43:45

标签: angularjs protractor assert console.log

我想要一个函数返回将用于断言的值

请考虑以下功能:

function giveWrittenValue(x) {
        var msg;
        x.getAttribute('value').then(function (value) {
            if (value) {
                console.log(value);
                var errorMsg = $('.invalid.error-msg');
                errorMsg.isPresent().then(function (Present) {
                    if (Present) {
                        msg = errorMsg.getText();
                    }
                    else {
                        msg = 'Valid';
                    }
                });
            }
            else {
                msg = 'No input is provided';
            }
            return msg;
        });
    }

我的代码在这里:

it('Provider VAT number validation with invalid VAT number',function () {
        ProviderVatNumber.sendKeys('IMEZ');
        element(by.tagName("body")).click();
        body.click();
        browser.sleep(3000);
        ccc = giveWrittenValue(ProviderVatNumber);
        expect(ccc).toBe('Invalid VAT number');  
});

我认为这个功能存在一些问题。请有人帮我这方面。

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容获取控制台日志,然后对它们执行断言:

browser.manage().logs().get('browser').then(function(browserLog) {
    // Replace the following with an Assert statement
    console.log('log: ' + require('util').inspect(browserLog));
    // expect(browserLog.length).toEqual(0);
});

https://github.com/angular/protractor/blob/master/docs/faq.md#how-can-i-get-hold-of-the-browsers-console

Check there were no errors in the browser console with Protractor

答案 1 :(得分:0)

方法如下:

browser.manage().logs().get('browser').then(function(consoleLogs) {
   // consoleLogs is an array of objects with level and message fields
   // for example in the level property you can also check if it's an error through level.value > 900
});

但问题是:你为什么这样做?测试控制台中显示的内容(特别是在e2e测试中)实际上是一种非常不寻常的做法。 e2e测试不应该测试这些东西。

P.S。请注意,chrome提供了可用于直接测试日志的assert方法:

console.assert(1 > 2, {"message":"1 it's not greater than 2"});