我想要一个函数返回将用于断言的值
请考虑以下功能:
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');
});
我认为这个功能存在一些问题。请有人帮我这方面。
答案 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);
});
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"});