Как глобально добавить пользовательский локатор в Protractor?

Я написал собственный локатор для Protractor, который находитanchor элементы ихui-sref значение. В моих спецификациях я просто использовалby.addLocator добавить пользовательский локатор, но я подумал, что это может быть круто опубликовать, и другие люди будут его использовать.

Цель состоит в том, чтобы добавить этот пользовательский локатор в глобальный объект Protractor, чтобы его можно было использовать в любой из ваших спецификаций.

Мой первоначальный подход состоял в том, чтобы добавить эту функциональность вonPrepare блок Конфигуратор транспортира. Что-то вроде псевдокода ниже:

onPrepare: function () {
  require('ui-sref-locator')(protractor); // The protractor object is available here.
}

Это требование требует просто выполнить эту функцию:

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;
  });
};

Проблема в том, чтоby не определено наprotractor объект доступен вonPrepare блок. Это означает, что я не могу использовать.addLocator метод.

Ответы на вопрос(2)

Ваш ответ на вопрос