2016-07-14 7 views
4

In Protractor gibt es $ and $$ convenient shortcuts für CSS-Selektoren:Hinzufügen von benutzerdefinierten Locator Verknüpfungen in Protractor

$(".myclass") // means: element(by.css(".myclass")) 
$$(".myclass") // means: element.all(by.css(".myclass")) 

Ist es möglich, einzuführen benutzerdefinierten Verknüpfungen für andere Locators?


Um genauer zu sein, was passiert, wenn wir eine $r und $$r Abkürzungen für „durch Repeater“ bezeichnet haben sollen. Um der Lage sein, zu schreiben:

$r("item in items") 
$$r("item in items") 

statt:

element(by.repeater("item in items")) 
element.all(by.repeater("item in items")) 

Antwort

4

Um eine Verknüpfung zu erstellen, fügen Sie die benutzerdefinierte Locator auf dem globalen Namensraum und auf dem Prototyp von ElementFinder und ElementArrayFinder:

global.$r = function(selector) { 
    return protractor.element(protractor.by.repeater(selector)); 
}; 

global.$$r = function(selector) { 
    return protractor.element.all(protractor.by.repeater(selector)); 
}; 

ElementFinder.prototype.$$r = function(selector) { 
    return this.all(protractor.by.repeater(selector)); 
}; 

ElementFinder.prototype.$r = function(selector) { 
    return this.element(protractor.by.repeater(selector)); 
}; 

ElementArrayFinder.prototype.$$r = function(selector) { 
    return this.all(protractor.by.repeater(selector)); 
}; 

Verwendung:

$r("item in items") 
$$r("item in items") 
$("#id").$r("item in items") 
$("#id").$$r("item in items") 
Verwandte Themen