Прикрепленный пример изображения моего раскрывающегося списка и текстового поля У меня есть раскрывающийся список и текстовое поле, я хочу создать функцию Pageobject, которая анализирует идентификатор .css или класс html и разделяет его с помощью " - " Например:
у меня есть файл огурца .feature
, который делает это
And he filters account Name so that it contains dyno
Итак, здесь я говорю, найдите столбец «Имя учетной записи» и выберите значение в раскрывающемся списке, а затем введите значение в текстовое поле, теоретически, если я заставлю разработчиков создать html-идентификатор для раскрывающегося списка и текстового поля, что-то похожее на это : (в частности, идентификатор с accountName)
<th _ngcontent-c2="" class="ui-p-6 ui-sortable-column"
preorderablecolumn="" style="text-align:left;"
ng-reflect-field="accountId" draggable="true">
Account Name
<p-sorticon _ngcontent-c2="" ng-reflect-field="accountId">
<span class="ui-sortable-column-icon fa fa-fw fa-sort"
ng-reflect-klass="ui-sortable-column-icon fa fa-"
ng-reflect-ng-class="[object Object]">
</span>
</p-sorticon>
</th>
вот мое определение шага:
this.When(/^s?he filters (.*) so that it ?(.*)?(.*) ?(.*)$/,
(columnName: string, bySelectingTheFilter: string,
andEnteringText: string, intoTextBox: string) => {
return stage.theActorInTheSpotlight().attemptsTo(
FilterTheList.toShow(columnName, bySelectingTheFilter,
andEnteringText, intoTextBox)
);
});
У меня есть файл задачи, в котором находится класс, который выбирает раскрывающийся список и вводит данные в текстовое поле здесь:
export class FilterTheList implements Task {
constructor(private columnName: string, private filter: string,
private text: string, private filterTextBox: string) {
}
static filterOptionShow() {
return Click.on(AccountListUI.accountListShowFilter);
}
static toShow(columnName: string, filter: string, text: string, filterTextBox: string){
// @todo need to sanitize columns to match HTML identifier
// this.columnName = columnName;
// @todo need to sanitize columns to match HTML identifier
// this.filterTextBox = filterTextBox;
return new FilterTheList(columnName, filter, text, filterTextBox);
}
@step('{0} filters the list to show #taskType items')
performAs(actor: PerformsTasks): PromiseLike<void> {
return actor.attemptsTo(
Select.theValue(this.filter)
.from(AccountListUI.filter.dropDown(this.columnName)),
Enter.theValue(this.text)
.into(AccountListUI.filter.textBox(this.filterTextBox))
);
}
}
Я думаю, что могу сделать функцию pageoject такой
static filterItems = {
dropDown: (name: string) => Target.the(`filter dropdown called ${name}`)
.located(by.css(`th.${name} input[type="select"]`)),
textBox: (name: string) => Target.the(`filter textbox called ${name}`)
.located(by.css(`th.${name} input[type="text"]`)),
};
но эта функция будет вызываться после того, как я найду имя столбца
вот где я потерялся в том, как я могу сделать функцию, которая скажет: «Эй, получите имя столбца из файла .feature
и проанализируйте его на то, что предоставляет html (то есть: синтаксический анализ имени учетной записи для имя_учетной записи)