diff --git a/lib/helper/WebDriver.js b/lib/helper/WebDriver.js index 9ed4ce7ef..39bc85773 100644 --- a/lib/helper/WebDriver.js +++ b/lib/helper/WebDriver.js @@ -1859,6 +1859,19 @@ class WebDriver extends Helper { */ async waitForEnabled(locator, sec = null) { const aSec = sec || this.options.waitForTimeout; + if (isWebDriver5()) { + return this.browser.waitUntil(async () => { + const res = await this.$$(withStrictLocator(locator)); + if (!res || res.length === 0) { + return false; + } + const selected = await forEachAsync(res, async el => this.browser.isElementEnabled(getElementId(el))); + if (Array.isArray(selected)) { + return selected.filter(val => val === true).length > 0; + } + return selected; + }, aSec * 1000, `element (${new Locator(locator)}) still not enabled after ${aSec} sec`); + } return this.browser.waitUntil(async () => { const res = await this.$$(withStrictLocator(locator)); if (!res || res.length === 0) { @@ -1869,7 +1882,10 @@ class WebDriver extends Helper { return selected.filter(val => val === true).length > 0; } return selected; - }, aSec * 1000, `element (${new Locator(locator)}) still not enabled after ${aSec} sec`); + }, { + timeout: aSec * 1000, + timeoutMsg: `element (${new Locator(locator)}) still not enabled after ${aSec} sec`, + }); } /**