Wie füge ich einen benutzerdefinierten Locator global zu Protractor hinzu?
Ich habe einen benutzerdefinierten Locator für Winkelmesser geschrieben, der findetanchor
Elemente durch ihreui-sref
Wert. In meinen Angaben habe ich gerade verwendetby.addLocator
um den benutzerdefinierten Locator hinzuzufügen, aber ich dachte, dass dies eine coole Sache sein könnte, um sie zu veröffentlichen und andere Leute dazu zu bringen, sie zu verwenden.
Ziel ist es, diesen benutzerdefinierten Locator zum globalen Winkelmesser-Objekt hinzuzufügen, damit er in allen Ihren Spezifikationen verwendet werden kann.
Mein anfänglicher Ansatz war es, diese Funktionalität in dieonPrepare
Block der Winkelmesser-Konfiguration. So etwas wie der Pseudocode unten:
onPrepare: function () {
require('ui-sref-locator')(protractor); // The protractor object is available here.
}
Diese require-Anweisung würde nur diese Funktion ausführen:
function (ptorInstance) {
ptorInstance.by.addLocator('uiSref', function (toState, opt_parentElement) {
var using = opt_parentElement || document;
var possibleAnchors = using.querySelectorAll('a[ui-sref="' + toState +'"]');
var result = undefined;
if (possibleAnchors.length === 0) {
result = null;
} else if (possibleAnchors.length === 1) {
result = possibleAnchors[0];
} else {
result = possibleAnchors;
}
return result;
});
};
Das Problem ist, dassby
ist auf dem nicht definiertprotractor
Objekt verfügbar in deronPrepare
Block. Dies bedeutet, dass ich das nicht verwenden kann.addLocator
Methode.