我想要一个函数返回将用于断言的值
请考虑以下功能:
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');
});
我认为该功能存在一些问题。请任何人在这方面帮助我。
您可以使用以下命令获取控制台日志,然后对其执行断言:
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
使用量角器检查浏览器控制台中没有错误
方法如下:
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"});