量angular器“无法读取属性”点击“未定义的”

我不能点击一些CSS定位器来操纵他的“math地板”。 请你帮忙。

这个testing的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"> 

这是我的testing –

 it ('onboarding - screen 2', function() { browser.driver.wait(by.css('.industry input[type="radio"]'), 10000); element (by.css('.industry input[type="radio"]'))[Math.floor(Math.random() * (12 - 0 + 1))].click(); //element(by.css("li.ng-scope.icon-laptop > label.ng-binding")).click(); browser.driver.sleep(1000); //element(by.xpath("//div[1]/div/main/div[3]/section/div/form/div[1]/section[2]/div/ul/li[4]/label")).click(); browser.driver.sleep(2000); //element(by.css('input.btn')).click(); browser.driver.sleep(3000); //Capture Screenshoot browser.driver.takeScreenshot().then(function(data){ var base64Data = data.replace(/^data:image\/png;base64,/,""); var fs = require("fs"); fs.writeFile("onboarding-screen2.png", base64Data, 'base64', function(err) { if(err) console.log(err); }); }); }); }); 

量angular器configuration文件

 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 **的exception

 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 

看来你的types收音机的input缺less行业类。

当它被添加testing应该工作,这是一个链接下面的代码在jsfiddle中testing,这是与Jasmine和一个jqLit​​eselect器,但你得到的图片。

 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); }); });