Как глобально добавить пользовательский локатор в 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
метод.