Как использовать siblings () и closest () в тесте Geb - PullRequest
1 голос
/ 08 января 2020

Я пытаюсь написать скрипт, чтобы щелкнуть значок, который является частью заголовка таблицы. В каждом столбце таблицы есть этот значок (значки сортировки по возрастанию и по убыванию). Я использую Geb, чтобы сделать это. Вот как я пытаюсь это сделать:

В моем SortingSpec.groovy файле:

header.closest("div.customSortDownLabel").click()

Я также пытался

header.siblings('div.customSortDownLabel').first().click()

В файле SortingPage.groovy :

header {
    grid.$(class: 'div.customHeaderLabel', text: 'Country')
}

По моему html:

<div>
    <div class="customHeaderLabel">{{params.displayName}}</div>
    <div *ngIf="params.enableSorting" (click)="onSortRequested('asc', $event)" [ngClass]="ascSort" class="customSortDownLabel">
        <i class="fa fa-long-arrow-alt-down"></i></div>
    <div *ngIf="params.enableSorting" (click)="onSortRequested('desc', $event)" [ngClass]="descSort" class="customSortUpLabel">
</div>

Ни один из них у меня не работал. Не удается найти селектор. Любые предложения приветствуются.

Я вижу следующую ошибку:

geb.error.RequiredPageContentNotPresent: заголовок необходимого содержимого страницы - SimplePageContent (владелец: SortingGrid, args: [], значение: null) 'is нет

Ответы [ 2 ]

2 голосов
/ 08 января 2020

Эта ошибка выглядит как заголовок не совпадает. Предполагая, что сетка совпадает, и вы используете какой-то Javascript фреймворк, такой как Angular, чтобы заменить 'Country' на params.displayName, я бы предположил, что, возможно, Geb не сможет найти заголовок до того, как будет подставлен 'Country'. Итак, я бы попытался заставить заголовок ждать его:

header(wait: true) { grid.$(class: 'div.customHeaderLabel', text: 'Country') }

Кстати, closest () идет в неправильном направлении, к предку, но siblings () выглядит хорошо.

0 голосов
/ 10 января 2020

братьев и сестер () не работает для меня, но следующий () работал для меня. next () получает следующие элементы одного уровня из текущих элементов контекста.

Пример: 1. header.next (). click () щелкает ближайшего элемента одного уровня

header.next ("div.customSortDownLabel"). Click () ищет ближайшего брата с соответствующим селектором div.customSortDownLabel и затем щелкает его.
...