tlc-core-automation-framework-v3-wdio-v9
Version:
Background: - We are following multi-layer automation framework architecture using webdriver.io + cucumber + typescript This core framework has been implemented with generic utility functions and cucumber steps, which can be easily consumed by another fra
39 lines (34 loc) • 1.57 kB
text/typescript
import waitForElementState from "./waitForElementState";
import {PageConfigTypes} from "../../../custom-types/pageConfig-types";
import logger from "../../reporting-helpers/logger";
import {browser, $, $$, expect} from '@wdio/globals'
import he from "he";
// export default async function (pageConfig: PageConfigTypes, elementState: string = 'Existing') {
// await waitForElementState(pageConfig, false, elementState, 5, 1000);
// let elementText = "";
//
// const element = await $(pageConfig.selector);
// // @ts-ignore
// const refinedHtmlText = await browser.execute((el) => el.textContent, element);
// elementText = he.decode(refinedHtmlText);
// logger.info(`Element "${pageConfig.elementKey}" has text "${elementText}"`);
// return elementText;
// }
export default async function (pageConfig: PageConfigTypes, elementState: string = 'Existing') {
await waitForElementState(pageConfig, false, elementState, 5, 1000);
let elementText = "";
let htmlContent = "";
if (await $(pageConfig.selector).isDisplayed())
elementText = await $(pageConfig.selector).getText();
else {
htmlContent = await $(pageConfig.selector).getHTML();
if (htmlContent.trim() == "") {
const element = $(pageConfig.selector);
// @ts-ignore
htmlContent = await browser.execute((el) => el.textContent, element);
}
elementText = he.decode(htmlContent);
}
logger.info(`Element "${pageConfig.elementKey}" has text "${elementText}"`);
return elementText;
}