import { CommonKeyword } from "./commonKeyword"; import { logger } from "../Logger/logger"; /** * Pick item inside component */ export class DewDropdown { /** *  To select first element in the dropdown * * ```js * * DewDropdown.selectFirst("//dew-dropdown[type='dropdown']") * ``` * * @param {String} locator dropdown field located by CSS|XPath|strict locator. * */ static async selectFirst(locator: string) { try { await CommonKeyword.clickElement(locator); await CommonKeyword.clickElement(`//*[contains(@class,'cdk-overlay-container')]//div[contains(@class,'text-truncate')][1]`); } catch (error) { logger.log(`Issue while performing operation in DDCC: Error while selecting first value from dropdown`); throw error; } } /** * To select element by title * ```js * await DewDropdown.selectByTitle("//dew-dropdown[type='dropdown']","Sales") * ``` * @param {string}locator * @param {string} title */ static async selectByTitle(locator: string, title: string) { try { await CommonKeyword.clickElement(locator); await CommonKeyword.clickElement(`.//*[contains(@class,'cdk-overlay-container')]//*[@title="${title}"]`); } catch (error) { logger.log(`Issue while performing operation in DDCC: Error while selecting dropdown based on title`); throw error; } } /** * To select element by given text from a dropdown * ```js * await DewDropdown.selectByText("//dew-dropdown[type='dropdown']","Sales") * ``` * @param {string}locator * @param {string}text */ static async selectByText(locator: string, text: string) { try { await CommonKeyword.clickElement(locator); await CommonKeyword.clickElement(`.//*[contains(@class,'cdk-overlay-container')]//div[contains(@class,'text-truncate') and text()[normalize-space()='${text}']] | .//*[contains(@class,'cdk-overlay-container')]//div[contains(@class,'dropdown')]//a[text()[normalize-space()='${text}']] | .//*[contains(@class,'cdk-overlay-container')]//div[contains(@class,'dropdown')]//span[text()[normalize-space()='${text}']]`); } catch (error) { logger.log(`Issue while performing operation in DDCC: Error while selecting dropdown based on text`); throw error; } } }