大家好,我对js和量角器有点陌生,我刚刚发现它不能创建和修改文件,所以我想问的问题是:是否可以手动将测试用例逻辑失败写入文本文件,例如:我知道代码不正确,但你会得到我所知道的关于jasmine报告器和xml文件输出的想法,但它只是打印控制台错误。我想要一个自定义的错误,即下面的错误
describe('File output test', function() {
it('should have a title', function() {
browser.ignoreSynchronization=true;
browser.get('https://www.google.com');
});
it('Tests output file',function(){
var searchText = $('#lst-ib');
searchText.sendKeys('Testt')
searchText.sendKeys(protractor.Key.ENTER);
browser.sleep(3000);
if(browser.getTitle() != 'Test')
{
var txtFile = "C:UsersyDesktoptest.txt";
var file = new File(txtFile);
var url = browser.getCurrentUrl();
file.open("w");
file.writeln("Error at " + url);
file.close();
}
});
});
conf文件非常基本:
exports.config = {
framework: 'jasmine',
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['spec.js']
}
因此,我现在只想检查给定的标题,如果它与预期的标题不同,我想将url保存在输出文件中,这样当测试结束时,我就可以检查到底在哪里做了我不想发生的事情。我希望我不是在胡说八道
Protractor在Node.js环境中运行。因此,Node.js所拥有的一切对您来说都是可用的。例如"fs"模块。所以您可以每次手动保存文件,或者(作为更好的选择)编写自定义Jasmine报告程序。您的报告程序将在全局命名空间中公开一些变量或函数,以注册自定义错误,并在测试执行后将它们写入文件中。
尽管我在这里找到了问题的答案,这是我用来测试的示例代码
var fs = require('fs-extra')
var file = 'C:/Users/y/Desktop/test/New folder/output.txt'
var counter = 1;
describe('File output test', function() {
it('should have a title', function() {
browser.ignoreSynchronization=true;
browser.get('https://www.facebook.com');
});
it('Tests output file',function(){
email = 'dame@hotmail.com';
pass = 'test123'
var enterMail = $('#email');
enterMail.sendKeys(email);
var enterPass = $('#pass');
enterPass.sendKeys(pass);
enterPass.sendKeys(protractor.Key.ENTER);
browser.sleep(3000);
if(browser.getTitle() != 'Facebook'){
fs.appendFile(file,counter +'. ' + 'Error at login using: ('+email +') as email and ('+pass+') as password.' + "n" , function (err) {
console.log(err) // => null
})
counter+=1;
}
});
});
我发现了一个允许创建和编辑一些文件或文档的模块fs extra,我设法在一个文件中创建并编写了我的手动输出。这里是fs extra的链接https://github.com/jprichardson/node-fs-extra#mkdirsdir-回调,以防有人需要它欢呼