On Github samvloeberghs / protractor-slides
Created by Sam Vloeberghs / @samvloeberghs
Questions?
mail / hangout (sam.vloeberghs) follow / tweet @samvloeberghs connect
vs
Based on the styleguide by Carmen Popoviciu
All operations are async!
element(by.id('addbutton')); // <button id="addbutton"></button> element(by.css('some-css')); // <some-css></some-css> element(by.css('.special')); // <span class="special"></span> element(by.model('name')); // <span ng-model="item.name"></span> element(by.binding('name')); // <span ng-bind="item.name"></span> element(by.css('my-css')); // is the same as $('my-css'); // short cut selector ( css selectors )
Protractor documentation : locators
var el = element(locator); // Click on the element el.click(); // Send keys to the element (usually an input) el.sendKeys('my text'); // Clear the text in an element (usually an input) el.clear(); // Get the value of an attribute, for example, get the value of an input el.getAttribute('value');
Protractor documentation : actions
element.all(by.css('.selector')).then(function(elements) { // elements is an array of ElementFinders. }); // Number of elements. element.all(locator).count(); // Get by index (starting at 0). element.all(locator).get(index); // First and last. element.all(locator).first(); element.all(locator).last();
Protractor documentation : multiple elements
/* question.spec.js */ describe('Question page', () => { it('should answer any question', () => { let question = element(by.model('question.text')); let answer = element(by.binding('answer')); let button = element(by.css('.question-button')); question.sendKeys('What is the purpose of life?'); button.click(); expect(answer.getText()).toEqual("Chocolate!"); }); });
/* question.page.js */ var QuestionPage = () => { this.question = element(by.model('question.text')); this.answer = element(by.binding('answer')); this.button = element(by.className('question-button')); this.ask = (question) => { this.question.sendKeys(question); this.button.click(); }; }; module.exports = QuestionPage;
/* question.spec.js */ let QuestionPage = require('./question.page'); describe('Question page', () => { let question = new QuestionPage(); it('should ask any question', () => { question.ask('What is the purpose of meaning?'); expect(question.answer.getText()).toEqual('Chocolate'); }); });
|-- project-folder |-- app |-- home home.html home.module.js home.controller.js |-- contacts contacts.html contacts.module.js contacts.controller.js app.module.js app.controller.js app.css index.html |-- test |-- unit |-- e2e home.pageObject.js home.spec.js contacts.pageObject.js contacts.spec.js
|-- project-folder |-- app |-- home home.html home.module.js home.controller.js |-- contacts contacts.html contacts.module.js contacts.controller.js app.js app.module.js app.controller.js app.css index.html |-- test |-- unit |-- e2e |-- home home.pageObject.js home.spec.js |-- contacts contacts.pageObject.js contacts.spec.js