import { DropDownStringList } from '../e2elib/lib/src/pageobjects/dropdownstringlist.component';
|
import { by } from '../e2elib/node_modules/protractor/built';
|
|
export class DropDownStringListBase extends DropDownStringList {
|
/**
|
* Select the string item in dropdown
|
*
|
* @param selectionItem item in value (value name or index)
|
* @example await selectItem('Sales demo metals');
|
*/
|
public async selectItem(selectionItem: string | number): Promise<void> {
|
let errorMessage = '';
|
const curentValue = await this.getSelectedString();
|
if (curentValue !== selectionItem) {
|
try {
|
// search item from origin selected item to bottom, it might throw error if the target item is not bottom of origin selected item
|
await super.selectItem(selectionItem);
|
} catch (err) {
|
// if error catched, search item from origin selected item to top
|
try {
|
await super.selectItem(selectionItem, false);
|
} catch (err2) {
|
// if error catched, log error message
|
errorMessage = `error when finding '${selectionItem}' in drop down ${this.componentName}. ${err2.message}`;
|
throw new Error(errorMessage);
|
}
|
}
|
}
|
}
|
|
/**
|
* Count the number of elements in the DropDown
|
*
|
* @returns number that indicates the number of elements inside the DropDown
|
*/
|
public async getDropDownItemsCount(): Promise<number> {
|
const count = await this.element.all(by.css('.selectionItemContainer .selectionItem ')).count();
|
return count;
|
}
|
}
|