Como adicionar globalmente um localizador personalizado ao Transferidor?
Eu escrevi um localizador personalizado para Transferidor que encontraanchor
elementos por suaui-sref
valor. Nas minhas especificações eu apenas useiby.addLocator
para adicionar o localizador personalizado, mas achei que isso pode ser uma coisa interessante de publicar e que outras pessoas o usem.
O objetivo é adicionar esse localizador personalizado ao objeto Transferidor global para que ele possa ser usado em qualquer uma de suas especificações.
Minha abordagem inicial foi adicionar essa funcionalidade noonPrepare
bloco da configuração do transferidor. Algo como o pseudocódigo abaixo:
onPrepare: function () {
require('ui-sref-locator')(protractor); // The protractor object is available here.
}
Essa instrução exigir apenas executaria esta função:
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;
});
};
O problema é queby
não está definido noprotractor
objeto disponível noonPrepare
quadra. Isso significa que não posso usar o.addLocator
método.