diff --git a/packages/basic.gblib/services/KeywordsExpressions.ts b/packages/basic.gblib/services/KeywordsExpressions.ts index d6eea6047..f8f67fd52 100644 --- a/packages/basic.gblib/services/KeywordsExpressions.ts +++ b/packages/basic.gblib/services/KeywordsExpressions.ts @@ -806,6 +806,14 @@ export class KeywordsExpressions { return `await wa.linkByText ({pid: pid, handle: page, ${params}})`; } ]; + + keywords[i++] = [ + /^\s*(click button)(\s*)(.*)/gim, + ($0, $1, $2, $3) => { + const params = this.getParams($3, ['text', 'index']); + return `await wa.clickButton ({pid: pid, handle: page, ${params}})`; + } + ]; keywords[i++] = [ /^\s*(click)(\s*)(.*)/gim, diff --git a/packages/basic.gblib/services/WebAutomationServices.ts b/packages/basic.gblib/services/WebAutomationServices.ts index 432b81b85..be5f48937 100644 --- a/packages/basic.gblib/services/WebAutomationServices.ts +++ b/packages/basic.gblib/services/WebAutomationServices.ts @@ -316,6 +316,18 @@ export class WebAutomationServices { await els[index - 1].click(); await this.debugStepWeb(pid, page); } + + public async clickButton({ pid, handle, text, index }) { + const page = WebAutomationServices.getPageByHandle(handle); + GBLog.info(`BASIC: Web Automation CLICK BUTTON: ${text} ${index}.`); + if (!index) { + index = 1; + } + const els = await page.$x(`//button[contains(.,'${text}')]`); + await els[index - 1].click(); + await this.debugStepWeb(pid, page); + } + /** * Returns the screenshot of page or element