- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我真的不知道这个异常的原因是什么以及它的副作用是什么。但每次即使所有测试用例都通过了,它也会出现。请帮忙弄清楚如何解决这个问题 -
[launcher] Error: TypeError: Cannot read property 'headerPrinter' of undefined
at printHeader (C:\automation\tests\node_modules\protractor-console\dist\protractor-console.js:81:8)
at C:\automation\tests\node_modules\protractor-console\dist\protractor-console.js:56:19
at [object Object].promise.ControlFlow.runInFrame_ (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1877:20)
at [object Object].promise.Callback_.goog.defineClass.notify (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:2464:25)
at [object Object].promise.Promise.notify_ (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:563:12)
at Array.forEach (native)
at Object.goog.array.forEach (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\array\array.js:203:43)
at [object Object].promise.Promise.notifyAll_ (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:552:16)
at goog.async.run.processWorkQueue (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:125:21)
at runMicrotasksCallback (node.js:337:7)
[launcher] Process exited with error code 100
Protractor 配置:
//-=-=-=- Packages -=-=-=-
var path = require('path');
var fs = require('fs');
var HtmlReporter = require('protractor-html-screenshot-reporter');
var util = require('util');
var Imap = require('imap'),
inspect = require('util').inspect;
var MailParser = require("mailparser").MailParser;
var MailListener = require("mail-listener2");
var log_file = fs.createWriteStream('c:\\automation\\tests\\' + '/emailResponses.log', {flags : 'w'});
// var log_exceptions = fs.createWriteStream('c:\\automation\\tests\\' + '/exceptions.log', {flags : 'w'});
var log_stdout = process.stdout;
//-=-=-=- Helpers -=-=-=-
captureScreen = function(name){
browser.driver.takeScreenshot().then(function(data){
var base64Data = data.replace(/^data:image\/png;base64,/,"");
return browser.getCapabilities().then(function (cap) {
var fname = name + "-" + cap.caps_.browserName + ".png";
fs.writeFile(fname, base64Data, 'base64', function(err) {
if(err) console.log(err);
});
});
});
}
waitPageToLoad = function(){
browser.driver.manage().timeouts().pageLoadTimeout(60000);
}
getLastEmail = function() {
var deferred = protractor.promise.defer();
console.log("Waiting for an email...");
mailListener.on("mail", function(mail){
deferred.fulfill(mail);
});
return deferred.promise;
};
// -=-=- Testing configuration -=-=-
exports.config = {
chromeDriver: 'npm/node_modules/protractor/selenium/chromedriver',
chromeOnly: false,
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['c:\\automation\\tests\\frontageSanity.js'],
plugins: [{
package: 'C:\\automation\\tests\\node_modules\\protractor-console',
logLevels: ['severe', 'warning']
}],
// directConnect: true,
multiCapabilities: [{
// 'browserName': 'firefox',
// 'cli': {
// 'args': ['webdriver.firefox.useExisting=default', '-jsconsole', '-jsdebugger']
// }},
// }
// {
'browserName': 'chrome',
'chromeOptions': {
args: ['--no-sandbox','--test-type','--memory-metrics','--console','--crash-on-failure'],
// '--load-extension=' + 'C:\\Users\\idan\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Extensions\\idgpnmonknjnojddfkpgkljpfnnfcklj\\1.2.4_0'
prefs: {
download: {
'prompt_for_download': false,
'directory_upgrade': true,
'default_directory': 'C:\\automation\\tests\\downloaded\\'
}
}
}
// },
// {
// 'browserName': 'internet explorer',
// 'platform': 'ANY',
// 'version': '12'
}],
framework: "jasmine",
allScriptsTimeout: 90000,
getPageTimeout: 90000,
// -=-=- Pre-Conditions & Tools configurations -=-=-
onPrepare: function() {
//-=-=-=- HTML Reporter -=-=-=-
jasmine.getEnv().addReporter(new HtmlReporter({
baseDirectory: 'C:\\automation\\tests\\HtmlReporter\\',
// takeScreenShotsOnlyForFailedSpecs: true,
docTitle: 'vCita - Sanity testing report',
docName: 'Test_Report.html',
cssOverrideFile: 'htmlReporter_css.css'
}));
browser.driver.manage().window().maximize();
browser.getCapabilities().then(function (cap) {
browser.browserName = cap.caps_.browserName;
});
// -=-=-=- Email Listener - here goes your email connection configuration -=-=-=-
var mailListener = new MailListener({
username: "username",
password: "password",
host: "imap.gmail.com",
port: 993, // imap port
tls: true,
tlsOptions: { rejectUnauthorized: false },
mailbox: "INBOX", // mailbox to monitor
// searchFilter: ["UNSEEN", "FLAGGED"], // the search filter being used after an IDLE notification has been retrieved
markSeen: true, // all fetched email willbe marked as seen and not fetched next time
fetchUnreadOnStart: true, // use it only if you want to get all unread email on lib start. Default is `false`,
// mailParserOptions: {streamAttachments: true}, // options to be passed to mailParser lib.
// attachments: true, // download attachments as they are encountered to the project directory
// attachmentOptions: { directory: "attachments/" } // specify a download directory for attachments
});
mailListener.start();
mailListener.on("server:connected", function(){
console.log("imapConnected");
});
mailListener.on("server:disconnected", function(){
console.log("imapDisconnected");
});
mailListener.on("mail", function(){
// console.log("GO IT!");
});
mailListener.on("mail", function(mail, seqno, attributes){
// do something with mail object including attachments
console.log("emailParsed", mail)
// mail processing code goes here
log_file.write(util.format(mail));
log_stdout.write(util.format(mail));
});
global.mailListener = mailListener;
},
// onCleanUp: function () {
// mailListener.stop();
// },
// -=-=- Node JS Settings -=-=-
jasmineNodeOpts: {
onComplete: function () {
mailListener.stop();
},
// If true, display spec names.
isVerbose: true,
// If true, print colors to the terminal.
showColors: true,
// If true, include stack traces in failures.
includeStackTrace: true,
// Default time to wait in ms before a test fails.
defaultTimeoutInterval: 9999999
}
}
最佳答案
您需要安装和使用的软件包名为 protractor-console-plugin
,而不是 Protractor 控制台
。
关于node.js - Protractor - 每次运行后都会出现无法读取未定义的属性 'headerPrinter' 的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36037529/
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!