我正在尝试编写脚本以单击作为表标题一部分的图标。表中的每一列都带有此图标(升序和降序排序图标)。我正在用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:所需的页面内容'header-SimplePageContent(所有者:SortingGrid,args:[],值:null)'不存在
该错误看起来像标题不匹配。假设网格匹配,并且您正在使用诸如Angular之类的Javascript框架将params.displayName替换为“ Country”,我想可能是Geb在替换“ Country”之前找不到标题。因此,我将尝试让标题等待它:
header(wait: true) { grid.$(class: 'div.customHeaderLabel', text: 'Country') }
顺便说一句,closest()朝着祖先的方向错误,但是siblings()看起来不错。