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.

questionAnswers(2)

yourAnswerToTheQuestion