Angularjs 量角器“;Can';t读取属性';单击';“未定义”的定义;
我不能点击一些css定位器来操纵他身上的“数学地板”。 请帮忙 此测试的CSS部分:Angularjs 量角器“;Can';t读取属性';单击';“未定义”的定义;,angularjs,node.js,selenium-webdriver,jasmine,protractor,Angularjs,Node.js,Selenium Webdriver,Jasmine,Protractor,我不能点击一些css定位器来操纵他身上的“数学地板”。 请帮忙 此测试的CSS部分: <input ng-attr-id="industry_{{$index}}" ng-attr-value="{{$index}}" ng-model="stateData.currentIndustryIndex" type="radio" class="ng-pristine ng-valid" name="00K" id="industry_0" value="0"> 量角器配置文件 var
<input ng-attr-id="industry_{{$index}}" ng-attr-value="{{$index}}" ng-model="stateData.currentIndustryIndex" type="radio" class="ng-pristine ng-valid" name="00K" id="industry_0" value="0">
量角器配置文件
var path = require('path');
//var reporters = require('jasmine-reporters');
var HtmlReporter = require('protractor-html-screenshot-reporter');
var fs = require("fs");
exports.config = {
chromeDriver: 'node_modules/protractor/selenium/chromedriver',
chromeOnly: false,
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['demo.js'],
//specs: ['./Scripts/*.js'],
capabilities: {
browserName: 'chrome',
'chromeOptions': {
args: ['--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']
}
},
rootElement: '.main',
framework: "jasmine",
allScriptsTimeout: 10000,
getPageTimeout: 10000,
onPrepare: function() {
browser.driver.manage().window().maximize();
return browser.driver.get('http://www.vcita.com');
jasmine.getEnv().addReporter(new HtmlReporter({
baseDirectory: 'C:\\Users\\idan\\AppData\\Roaming\\npm\\node_modules\\protractor\\example',
docTitle: 'my reporter',
docName: 'protractor-demo-tests-report.html'
}));
// var jasmineReporters = require('jasmine-reporters');
// jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
// consolidateAll: true,
// filePrefix: 'xmloutput',
// savePath: 'C:\\Users\\idan\\AppData\\Roaming\\npm\\node_modules\\protractor\\example\\screenshots'
// }));
},
jasmineNodeOpts: {
onComplete: null,
// 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: 660000
}
}
Package.json
{
"name": "protractor",
"description": "Webdriver E2E test wrapper for Angular.",
"homepage": "https://github.com/angular/protractor",
"keywords": [
"angular",
"test",
"testing",
"webdriver",
"webdriverjs",
"selenium"
],
"author": {
"name": "Julie Ralph",
"email": "ju.ralph@gmail.com"
},
"dependencies": {
"request": "~2.36.0",
"selenium-webdriver": "2.45.1",
"minijasminenode": "1.1.1",
"jasminewd": "1.1.0",
"jasminewd2": "0.0.3",
"jasmine": "2.1.1",
"saucelabs": "~0.1.0",
"glob": "~3.2",
"adm-zip": "0.4.4",
"optimist": "~0.6.0",
"q": "1.0.0",
"lodash": "~2.4.1",
"source-map-support": "~0.2.6",
"html-entities": "~1.1.1",
"accessibility-developer-tools": "~2.6.0"
},
"devDependencies": {
"expect.js": "~0.2.0",
"chai": "~1.8.1",
"chai-as-promised": "~4.1.0",
"jshint": "2.5.0",
"mocha": "1.21.4",
"cucumber": "~0.3.3",
"express": "~3.3.4",
"lodash": "~2.4.1",
"rimraf": "~2.2.6"
},
"repository": {
"type": "git",
"url": "git://github.com/angular/protractor.git"
},
"bin": {
"protractor": "bin/protractor",
"webdriver-manager": "bin/webdriver-manager"
},
"main": "lib/protractor.js",
"scripts": {
"pretest": "jshint lib spec scripts",
"test": "node scripts/test.js",
"start": "node testapp/scripts/web-server.js"
},
"license": "MIT",
"version": "2.0.0",
"gitHead": "1d8f14eb7e3fd7c8607ef1ffa2d6c0b29cc802b1",
"bugs": {
"url": "https://github.com/angular/protractor/issues"
},
"_id": "protractor@2.0.0",
"_shasum": "2f96219bb4517006eaadd5757a06608630464ebc",
"_from": "protractor@*",
"_npmVersion": "1.4.28",
"_npmUser": {
"name": "angularcore",
"email": "angular-core+npm@google.com"
},
"maintainers": [
{
"name": "juliemr",
"email": "ju.ralph@gmail.com"
},
{
"name": "angularcore",
"email": "angular-core+npm@google.com"
}
],
"dist": {
"shasum": "2f96219bb4517006eaadd5757a06608630464ebc",
"tarball": "http://registry.npmjs.org/protractor/-/protractor-2.0.0.tgz"
},
"directories": {},
"_resolved": "https://registry.npmjs.org/protractor/-/protractor-2.0.0.tgz",
"readme": "ERROR: No README data found!"
}
**Node.JS中的异常**
Failures:
1) Login onboarding - screen 2
Message:
TypeError: Cannot read property 'click' of undefined
Stacktrace:
TypeError: Cannot read property 'click' of undefined
at [object Object].<anonymous> (C:\Users\idan\AppData\Roaming\npm\node_modul
es\protractor\example\demo.js:49:100)
at C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\node_modules\ja
sminewd\index.js:94:14
at [object Object].promise.ControlFlow.runInFrame_ (C:\Users\idan\AppData\Ro
aming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\
promise.js:1877:20)
at [object Object].promise.ControlFlow.runEventLoop_ (C:\Users\idan\AppData\
Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdrive
r\promise.js:1755:8)
at [object Object].<anonymous> (C:\Users\idan\AppData\Roaming\npm\node_modul
es\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:2056:12)
at goog.async.run.processWorkQueue (C:\Users\idan\AppData\Roaming\npm\node_m
odules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:125:21)
From: Task: Asynchronous test function: it()
at [object Object].<anonymous> (C:\Users\idan\AppData\Roaming\npm\node_modul
es\protractor\node_modules\jasminewd\index.js:93:33)
at [object Object].<anonymous> (C:\Users\idan\AppData\Roaming\npm\node_modul
es\protractor\node_modules\minijasminenode\lib\async-callback.js:45:37)
at [object Object].jasmine.Block.execute (C:\Users\idan\AppData\Roaming\npm\
node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:1174:1
7)
at [object Object].jasmine.Queue.next_ (C:\Users\idan\AppData\Roaming\npm\no
de_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2209:31)
at onComplete (C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\nod
e_modules\minijasminenode\lib\jasmine-1.3.1.js:2205:18)
at [object Object].jasmine.WaitsForBlock.execute (C:\Users\idan\AppData\Roam
ing\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.j
s:2704:5)
at [object Object]._onTimeout (C:\Users\idan\AppData\Roaming\npm\node_module
s\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2718:12)
Error
at [object Object].<anonymous> (C:\Users\idan\AppData\Roaming\npm\node_modul
es\protractor\example\demo.js:47:2)
at [object Object].jasmine.Env.describe_ (C:\Users\idan\AppData\Roaming\npm\
node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:913:21
)
at [object Object].jasmine.Env.describe (C:\Users\idan\AppData\Roaming\npm\n
ode_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:898:15)
at describe (C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\node_
modules\minijasminenode\lib\jasmine-1.3.1.js:658:27)
at Object.<anonymous> (C:\Users\idan\AppData\Roaming\npm\node_modules\protra
ctor\example\demo.js:3:1)
Finished in 17.105 seconds
3 tests, 3 assertions, 1 failure
[launcher] 0 instance(s) of WebDriver still running
[launcher] chrome #1 failed 1 test(s)
[launcher] overall: 1 failed spec(s)
[launcher] Process exited with error code 1
故障:
1) 登录入职-屏幕2
信息:
TypeError:无法读取未定义的属性“click”
堆栈跟踪:
TypeError:无法读取未定义的属性“click”
在[对象]。(C:\Users\idan\AppData\Roaming\npm\node\u模块
es\dragrator\example\demo.js:49:100)
位于C:\Users\idan\AppData\Roaming\npm\node\u modules\dragrator\node\u modules\ja
sminewd\index.js:94:14
位于[object object].promise.ControlFlow.runInFrame\uC:\Users\idan\AppData\Ro
aming\npm\node\u modules\dragrator\node\u modules\selenium webdriver\lib\webdriver\
允诺.js:1877:20)
位于[object object].promise.ControlFlow.runEventLoop\uC:\Users\idan\AppData\
漫游\npm\node\u模块\dragor\node\u模块\selenium webdriver\lib\webdrive
r\promise.js:1755:8)
在[对象]。(C:\Users\idan\AppData\Roaming\npm\node\u模块
es\dragrator\node\u modules\selenium webdriver\lib\webdriver\promise.js:2056:12)
在goog.async.run.processWorkQueue(C:\Users\idan\AppData\Roaming\npm\node\m
odules\dragrator\node\u modules\selenium webdriver\lib\goog\async\run.js:125:21)
From:Task:Asynchronous test function:it()
在[对象]。(C:\Users\idan\AppData\Roaming\npm\node\u模块
es\dragrator\node\u modules\jasminewd\index.js:93:33)
在[对象]。(C:\Users\idan\AppData\Roaming\npm\node\u模块
es\dragrator\node\u modules\minijasminenode\lib\async callback.js:45:37)
在[object object].jasmine.Block.execute(C:\Users\idan\AppData\Roaming\npm\
node\u modules\dragrator\node\u modules\minijasminenode\lib\jasmine-1.3.1.js:1174:1
7)
在[object object].jasmine.Queue.next(C:\Users\idan\AppData\Roaming\npm\no
deu modules\dragrator\node\u modules\minijasminenode\lib\jasmine-1.3.1.js:2209:31)
完成时(C:\Users\idan\AppData\Roaming\npm\node\u modules\dragrator\nod)
e_modules\minijasminenode\lib\jasmine-1.3.1.js:2205:18)
在[object object].jasmine.WaitsForBlock.execute(C:\Users\idan\AppData\Roam
ing\npm\node\u modules\dragrator\node\u modules\minijasminenode\lib\jasmine-1.3.1.j
s:2704:5)
在[object object]。\u onTimeout(C:\Users\idan\AppData\Roaming\npm\node\u模块
s\dragrator\node\u modules\minijasminenode\lib\jasmine-1.3.1.js:2718:12)
错误
在[对象]。(C:\Users\idan\AppData\Roaming\npm\node\u模块
es\dragrator\example\demo.js:47:2)
在[object object].jasmine.Env.description(C:\Users\idan\AppData\Roaming\npm\
node\u modules\dragrator\node\u modules\minijasminenode\lib\jasmine-1.3.1.js:913:21
)
在[object object].jasmine.Env.description(C:\Users\idan\AppData\Roaming\npm\n
ode_modules\dragrator\node_modules\minijasminenode\lib\jasmine-1.3.1.js:898:15)
在描述(C:\Users\idan\AppData\Roaming\npm\node\u modules\dragrator\node_
modules\minijasminenode\lib\jasmine-1.3.1.js:658:27)
反对。(C:\Users\idan\AppData\Roaming\npm\node\u modules\protra
ctor\example\demo.js:3:1)
以17.105秒完成
3次测试,3次断言,1次失败
[launcher]0个WebDriver实例仍在运行
[launcher]chrome#1测试失败1次
[启动器]总体:1个失败的规范
[launcher]进程已退出,错误代码为1
您输入的radio类型似乎缺少行业级
当它被添加时,测试应该可以工作,下面是一个在jsfiddle中测试的代码,它使用Jasmine和jqLite选择器,但是您得到了图片
describe('Test with industry class',function(){
beforeEach(module('testApp'));
var element, scope;
beforeEach(inject(function($rootScope, $compile) {
element = angular.element('<div><input ng-attr-id="industry_{{$index}}" ng-attr-value="{{$index}}" ng-model="stateData.currentIndustryIndex" type="radio" class="industry ng-pristine ng-valid" name="00K" id="industry_0" value="0"></div>');
scope = $rootScope;
$compile(element)(scope);
scope.$digest();
}));
it("should contain a input of type radio element with a class of industry", function() {
expect(element.find('.industry').length).toEqual(1);
});
});
description('使用行业类进行测试',函数(){
每个之前(模块(“测试程序”);
var元素、范围;
beforeach(注入(函数($rootScope,$compile){
元素=角度。元素(“”);
scope=$rootScope;
$compile(元素)(范围);
范围。$digest();
}));
它(“应包含具有一类工业的无线电元素类型的输入”,function(){
expect(element.find(“.industry”).length.toEqual(1);
});
});
那行吗=>element.all(by.css('.industry-input[type=“radio”]).get(Math.floor(Math.random()*11))。单击();谢谢但是关于“元素不可见”有一个新的异常:/使用检查“元素”是否为空。
describe('Test with industry class',function(){
beforeEach(module('testApp'));
var element, scope;
beforeEach(inject(function($rootScope, $compile) {
element = angular.element('<div><input ng-attr-id="industry_{{$index}}" ng-attr-value="{{$index}}" ng-model="stateData.currentIndustryIndex" type="radio" class="industry ng-pristine ng-valid" name="00K" id="industry_0" value="0"></div>');
scope = $rootScope;
$compile(element)(scope);
scope.$digest();
}));
it("should contain a input of type radio element with a class of industry", function() {
expect(element.find('.industry').length).toEqual(1);
});
});