glance-selector
Version:
Glance selector library
56 lines (43 loc) • 2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _xpath = require("./lib/xpath");
var _xpath2 = _interopRequireDefault(_xpath);
var _arrayUtils = require("../utils/array-utils");
var _log = require("../log");
var _log2 = _interopRequireDefault(_log);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = {
locator: {
check: function check(_ref) {
var label = _ref.label,
target = _ref.target;
var attributes = target.properties.filter(function (p) {
return isNaN(p) && p.indexOf("attribute-") > -1;
});
return attributes.length > 0;
},
locate: function locate(_ref2) {
var label = _ref2.label,
target = _ref2.target,
scopeElement = _ref2.scopeElement;
var resultHandler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (err, result) {
return result;
};
var attributes = target.properties.filter(function (p) {
return isNaN(p) && p.indexOf("attribute-") > -1;
});
if (attributes.length > 0) {
return (0, _arrayUtils.reduce)(attributes, [], function (result, attribute, callback) {
var key = attribute.slice("attribute-".length);
_log2.default.debug("Searching " + key + " attribute:", label);
return (0, _xpath2.default)(".//*[contains(translate(@" + key + ", 'ABCDEFGHJIKLMNOPQRSTUVWXYZ', 'abcdefghjiklmnopqrstuvwxyz'), translate('" + label + "', 'ABCDEFGHJIKLMNOPQRSTUVWXYZ', 'abcdefghjiklmnopqrstuvwxyz'))]", scopeElement, function (err, r) {
return callback(err, result.concat(r));
});
}, resultHandler);
}
return resultHandler(null, []);
}
}
};