如何在 Geb 测试中使用 siblings() 和 closest()
How to use siblings() and closest() in Geb test
我正在尝试编写一个脚本来单击属于 table header 的图标。 table 中的每一列都有这个图标(升序和降序排序图标)。我正在使用 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>
None 其中对我有用。它无法找到选择器。任何建议表示赞赏。
我看到的错误是:
geb.error.RequiredPageContentNotPresent: The required page content 'header - SimplePageContent (owner: SortingGrid, args: [], value: null)' is not present
该错误看起来 header 不匹配。假设网格匹配,并且您正在使用一些 Javascript 框架,例如 Angular 将 'Country' 替换为 params.displayName,我猜 Geb 可能无法找到 header 在 'Country' 被替换之前。所以,我会尝试让 header 等待它:
header(wait: true) { grid.$(class: 'div.customHeaderLabel', text: 'Country') }
顺便说一句,closest() 走错了方向,去往祖先,但 siblings() 看起来不错。
siblings() 对我不起作用,但 next() 对我有用。 next() 获取当前上下文元素的下一个兄弟元素。
示例:
1. header.next().click() 点击下一个兄弟
- header.next("div.customSortDownLabel").click() 查找具有 'div.customSortDownLabel' 匹配选择器的下一个同级,然后单击它。
我正在尝试编写一个脚本来单击属于 table header 的图标。 table 中的每一列都有这个图标(升序和降序排序图标)。我正在使用 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>
None 其中对我有用。它无法找到选择器。任何建议表示赞赏。
我看到的错误是:
geb.error.RequiredPageContentNotPresent: The required page content 'header - SimplePageContent (owner: SortingGrid, args: [], value: null)' is not present
该错误看起来 header 不匹配。假设网格匹配,并且您正在使用一些 Javascript 框架,例如 Angular 将 'Country' 替换为 params.displayName,我猜 Geb 可能无法找到 header 在 'Country' 被替换之前。所以,我会尝试让 header 等待它:
header(wait: true) { grid.$(class: 'div.customHeaderLabel', text: 'Country') }
顺便说一句,closest() 走错了方向,去往祖先,但 siblings() 看起来不错。
siblings() 对我不起作用,但 next() 对我有用。 next() 获取当前上下文元素的下一个兄弟元素。
示例: 1. header.next().click() 点击下一个兄弟
- header.next("div.customSortDownLabel").click() 查找具有 'div.customSortDownLabel' 匹配选择器的下一个同级,然后单击它。