UNPKG

@puppedo/atoms

Version:
95 lines (86 loc) 2.85 kB
name: clickSelectorNative bindDescriprion: "`Wait selector: '${selector}' and click`" needSelectors: ['selector'] needData: ['selectorNumber?'] allowOptions: - 'count' - 'timeDelayBeforeClick' - 'logAfter' - 'hidden' - 'visible' - 'timeDelayBeforeWait' - 'timeDelayAfterWait' - 'timeDelayAfterClick' - 'waitingTime' logOptions: { logChildren: false } runTest: - waitForSelector: description: Wait selector bindSelector: { selector: selector } - blank: if: 'selectorNumber === null' const: { selectorNumber: 0 } - blank: description: Click bindData: { selectorNumber: selectorNumber } bindSelector: { selector: selector } bindDescriprion: "`Click selector: '${selector}'`" needSelectors: ['selector'] needData: ['selectorNumber?'] allowOptions: ['count', 'timeDelayBeforeClick', 'logAfter', 'timeDelayAfterClick'] inlineJS: > const { selector } = this.selectors; const selectorNumber = this.data.selectorNumber || 0; const { count = 1, timeDelayBeforeClick = 0, logAfter = false, timeDelayAfterClick = 0, } = this.options; const element = ((await this.getElement(selector, true)) || [])[selectorNumber]; if (timeDelayBeforeClick) { await this.page.waitForTimeout(timeDelayBeforeClick); } try { if (!logAfter) { await this.log({ text: `Click selector: '${selector}'`, element }); } if (this.getEngine('playwright')) { await this.page.evaluate( ({ element, count }) => { for (let i = 0; i < count; i++) { element.click(); } }, { element, count }, ); } else if (this.getEngine('puppeteer')) { await this.page.evaluate( (element, count) => { for (let i = 0; i < count; i++) { element.click(); } }, element, count, ); } else { throw new Error(`There is unknown engine ${this.getEngine()}`); } if (logAfter) { await this.log({ text: `Click selector: '${selector}'`, element }); } } catch (error) { await this.log({ text: `Can't click selector: '${selector}'`, element, screenshot: true, extendInfo: true, level: 'error', }); throw error; } if (timeDelayAfterClick) { await this.page.waitForTimeout(timeDelayAfterClick); } await element.dispose();