UNPKG

israeli-bank-scrapers-core

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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2FpdGluZyIsInJlcXVpcmUiLCJ3YWl0VW50aWxFbGVtZW50Rm91bmQiLCJwYWdlIiwiZWxlbWVudFNlbGVjdG9yIiwib25seVZpc2libGUiLCJ0aW1lb3V0Iiwid2FpdEZvclNlbGVjdG9yIiwidmlzaWJsZSIsIndhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIiLCJoaWRkZW4iLCJ3YWl0VW50aWxJZnJhbWVGb3VuZCIsImZyYW1lUHJlZGljYXRlIiwiZGVzY3JpcHRpb24iLCJmcmFtZSIsIndhaXRVbnRpbCIsImZyYW1lcyIsImZpbmQiLCJQcm9taXNlIiwicmVzb2x2ZSIsIkVycm9yIiwiZmlsbElucHV0IiwicGFnZU9yRnJhbWUiLCJpbnB1dFNlbGVjdG9yIiwiaW5wdXRWYWx1ZSIsIiRldmFsIiwiaW5wdXQiLCJpbnB1dEVsZW1lbnQiLCJ2YWx1ZSIsInR5cGUiLCJzZXRWYWx1ZSIsImNsaWNrQnV0dG9uIiwiYnV0dG9uU2VsZWN0b3IiLCJlbCIsImNsaWNrIiwiY2xpY2tMaW5rIiwiYVNlbGVjdG9yIiwicGFnZUV2YWxBbGwiLCJzZWxlY3RvciIsImRlZmF1bHRSZXN1bHQiLCJjYWxsYmFjayIsImFyZ3MiLCJyZXN1bHQiLCIkJGV2YWwiLCJlIiwibWVzc2FnZSIsInN0YXJ0c1dpdGgiLCJwYWdlRXZhbCIsImVsZW1lbnRQcmVzZW50T25QYWdlIiwiJCIsImRyb3Bkb3duU2VsZWN0Iiwic2VsZWN0U2VsZWN0b3IiLCJzZWxlY3QiLCJkcm9wZG93bkVsZW1lbnRzIiwib3B0aW9ucyIsImV2YWx1YXRlIiwib3B0aW9uU2VsZWN0b3IiLCJBcnJheSIsImZyb20iLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmaWx0ZXIiLCJvIiwibWFwIiwibmFtZSIsInRleHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBGcmFtZSwgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyLWNvcmUnO1xuaW1wb3J0IHsgd2FpdFVudGlsIH0gZnJvbSAnLi93YWl0aW5nJztcblxuYXN5bmMgZnVuY3Rpb24gd2FpdFVudGlsRWxlbWVudEZvdW5kKFxuICBwYWdlOiBQYWdlIHwgRnJhbWUsXG4gIGVsZW1lbnRTZWxlY3Rvcjogc3RyaW5nLFxuICBvbmx5VmlzaWJsZSA9IGZhbHNlLFxuICB0aW1lb3V0PzogbnVtYmVyLFxuKSB7XG4gIGF3YWl0IHBhZ2Uud2FpdEZvclNlbGVjdG9yKGVsZW1lbnRTZWxlY3RvciwgeyB2aXNpYmxlOiBvbmx5VmlzaWJsZSwgdGltZW91dCB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gd2FpdFVudGlsRWxlbWVudERpc2FwcGVhcihwYWdlOiBQYWdlLCBlbGVtZW50U2VsZWN0b3I6IHN0cmluZywgdGltZW91dD86IG51bWJlcikge1xuICBhd2FpdCBwYWdlLndhaXRGb3JTZWxlY3RvcihlbGVtZW50U2VsZWN0b3IsIHsgaGlkZGVuOiB0cnVlLCB0aW1lb3V0IH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiB3YWl0VW50aWxJZnJhbWVGb3VuZChcbiAgcGFnZTogUGFnZSxcbiAgZnJhbWVQcmVkaWNhdGU6IChmcmFtZTogRnJhbWUpID0+IGJvb2xlYW4sXG4gIGRlc2NyaXB0aW9uID0gJycsXG4gIHRpbWVvdXQgPSAzMDAwMCxcbikge1xuICBsZXQgZnJhbWU6IEZyYW1lIHwgdW5kZWZpbmVkO1xuICBhd2FpdCB3YWl0VW50aWwoXG4gICAgKCkgPT4ge1xuICAgICAgZnJhbWUgPSBwYWdlLmZyYW1lcygpLmZpbmQoZnJhbWVQcmVkaWNhdGUpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSghIWZyYW1lKTtcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIHRpbWVvdXQsXG4gICAgMTAwMCxcbiAgKTtcblxuICBpZiAoIWZyYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gZmluZCBpZnJhbWUnKTtcbiAgfVxuXG4gIHJldHVybiBmcmFtZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmlsbElucHV0KHBhZ2VPckZyYW1lOiBQYWdlIHwgRnJhbWUsIGlucHV0U2VsZWN0b3I6IHN0cmluZywgaW5wdXRWYWx1ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHBhZ2VPckZyYW1lLiRldmFsKGlucHV0U2VsZWN0b3IsIChpbnB1dDogRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IGlucHV0O1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpbnB1dEVsZW1lbnQudmFsdWUgPSAnJztcbiAgfSk7XG4gIGF3YWl0IHBhZ2VPckZyYW1lLnR5cGUoaW5wdXRTZWxlY3RvciwgaW5wdXRWYWx1ZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNldFZhbHVlKHBhZ2VPckZyYW1lOiBQYWdlIHwgRnJhbWUsIGlucHV0U2VsZWN0b3I6IHN0cmluZywgaW5wdXRWYWx1ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHBhZ2VPckZyYW1lLiRldmFsKFxuICAgIGlucHV0U2VsZWN0b3IsXG4gICAgKGlucHV0OiBFbGVtZW50LCB2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgaW5wdXRFbGVtZW50ID0gaW5wdXQ7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpbnB1dEVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgICB9LFxuICAgIFtpbnB1dFZhbHVlXSxcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xpY2tCdXR0b24ocGFnZTogUGFnZSB8IEZyYW1lLCBidXR0b25TZWxlY3Rvcjogc3RyaW5nKSB7XG4gIGF3YWl0IHBhZ2UuJGV2YWwoYnV0dG9uU2VsZWN0b3IsIGVsID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNsaWNrTGluayhwYWdlOiBQYWdlLCBhU2VsZWN0b3I6IHN0cmluZykge1xuICBhd2FpdCBwYWdlLiRldmFsKGFTZWxlY3RvciwgKGVsOiBhbnkpID0+IHtcbiAgICBpZiAoIWVsIHx8IHR5cGVvZiBlbC5jbGljayA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlbC5jbGljaygpO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcGFnZUV2YWxBbGw8Uj4oXG4gIHBhZ2U6IFBhZ2UgfCBGcmFtZSxcbiAgc2VsZWN0b3I6IHN0cmluZyxcbiAgZGVmYXVsdFJlc3VsdDogYW55LFxuICBjYWxsYmFjazogKGVsZW1lbnRzOiBFbGVtZW50W10sIC4uLmFyZ3M6IGFueSkgPT4gUixcbiAgLi4uYXJnczogYW55W11cbik6IFByb21pc2U8Uj4ge1xuICBsZXQgcmVzdWx0ID0gZGVmYXVsdFJlc3VsdDtcbiAgdHJ5IHtcbiAgICByZXN1bHQgPSBhd2FpdCBwYWdlLiQkZXZhbChzZWxlY3RvciwgY2FsbGJhY2ssIC4uLmFyZ3MpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gVE9ETyB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCB0byBwdXBwZXRlZXJAMS41LjAgd2hpY2ggYnJlYWtzICQkZXZhbCBiZXZhaHZpb3IgdW50aWwgdGhleSB3aWxsIHJlbGVhc2UgYSBuZXcgdmVyc2lvbi5cbiAgICBpZiAoIShlIGFzIEVycm9yKS5tZXNzYWdlLnN0YXJ0c1dpdGgoJ0Vycm9yOiBmYWlsZWQgdG8gZmluZCBlbGVtZW50cyBtYXRjaGluZyBzZWxlY3RvcicpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHBhZ2VFdmFsPFI+KFxuICBwYWdlT3JGcmFtZTogUGFnZSB8IEZyYW1lLFxuICBzZWxlY3Rvcjogc3RyaW5nLFxuICBkZWZhdWx0UmVzdWx0OiBhbnksXG4gIGNhbGxiYWNrOiAoZWxlbWVudHM6IEVsZW1lbnQsIC4uLmFyZ3M6IGFueSkgPT4gUixcbiAgLi4uYXJnczogYW55W11cbik6IFByb21pc2U8Uj4ge1xuICBsZXQgcmVzdWx0ID0gZGVmYXVsdFJlc3VsdDtcbiAgdHJ5IHtcbiAgICByZXN1bHQgPSBhd2FpdCBwYWdlT3JGcmFtZS4kZXZhbChzZWxlY3RvciwgY2FsbGJhY2ssIC4uLmFyZ3MpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gVE9ETyB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCB0byBwdXBwZXRlZXJAMS41LjAgd2hpY2ggYnJlYWtzICQkZXZhbCBiZXZhaHZpb3IgdW50aWwgdGhleSB3aWxsIHJlbGVhc2UgYSBuZXcgdmVyc2lvbi5cbiAgICBpZiAoIShlIGFzIEVycm9yKS5tZXNzYWdlLnN0YXJ0c1dpdGgoJ0Vycm9yOiBmYWlsZWQgdG8gZmluZCBlbGVtZW50IG1hdGNoaW5nIHNlbGVjdG9yJykpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZU9yRnJhbWU6IFBhZ2UgfCBGcmFtZSwgc2VsZWN0b3I6IHN0cmluZykge1xuICByZXR1cm4gKGF3YWl0IHBhZ2VPckZyYW1lLiQoc2VsZWN0b3IpKSAhPT0gbnVsbDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZHJvcGRvd25TZWxlY3QocGFnZTogUGFnZSwgc2VsZWN0U2VsZWN0b3I6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICBhd2FpdCBwYWdlLnNlbGVjdChzZWxlY3RTZWxlY3RvciwgdmFsdWUpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkcm9wZG93bkVsZW1lbnRzKHBhZ2U6IFBhZ2UsIHNlbGVjdG9yOiBzdHJpbmcpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IHBhZ2UuZXZhbHVhdGUob3B0aW9uU2VsZWN0b3IgPT4ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTE9wdGlvbkVsZW1lbnQ+KG9wdGlvblNlbGVjdG9yKSlcbiAgICAgIC5maWx0ZXIobyA9PiBvLnZhbHVlKVxuICAgICAgLm1hcChvID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lOiBvLnRleHQsXG4gICAgICAgICAgdmFsdWU6IG8udmFsdWUsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgfSwgYCR7c2VsZWN0b3J9ID4gb3B0aW9uYCk7XG4gIHJldHVybiBvcHRpb25zO1xufVxuXG5leHBvcnQge1xuICBjbGlja0J1dHRvbixcbiAgY2xpY2tMaW5rLFxuICBkcm9wZG93bkVsZW1lbnRzLFxuICBkcm9wZG93blNlbGVjdCxcbiAgZWxlbWVudFByZXNlbnRPblBhZ2UsXG4gIGZpbGxJbnB1dCxcbiAgcGFnZUV2YWwsXG4gIHBhZ2VFdmFsQWxsLFxuICBzZXRWYWx1ZSxcbiAgd2FpdFVudGlsRWxlbWVudERpc2FwcGVhcixcbiAgd2FpdFVudGlsRWxlbWVudEZvdW5kLFxuICB3YWl0VW50aWxJZnJhbWVGb3VuZCxcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBRUEsZUFBZUMscUJBQXFCQSxDQUNsQ0MsSUFBa0IsRUFDbEJDLGVBQXVCLEVBQ3ZCQyxXQUFXLEdBQUcsS0FBSyxFQUNuQkMsT0FBZ0IsRUFDaEI7RUFDQSxNQUFNSCxJQUFJLENBQUNJLGVBQWUsQ0FBQ0gsZUFBZSxFQUFFO0lBQUVJLE9BQU8sRUFBRUgsV0FBVztJQUFFQztFQUFRLENBQUMsQ0FBQztBQUNoRjtBQUVBLGVBQWVHLHlCQUF5QkEsQ0FBQ04sSUFBVSxFQUFFQyxlQUF1QixFQUFFRSxPQUFnQixFQUFFO0VBQzlGLE1BQU1ILElBQUksQ0FBQ0ksZUFBZSxDQUFDSCxlQUFlLEVBQUU7SUFBRU0sTUFBTSxFQUFFLElBQUk7SUFBRUo7RUFBUSxDQUFDLENBQUM7QUFDeEU7QUFFQSxlQUFlSyxvQkFBb0JBLENBQ2pDUixJQUFVLEVBQ1ZTLGNBQXlDLEVBQ3pDQyxXQUFXLEdBQUcsRUFBRSxFQUNoQlAsT0FB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