UNPKG

israeli-bank-scrapers

Version:

Provide scrapers for all major Israeli banks and credit card companies

109 lines (108 loc) 14.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.clickButton = clickButton; exports.clickLink = clickLink; exports.dropdownElements = dropdownElements; exports.dropdownSelect = dropdownSelect; exports.elementPresentOnPage = elementPresentOnPage; exports.fillInput = fillInput; exports.pageEval = pageEval; exports.pageEvalAll = pageEvalAll; exports.setValue = setValue; exports.waitUntilElementDisappear = waitUntilElementDisappear; exports.waitUntilElementFound = waitUntilElementFound; exports.waitUntilIframeFound = waitUntilIframeFound; var _waiting = require("./waiting"); async function waitUntilElementFound(page, elementSelector, onlyVisible = false, timeout) { await page.waitForSelector(elementSelector, { visible: onlyVisible, timeout }); } async function waitUntilElementDisappear(page, elementSelector, timeout) { await page.waitForSelector(elementSelector, { hidden: true, timeout }); } async function waitUntilIframeFound(page, framePredicate, description = '', timeout = 30000) { let frame; await (0, _waiting.waitUntil)(() => { frame = page.frames().find(framePredicate); return Promise.resolve(!!frame); }, description, timeout, 1000); if (!frame) { throw new Error('failed to find iframe'); } return frame; } async function fillInput(pageOrFrame, inputSelector, inputValue) { await pageOrFrame.$eval(inputSelector, input => { const inputElement = input; // @ts-ignore inputElement.value = ''; }); await pageOrFrame.type(inputSelector, inputValue); } async function setValue(pageOrFrame, inputSelector, inputValue) { await pageOrFrame.$eval(inputSelector, (input, value) => { const inputElement = input; // @ts-ignore inputElement.value = value; }, [inputValue]); } async function clickButton(page, buttonSelector) { await page.$eval(buttonSelector, el => el.click()); } async function clickLink(page, aSelector) { await page.$eval(aSelector, el => { if (!el || typeof el.click === 'undefined') { return; } el.click(); }); } async function pageEvalAll(page, selector, defaultResult, callback, ...args) { let result = defaultResult; try { result = await page.$$eval(selector, callback, ...args); } catch (e) { // TODO temporary workaround to puppeteer@1.5.0 which breaks $$eval bevahvior until they will release a new version. if (!e.message.startsWith('Error: failed to find elements matching selector')) { throw e; } } return result; } async function pageEval(pageOrFrame, selector, defaultResult, callback, ...args) { let result = defaultResult; try { result = await pageOrFrame.$eval(selector, callback, ...args); } catch (e) { // TODO temporary workaround to puppeteer@1.5.0 which breaks $$eval bevahvior until they will release a new version. if (!e.message.startsWith('Error: failed to find element matching selector')) { throw e; } } return result; } async function elementPresentOnPage(pageOrFrame, selector) { return (await pageOrFrame.$(selector)) !== null; } async function dropdownSelect(page, selectSelector, value) { await page.select(selectSelector, value); } async function dropdownElements(page, selector) { const options = await page.evaluate(optionSelector => { return Array.from(document.querySelectorAll(optionSelector)).filter(o => o.value).map(o => { return { name: o.text, value: o.value }; }); }, `${selector} > option`); return options; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2FpdGluZyIsInJlcXVpcmUiLCJ3YWl0VW50aWxFbGVtZW50Rm91bmQiLCJwYWdlIiwiZWxlbWVudFNlbGVjdG9yIiwib25seVZpc2libGUiLCJ0aW1lb3V0Iiwid2FpdEZvclNlbGVjdG9yIiwidmlzaWJsZSIsIndhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIiLCJoaWRkZW4iLCJ3YWl0VW50aWxJZnJhbWVGb3VuZCIsImZyYW1lUHJlZGljYXRlIiwiZGVzY3JpcHRpb24iLCJmcmFtZSIsIndhaXRVbnRpbCIsImZyYW1lcyIsImZpbmQiLCJQcm9taXNlIiwicmVzb2x2ZSIsIkVycm9yIiwiZmlsbElucHV0IiwicGFnZU9yRnJhbWUiLCJpbnB1dFNlbGVjdG9yIiwiaW5wdXRWYWx1ZSIsIiRldmFsIiwiaW5wdXQiLCJpbnB1dEVsZW1lbnQiLCJ2YWx1ZSIsInR5cGUiLCJzZXRWYWx1ZSIsImNsaWNrQnV0dG9uIiwiYnV0dG9uU2VsZWN0b3IiLCJlbCIsImNsaWNrIiwiY2xpY2tMaW5rIiwiYVNlbGVjdG9yIiwicGFnZUV2YWxBbGwiLCJzZWxlY3RvciIsImRlZmF1bHRSZXN1bHQiLCJjYWxsYmFjayIsImFyZ3MiLCJyZXN1bHQiLCIkJGV2YWwiLCJlIiwibWVzc2FnZSIsInN0YXJ0c1dpdGgiLCJwYWdlRXZhbCIsImVsZW1lbnRQcmVzZW50T25QYWdlIiwiJCIsImRyb3Bkb3duU2VsZWN0Iiwic2VsZWN0U2VsZWN0b3IiLCJzZWxlY3QiLCJkcm9wZG93bkVsZW1lbnRzIiwib3B0aW9ucyIsImV2YWx1YXRlIiwib3B0aW9uU2VsZWN0b3IiLCJBcnJheSIsImZyb20iLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmaWx0ZXIiLCJvIiwibWFwIiwibmFtZSIsInRleHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBGcmFtZSwgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IHdhaXRVbnRpbCB9IGZyb20gJy4vd2FpdGluZyc7XG5cbmFzeW5jIGZ1bmN0aW9uIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChcbiAgcGFnZTogUGFnZSB8IEZyYW1lLFxuICBlbGVtZW50U2VsZWN0b3I6IHN0cmluZyxcbiAgb25seVZpc2libGUgPSBmYWxzZSxcbiAgdGltZW91dD86IG51bWJlcixcbikge1xuICBhd2FpdCBwYWdlLndhaXRGb3JTZWxlY3RvcihlbGVtZW50U2VsZWN0b3IsIHsgdmlzaWJsZTogb25seVZpc2libGUsIHRpbWVvdXQgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIocGFnZTogUGFnZSwgZWxlbWVudFNlbGVjdG9yOiBzdHJpbmcsIHRpbWVvdXQ/OiBudW1iZXIpIHtcbiAgYXdhaXQgcGFnZS53YWl0Rm9yU2VsZWN0b3IoZWxlbWVudFNlbGVjdG9yLCB7IGhpZGRlbjogdHJ1ZSwgdGltZW91dCB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gd2FpdFVudGlsSWZyYW1lRm91bmQoXG4gIHBhZ2U6IFBhZ2UsXG4gIGZyYW1lUHJlZGljYXRlOiAoZnJhbWU6IEZyYW1lKSA9PiBib29sZWFuLFxuICBkZXNjcmlwdGlvbiA9ICcnLFxuICB0aW1lb3V0ID0gMzAwMDAsXG4pIHtcbiAgbGV0IGZyYW1lOiBGcmFtZSB8IHVuZGVmaW5lZDtcbiAgYXdhaXQgd2FpdFVudGlsKFxuICAgICgpID0+IHtcbiAgICAgIGZyYW1lID0gcGFnZS5mcmFtZXMoKS5maW5kKGZyYW1lUHJlZGljYXRlKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoISFmcmFtZSk7XG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbixcbiAgICB0aW1lb3V0LFxuICAgIDEwMDAsXG4gICk7XG5cbiAgaWYgKCFmcmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGZpbmQgaWZyYW1lJyk7XG4gIH1cblxuICByZXR1cm4gZnJhbWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZpbGxJbnB1dChwYWdlT3JGcmFtZTogUGFnZSB8IEZyYW1lLCBpbnB1dFNlbGVjdG9yOiBzdHJpbmcsIGlucHV0VmFsdWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBwYWdlT3JGcmFtZS4kZXZhbChpbnB1dFNlbGVjdG9yLCAoaW5wdXQ6IEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSBpbnB1dDtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaW5wdXRFbGVtZW50LnZhbHVlID0gJyc7XG4gIH0pO1xuICBhd2FpdCBwYWdlT3JGcmFtZS50eXBlKGlucHV0U2VsZWN0b3IsIGlucHV0VmFsdWUpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZXRWYWx1ZShwYWdlT3JGcmFtZTogUGFnZSB8IEZyYW1lLCBpbnB1dFNlbGVjdG9yOiBzdHJpbmcsIGlucHV0VmFsdWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBwYWdlT3JGcmFtZS4kZXZhbChcbiAgICBpbnB1dFNlbGVjdG9yLFxuICAgIChpbnB1dDogRWxlbWVudCwgdmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IGlucHV0O1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaW5wdXRFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgfSxcbiAgICBbaW5wdXRWYWx1ZV0sXG4gICk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNsaWNrQnV0dG9uKHBhZ2U6IFBhZ2UgfCBGcmFtZSwgYnV0dG9uU2VsZWN0b3I6IHN0cmluZykge1xuICBhd2FpdCBwYWdlLiRldmFsKGJ1dHRvblNlbGVjdG9yLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjbGlja0xpbmsocGFnZTogUGFnZSwgYVNlbGVjdG9yOiBzdHJpbmcpIHtcbiAgYXdhaXQgcGFnZS4kZXZhbChhU2VsZWN0b3IsIChlbDogYW55KSA9PiB7XG4gICAgaWYgKCFlbCB8fCB0eXBlb2YgZWwuY2xpY2sgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWwuY2xpY2soKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHBhZ2VFdmFsQWxsPFI+KFxuICBwYWdlOiBQYWdlIHwgRnJhbWUsXG4gIHNlbGVjdG9yOiBzdHJpbmcsXG4gIGRlZmF1bHRSZXN1bHQ6IGFueSxcbiAgY2FsbGJhY2s6IChlbGVtZW50czogRWxlbWVudFtdLCAuLi5hcmdzOiBhbnkpID0+IFIsXG4gIC4uLmFyZ3M6IGFueVtdXG4pOiBQcm9taXNlPFI+IHtcbiAgbGV0IHJlc3VsdCA9IGRlZmF1bHRSZXN1bHQ7XG4gIHRyeSB7XG4gICAgcmVzdWx0ID0gYXdhaXQgcGFnZS4kJGV2YWwoc2VsZWN0b3IsIGNhbGxiYWNrLCAuLi5hcmdzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIFRPRE8gdGVtcG9yYXJ5IHdvcmthcm91bmQgdG8gcHVwcGV0ZWVyQDEuNS4wIHdoaWNoIGJyZWFrcyAkJGV2YWwgYmV2YWh2aW9yIHVudGlsIHRoZXkgd2lsbCByZWxlYXNlIGEgbmV3IHZlcnNpb24uXG4gICAgaWYgKCEoZSBhcyBFcnJvcikubWVzc2FnZS5zdGFydHNXaXRoKCdFcnJvcjogZmFpbGVkIHRvIGZpbmQgZWxlbWVudHMgbWF0Y2hpbmcgc2VsZWN0b3InKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5hc3luYyBmdW5jdGlvbiBwYWdlRXZhbDxSPihcbiAgcGFnZU9yRnJhbWU6IFBhZ2UgfCBGcmFtZSxcbiAgc2VsZWN0b3I6IHN0cmluZyxcbiAgZGVmYXVsdFJlc3VsdDogYW55LFxuICBjYWxsYmFjazogKGVsZW1lbnRzOiBFbGVtZW50LCAuLi5hcmdzOiBhbnkpID0+IFIsXG4gIC4uLmFyZ3M6IGFueVtdXG4pOiBQcm9taXNlPFI+IHtcbiAgbGV0IHJlc3VsdCA9IGRlZmF1bHRSZXN1bHQ7XG4gIHRyeSB7XG4gICAgcmVzdWx0ID0gYXdhaXQgcGFnZU9yRnJhbWUuJGV2YWwoc2VsZWN0b3IsIGNhbGxiYWNrLCAuLi5hcmdzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIFRPRE8gdGVtcG9yYXJ5IHdvcmthcm91bmQgdG8gcHVwcGV0ZWVyQDEuNS4wIHdoaWNoIGJyZWFrcyAkJGV2YWwgYmV2YWh2aW9yIHVudGlsIHRoZXkgd2lsbCByZWxlYXNlIGEgbmV3IHZlcnNpb24uXG4gICAgaWYgKCEoZSBhcyBFcnJvcikubWVzc2FnZS5zdGFydHNXaXRoKCdFcnJvcjogZmFpbGVkIHRvIGZpbmQgZWxlbWVudCBtYXRjaGluZyBzZWxlY3RvcicpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2VPckZyYW1lOiBQYWdlIHwgRnJhbWUsIHNlbGVjdG9yOiBzdHJpbmcpIHtcbiAgcmV0dXJuIChhd2FpdCBwYWdlT3JGcmFtZS4kKHNlbGVjdG9yKSkgIT09IG51bGw7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRyb3Bkb3duU2VsZWN0KHBhZ2U6IFBhZ2UsIHNlbGVjdFNlbGVjdG9yOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgYXdhaXQgcGFnZS5zZWxlY3Qoc2VsZWN0U2VsZWN0b3IsIHZhbHVlKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZHJvcGRvd25FbGVtZW50cyhwYWdlOiBQYWdlLCBzZWxlY3Rvcjogc3RyaW5nKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBhd2FpdCBwYWdlLmV2YWx1YXRlKG9wdGlvblNlbGVjdG9yID0+IHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxPcHRpb25FbGVtZW50PihvcHRpb25TZWxlY3RvcikpXG4gICAgICAuZmlsdGVyKG8gPT4gby52YWx1ZSlcbiAgICAgIC5tYXAobyA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogby50ZXh0LFxuICAgICAgICAgIHZhbHVlOiBvLnZhbHVlLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gIH0sIGAke3NlbGVjdG9yfSA+IG9wdGlvbmApO1xuICByZXR1cm4gb3B0aW9ucztcbn1cblxuZXhwb3J0IHtcbiAgY2xpY2tCdXR0b24sXG4gIGNsaWNrTGluayxcbiAgZHJvcGRvd25FbGVtZW50cyxcbiAgZHJvcGRvd25TZWxlY3QsXG4gIGVsZW1lbnRQcmVzZW50T25QYWdlLFxuICBmaWxsSW5wdXQsXG4gIHBhZ2VFdmFsLFxuICBwYWdlRXZhbEFsbCxcbiAgc2V0VmFsdWUsXG4gIHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIsXG4gIHdhaXRVbnRpbEVsZW1lbnRGb3VuZCxcbiAgd2FpdFVudGlsSWZyYW1lRm91bmQsXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUVBLGVBQWVDLHFCQUFxQkEsQ0FDbENDLElBQWtCLEVBQ2xCQyxlQUF1QixFQUN2QkMsV0FBVyxHQUFHLEtBQUssRUFDbkJDLE9BQWdCLEVBQ2hCO0VBQ0EsTUFBTUgsSUFBSSxDQUFDSSxlQUFlLENBQUNILGVBQWUsRUFBRTtJQUFFSSxPQUFPLEVBQUVILFdBQVc7SUFBRUM7RUFBUSxDQUFDLENBQUM7QUFDaEY7QUFFQSxlQUFlRyx5QkFBeUJBLENBQUNOLElBQVUsRUFBRUMsZUFBdUIsRUFBRUUsT0FBZ0IsRUFBRTtFQUM5RixNQUFNSCxJQUFJLENBQUNJLGVBQWUsQ0FBQ0gsZUFBZSxFQUFFO0lBQUVNLE1BQU0sRUFBRSxJQUFJO0lBQUVKO0VBQVEsQ0FBQyxDQUFDO0FBQ3hFO0FBRUEsZUFBZUssb0JBQW9CQSxDQUNqQ1IsSUFBVSxFQUNWUyxjQUF5QyxFQUN6Q0MsV0FBVyxHQUFHLEVBQUUsRUFDaEJQLE9BQU8sR0FB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