Class: AngularWebdriver::By
- Inherits:
-
Object
- Object
- AngularWebdriver::By
- Defined in:
- lib/angular_webdriver/protractor/by.rb
Class Method Summary collapse
-
.binding(binding_descriptor) ⇒ Object
Find an element by binding.
-
.buttonText(search_text) ⇒ buttonText: search_text
Find a button by text.
-
.class(what) ⇒ Object
Selenium locators.
- .class_name(what) ⇒ Object
- .css(what) ⇒ Object
-
.cssContainingText(css_selector, search_text) ⇒ cssContainingText: { cssSelector: css_selector, searchText: search_text }
Find elements by CSS which contain a certain string.
-
.deepCss(selector) ⇒ Object
Find an element by css selector within the Shadow DOM.
-
.exactBinding(binding_descriptor) ⇒ Object
Find an element by exact binding.
-
.exactRepeater(repeat_descriptor) ⇒ Object
Find an element by exact repeater.
- .id(what) ⇒ Object
- .link(what) ⇒ Object
- .link_text(what) ⇒ Object
-
.model(model_expression) ⇒ model: model_expression
Find an element by ng-model expression.
- .name(what) ⇒ Object
-
.options(options_descriptor) ⇒ Object
Find an element by ng-options expression.
- .partial_link_text(what) ⇒ Object
-
.partialButtonText(search_text) ⇒ partialButtonText: search_text
Find a button by partial text.
-
.repeater(repeat_descriptor) ⇒ Object
Find elements inside an ng-repeat.
- .tag_name(what) ⇒ Object
- .xpath(what) ⇒ Object
Class Method Details
.binding(binding_descriptor) ⇒ Object
Find an element by binding. Does a partial match, so any elements bound to
variables containing the input string will be returned.
Note: For AngularJS version 1.2, the interpolation brackets, usually {{}},
are allowed in the binding description string. For Angular version 1.3, they
are not allowed, and no elements will be found if they are used.
@view
<span>{{person.name}}</span>
<span ng-bind="person.email"></span>
@example
span1 = element(by.binding('person.name'))
expect(span1.text).to eq('Foo')
span2 = element(by.binding('person.email'))
expect(span2.text.to eq('[email protected]')
# You can also use a substring for a partial match
span1alt = element(by.binding('name'))
expect(span1alt.text).to eq('Foo')
# This works for sites using Angular 1.2 but NOT 1.3
deprecatedSyntax = element(by.binding('{{person.name}}'))
@param binding_descriptor <String>
@return { binding: binding_descriptor }
81 82 83 |
# File 'lib/angular_webdriver/protractor/by.rb', line 81 def binding binding_descriptor { binding: binding_descriptor } end |
.buttonText(search_text) ⇒ buttonText: search_text
Find a button by text.
<button>Save</button>
element(by.buttonText(‘Save’))
130 131 132 |
# File 'lib/angular_webdriver/protractor/by.rb', line 130 def search_text { buttonText: search_text } end |
.class(what) ⇒ Object
Selenium locators
9 10 11 |
# File 'lib/angular_webdriver/protractor/by.rb', line 9 def class what { class: what } end |
.class_name(what) ⇒ Object
13 14 15 |
# File 'lib/angular_webdriver/protractor/by.rb', line 13 def class_name what { class_name: what } end |
.css(what) ⇒ Object
17 18 19 |
# File 'lib/angular_webdriver/protractor/by.rb', line 17 def css what { css: what } end |
.cssContainingText(css_selector, search_text) ⇒ cssContainingText: { cssSelector: css_selector, searchText: search_text }
Find elements by CSS which contain a certain string.
@view
<ul>
<li class="pet">Dog</li>
<li class="pet">Cat</li>
</ul>
@example
# Returns the li for the dog, but not cat.
dog = element(by.cssContainingText('.pet', 'Dog'))
184 185 186 187 188 189 |
# File 'lib/angular_webdriver/protractor/by.rb', line 184 def cssContainingText css_selector, search_text # the "what" must be a string or watir will complain it's not a valid what. # even if watir is patched to accept hashes, the what will be converted # to a string by the time it's seen by selenium webdriver. { cssContainingText: { cssSelector: css_selector, searchText: search_text }.to_json } end |
.deepCss(selector) ⇒ Object
Find an element by css selector within the Shadow DOM.
<div>
<span id="outerspan">
<"shadow tree">
<span id="span1"></span>
<"shadow tree">
<span id="span2"></span>
</>
</>
</div> spans = element.all(by.deepCss(‘span’)); expect(spans.count()).to eq(3);
283 284 285 286 |
# File 'lib/angular_webdriver/protractor/by.rb', line 283 def deepCss selector # TODO: syntax will change from /deep/ to >>> at some point. { css: '* /deep/ ' + selector } end |
.exactBinding(binding_descriptor) ⇒ Object
Find an element by exact binding.
<span>person.name }</span> <span ng-bind=“person-email”></span> <span>{person_phone|uppercase}</span>
expect(element(by.exactBinding(‘person.name’)).present?).to eq(true); expect(element(by.exactBinding(‘person-email’)).present?).to eq(true); expect(element(by.exactBinding(‘person’)).present?).to eq(false); expect(element(by.exactBinding(‘person_phone’)).present?).to eq(true); expect(element(by.exactBinding(‘person_phone|uppercase’)).present?).to eq(true); expect(element(by.exactBinding(‘phone’)).present?).to eq(false);
@param binding_descriptor <String>
@return { exactBinding: binding_descriptor }
102 103 104 |
# File 'lib/angular_webdriver/protractor/by.rb', line 102 def exactBinding binding_descriptor { exactBinding: binding_descriptor } end |
.exactRepeater(repeat_descriptor) ⇒ Object
Find an element by exact repeater.
@view
<li ng-repeat="person in peopleWithRedHair"></li>
<li ng-repeat="car in cars | orderBy:year"></li>
@example
expect(element(by.exactRepeater('person in peopleWithRedHair')).present?)
.to eq(true);
expect(element(by.exactRepeater('person in people')).present?).to eq(false);
expect(element(by.exactRepeater('car in cars')).present?).to eq(true);
@param {string} repeatDescriptor
@return {{findElementsOverride: findElementsOverride, toString: Function|string}}
263 264 265 |
# File 'lib/angular_webdriver/protractor/by.rb', line 263 def exactRepeater repeat_descriptor ByRepeaterInner.new exact: true, repeat_descriptor: repeat_descriptor end |
.id(what) ⇒ Object
21 22 23 |
# File 'lib/angular_webdriver/protractor/by.rb', line 21 def id what { id: what } end |
.link(what) ⇒ Object
25 26 27 |
# File 'lib/angular_webdriver/protractor/by.rb', line 25 def link what { link: what } end |
.link_text(what) ⇒ Object
29 30 31 |
# File 'lib/angular_webdriver/protractor/by.rb', line 29 def link_text what { link_text: what } end |
.model(model_expression) ⇒ model: model_expression
Find an element by ng-model expression.
<input type=“text” ng-model=“person.name”>
input = element(by.model(‘person.name’)) input.send_keys(‘123’) expect(input.value).to eq(‘Foo123’)
147 148 149 |
# File 'lib/angular_webdriver/protractor/by.rb', line 147 def model model_expression { model: model_expression } end |
.name(what) ⇒ Object
33 34 35 |
# File 'lib/angular_webdriver/protractor/by.rb', line 33 def name what { name: what } end |
.options(options_descriptor) ⇒ Object
Find an element by ng-options expression.
@alias by.options(optionsDescriptor)
@view
<select ng-model="color" ng-options="c for c in colors">
<option value="0" selected="selected">red</option>
<option value="1">green</option>
</select>
@example
allOptions = element.all(by.options('c for c in colors')).to_a
expect(allOptions.length).to eq(2);
firstOption = allOptions.first
expect(firstOption.text).to eq('red')
@param options_descriptor <String> ng-options expression.
@return { options: options_descriptor }
168 169 170 |
# File 'lib/angular_webdriver/protractor/by.rb', line 168 def { options: } end |
.partial_link_text(what) ⇒ Object
37 38 39 |
# File 'lib/angular_webdriver/protractor/by.rb', line 37 def partial_link_text what { partial_link_text: what } end |
.partialButtonText(search_text) ⇒ partialButtonText: search_text
Find a button by partial text.
<button>Save my file</button>
element(by.partialButtonText(‘Save’))
116 117 118 |
# File 'lib/angular_webdriver/protractor/by.rb', line 116 def partialButtonText search_text { partialButtonText: search_text } end |
.repeater(repeat_descriptor) ⇒ Object
Find elements inside an ng-repeat.
@view
<div ng-repeat="cat in pets">
<span>{{cat.name}}</span>
<span>{{cat.age}}</span>
</div>
<div class="book-img" ng-repeat-start="book in library">
<span>{{$index}}</span>
</div>
<div class="book-info" ng-repeat-end>
<h4>{{book.name}}</h4>
<p>{{book.blurb}}</p>
</div>
@example
// Returns the DIV for the second cat.
secondCat = element(by.repeater('cat in pets').row(1));
// Returns the SPAN for the first cat's name.
firstCatName = element(by.repeater('cat in pets').
row(0).column('cat.name'));
// Returns a promise that resolves to an array of WebElements from a column
ages = element.all(
by.repeater('cat in pets').column('cat.age'));
// Returns a promise that resolves to an array of WebElements containing
// all top level elements repeated by the repeater. For 2 pets rows resolves
// to an array of 2 elements.
rows = element.all(by.repeater('cat in pets'));
// Returns a promise that resolves to an array of WebElements containing all
// the elements with a binding to the book's name.
divs = element.all(by.repeater('book in library').column('book.name'));
// Returns a promise that resolves to an array of WebElements containing
// the DIVs for the second book.
bookInfo = element.all(by.repeater('book in library').row(1));
// Returns the H4 for the first book's name.
firstBookName = element(by.repeater('book in library').
row(0).column('book.name'));
// Returns a promise that resolves to an array of WebElements containing
// all top level elements repeated by the repeater. For 2 books divs
// resolves to an array of 4 elements.
divs = element.all(by.repeater('book in library'));
@param {string} repeatDescriptor
@return {{findElementsOverride: findElementsOverride, toString: Function|string}}
244 245 246 |
# File 'lib/angular_webdriver/protractor/by.rb', line 244 def repeater repeat_descriptor ByRepeaterInner.new exact: false, repeat_descriptor: repeat_descriptor end |
.tag_name(what) ⇒ Object
41 42 43 |
# File 'lib/angular_webdriver/protractor/by.rb', line 41 def tag_name what { tag_name: what } end |
.xpath(what) ⇒ Object
45 46 47 |
# File 'lib/angular_webdriver/protractor/by.rb', line 45 def xpath what { xpath: what } end |