- Protractor - Discussion
- Protractor - Useful Resources
- Protractor - Quick Guide
- Protractor - Style Guide for Protractor
- Protractor - Debugging
- Protractor - Objects
- Protractor - Core APIs(Contd..)
- Protractor - Core APIs
- Protractor - Writing the First Test
- Protractor and Selenium Server
- Protractor - Getting Started
- Concepts of Javascript Testing
- Protractor - Introduction
- Protractor - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Protractor - Core APIS(CONTD…)
在本章中,让我们学习一些更核心的征求答者意向书。
Elements API
要素是领先者所暴露的全球功能之一。 这一职能包括一名定位员和以下人员:
ElementFinder, that finds a single element based on the locator.
ElementArrayFinder, that finds an array of elements based on the locator.
上文讨论的上述支助链方法。
Chaining functions of ElementArrayFinder and their descriptions
如下:
element.all(定位器)clone。
如名称所示,这一职能将产生一系列要素即: Element ArrayFinder。
element.all(定位器)all(定位器)。
这项职能基本上回报了一个新的Element ArrayFinder,该笔手术可能空洞或含有儿童内容。 它可以用来选择多个要素,作为以下阵列:
element.all(locator).all(locator) elementArr.all(by.css(‘.childselector’)); // it will return another ElementFindArray as child element based on child locator.
element.all(定位器)filter(filterFn)
如该名称所示,在对Element ArrayFinder的每个要素适用过滤功能后,该机将一个新的ArrayFinder连同所有通过过滤功能的内容交还。 它基本上有两个论点:第一是ElementFinder,第二是指数。 也可在页面物体中使用。
<ul class = "items"> <p class = "one">First</p> <p class = "two">Second</p> <p class = "three">Third</p> </ul>
element.all(by.css( .items p )).filter(function(elem, index) { return elem.getText().then(function(text) { return text === Third ; }); }).first().cpck();
element.all(定位器)get(index)。
在帮助下,我们能够通过指数在ElementArrayFinder中找到一个要素。 请注意,指数从0开始,负指数则总结。
<ul class = "items"> <p>First</p> <p>Second</p> <p>Third</p> </ul>
let pst = element.all(by.css( .items p )); expect(pst.get(0).getText()).toBe( First ); expect(pst.get(1).getText()).toBe( Second );
element.all(定位器)
如名称所示,这将产生第一点要素,用于Element ArrayFinder。 它不会收回基本要素。
<ul class = "items"> <p>First</p> <p>Second</p> <p>Third</p> </ul>
let first = element.all(by.css( .items p )).first(); expect(first.getText()).toBe( First );
element.all(定位器)last()。
如名称所示,这将得到ElementArrayFinder的最后一项内容。 它不会收回基本要素。
<ul class = "items"> <p>First</p> <p>Second</p> <p>Third</p> </ul>
let first = element.all(by.css( .items p )).last(); expect(last.getText()).toBe( Third );
element.all(定位器)。
这笔钱用于在父母内部寻找一系列要素,如果可以连结到美元。
<span class = "parent"> <ul> <p class = "one">First</p> <p class = "two">Second</p> <p class = "three">Third</p> </ul> </span>
let items = element(by.css( .parent )).$$( p );
element.all(定位器)count()。
如名称所示,这将计算由Element ArrayFinder代理的成分数目。 它不会收回基本要素。
<ul class = "items"> <p>First</p> <p>Second</p> <p>Third</p> </ul>
let pst = element.all(by.css( .items p )); expect(pst.count()).toBe(3);
element.all(定位器)。
它将与寻找者匹配。 它能够恢复真实或虚假。 确实,如果存在任何与寻找者和其他人相匹配的因素。
expect($( .item ).isPresent()).toBeTruthy();
element.all(定位器)。
如名称所示,它将归还最相关的定位器。
$( #ID1 ).locator(); // returns by.css( #ID1 ) $( #ID1 ).$( #ID2 ).locator(); // returns by.css( #ID2 ) $$( #ID1 ).filter(filterFn).get(0).cpck().locator(); // returns by.css( #ID1 )
element.all(定位)then(thenFunction)
它将收回由ElementArrayFinder代表的部件。
<ul class = "items"> <p>First</p> <p>Second</p> <p>Third</p> </ul>
element.all(by.css( .items p )).then(function(arr) { expect(arr.length).toEqual(3); });
element.all(定位器)each(每个功能)
如名称所示,它将把投入职能指由ElementArrayFinder代表的每个重要协调人。
<ul class = "items"> <p>First</p> <p>Second</p> <p>Third</p> </ul>
element.all(by.css( .items p )).each(function(element, index) { // It will print First 0, Second 1 and Third 2. element.getText().then(function (text) { console.log(index, text); }); });
element.all(定位器)map(地图功能)。
如名称所示,它将对ElementArrayFinder内部的每一部分适用地图功能。 它有两个论点。 第一是执行框架,第二是指数。
<ul class = "items"> <p>First</p> <p>Second</p> <p>Third</p> </ul>
let items = element.all(by.css( .items p )).map(function(elm, index) { return { index: index, text: elm.getText(), class: elm.getAttribute( class ) }; }); expect(items).toEqual([ {index: 0, text: First , class: one }, {index: 1, text: Second , class: two }, {index: 2, text: Third , class: three } ]);
element.all(定位),reduce(reduceFn)
如名称所示,它将对使用定位器的蓄积器和每个元素适用减少功能。 这项职能将把每个要素减为单一价值。
<ul class = "items"> <p>First</p> <p>Second</p> <p>Third</p> </ul>
let value = element.all(by.css( .items p )).reduce(function(acc, elem) { return elem.getText().then(function(text) { return acc + text + ; }); }, ); expect(value).toEqual( First Second Third );
element.all(定位器)。
如名称所示,它将评估投入是否属于现有基本要素的范围。
<span class = "foo">{{letiableInScope}}</span>
let value = element.all(by.css( .foo )).evaluate( letiableInScope );
element.all(定位器)。
如名称所示,它将确定是否允许对当前基本要素进行估算。
element(by.css( body )).allowAnimations(false);
Chaining functions of ElementFinder and their descriptions
资产组合的功能及其描述
(位置) 包括
如名称所示,这项职能将产生一份标本的复印件。
element(定位器)。
如果该要素不存在,则将归还由该模拟器代表的网络要素,并投掷网络驱动器错误。
<span class="parent"> some text </span>
// All the four following expressions are equivalent. $( .parent ).getWebElement(); element(by.css( .parent )).getWebElement(); browser.driver.findElement(by.css( .parent )); browser.findElement(by.css( .parent ));
(地点)。
它将在父母内部找到一系列要素。
<span class = "parent"> <ul> <p class = "one">First</p> <p class = "two">Second</p> <p class = "three">Third</p> </ul> </span>
let items = element(by.css( .parent )).all(by.tagName( p ));
(地点)element(定位)。
它将在父母中找到要素。
<span class = "parent"> <span class = "child"> Child text <span>{{person.phone}}</span> </span> </span>
// Calls Chain 2 element. let child = element(by.css( .parent )). element(by.css( .child )); expect(child.getText()).toBe( Child text 981-000-568 ); // Calls Chain 3 element. let triple = element(by.css( .parent )). element(by.css( .child )). element(by.binding( person.phone )); expect(triple.getText()).toBe( 981-000-568 );
(定位)all(探测器)。
在请购到美元时,它将在父母内部找到一系列要素。
<span class = "parent"> <ul> <p class = "one">First</p> <p class = "two">Second</p> <p class = "three">Third</p> </ul> </span>
let items = element(by.css( .parent )).$$( p ));
(地点)
在请购美元时,它将在父母内部找到一些要素。
<span class = "parent"> <span class = "child"> Child text <span>{{person.phone}}</span> </span> </span>
// Calls Chain 2 element. let child = element(by.css( .parent )). $( .child )); expect(child.getText()).toBe( Child text 981-000-568 ); // Calls Chain 3 element. let triple = element(by.css( .parent )). $( .child )). element(by.binding( person.phone )); expect(triple.getText()).toBe( 981-000-568 );
(地点)
它将确定该要素是否在网页上列报。
<span>{{person.name}}</span>
expect(element(by.binding( person.name )).isPresent()).toBe(true); // will check for the existence of element expect(element(by.binding( notPresent )).isPresent()).toBe(false); // will check for the non-existence of element
(地点)
这与要素(定位)相同。 唯一的区别是,它将检查分局确定的要素是否存在,而不是现有要素的发现者。
element.all(定位器)。
如名称所示,它将评估投入是否涉及目前基本要素的范围。
<span id = "foo">{{letiableInScope}}</span>
let value = element(by.id( .foo )).evaluate( letiableInScope );
(地点)allowAnimations
如名称所示,它将确定是否允许对当前基本要素进行估算。
element(by.css( body )).allowAnimations(false);
(地点) 等值
如名称所示,它将比较平等的要素。
Locators(by) API
它基本上是一套内容定位战略,通过具有约束力的模式等方法在安热应用中找到要素。
职能及其说明
宣传员APIC的职能如下:
by.addLocator(siteorName,fuctionOrcast)
它将在ProtrcatorBy一案中增加一个定位器,还可以使用元素(如定位器Name(args)。
<button ng-cpck = "doAddition()">Go!</button>
// Adding the custom locator. by.addLocator( buttonTextSimple , function(buttonText, opt_parentElement, opt_rootSelector) { var using = opt_parentElement || document, buttons = using.querySelectorAll( button ); return Array.prototype.filter.call(buttons, function(button) { return button.textContent === buttonText; }); }); element(by.buttonTextSimple( Go! )).cpck();// Using the custom locator.
by. binding
如名称所示,它将通过具有约束力的案文找到一个要素。 将进行部分匹配,以便退还与包含输入指示数的变量有关的任何内容。
<span>{{person.name}}</span> <span ng-bind = "person.email"></span>
var span1 = element(by.binding( person.name )); expect(span1.getText()).toBe( Foo ); var span2 = element(by.binding( person.email )); expect(span2.getText()).toBe( foo@bar.com );
by.exact binding
如名称所示,它将通过确切的约束力找到一个要素。
<spangt;{{ person.name }}</spangt; <span ng-bind = "person-email"gt;</spangt; <spangt;{{person_phone|uppercase}}</span>
expect(element(by.exactBinding( person.name )).isPresent()).toBe(true); expect(element(by.exactBinding( person-email )).isPresent()).toBe(true); expect(element(by.exactBinding( person )).isPresent()).toBe(false); expect(element(by.exactBinding( person_phone )).isPresent()).toBe(true); expect(element(by.exactBinding( person_phone|uppercase )).isPresent()).toBe(true); expect(element(by.exactBinding( phone )).isPresent()).toBe(false);
by.model(modelName)
如名称所示,它将以纳克-模范表达方式找到一个要素。
<input type = "text" ng-model = "person.name">
var input = element(by.model( person.name )); input.sendKeys( 123 ); expect(input.getAttribute( value )).toBe( Foo123 );
by.buttonText
如名称所示,它将按案文找到一个纽州。
<button>Save</button>
element(by.buttonText( Save ));
by.partialButtonText
如名称所示,它将通过部分案文找到一个纽州。
<button>Save my file</button>
element(by.partialButtonText( Save ));
by.repeater>
如名称所示,它将在ng中找到一个元素。
<span ng-repeat = "cat in pets"> <span>{{cat.name}}</span> <span>{{cat.age}}</span> <</span> <span class = "book-img" ng-repeat-start="book in pbrary"> <span>{{$index}}</span> </span> <span class = "book-info" ng-repeat-end> <h4>{{book.name}}</h4> <p>{{book.blurb}}</p> </span>
var secondCat = element(by.repeater( cat in pets ).row(1)); // It will return the DIV for the second cat. var firstCatName = element(by.repeater( cat in pets ). row(0).column( cat.name )); // It will return the SPAN for the first cat s name.
by.exactRepeater
如名称所示,它将找到一个准确重复因素。
<p ng-repeat = "person in peopleWithRedHair"></p> <p ng-repeat = "car in cars | orderBy:year"></p>
expect(element(by.exactRepeater( person in peopleWithRedHair )).isPresent()) .toBe(true); expect(element(by.exactRepeater( person in people )).isPresent()).toBe(false); expect(element(by.exactRepeater( car in cars )).isPresent()).toBe(true);
by.cssContainingText
如名称所示,安保部将发现含有准确载体的内容。
<ul> <p class = "pet">Dog</p> <p class = "pet">Cat</p> </ul>
var dog = element(by.cssContainingText( .pet , Dog )); // It will return the p for the dog, but not for the cat.
by.options (optionsDescriptor)
如名称所示,它将通过权势表达方式找到一个要素。
<select ng-model = "color" ng-options = "c for c in colors"> <option value = "0" selected = "selected">red</option> <option value = "1">green</option> </select>
var allOptions = element.all(by.options( c for c in colors )); expect(allOptions.count()).toEqual(2); var firstOption = allOptions.first(); expect(firstOption.getText()).toEqual( red );
by.deepCSS(selector)
正如名称所示,它将在投影器中找到一个要素。
<span> <span id = "outerspan"> <"shadow tree"> <span id = "span1"></span> <"shadow tree"> <span id = "span2"></span> </> </> </span>
var spans = element.all(by.deepCss( span )); expect(spans.count()).toEqual(3);Advertisements