使用量角器,如果该元素是具有 id 属性的角度组件选择器,您能否通过 id 找到该元素"element"?



我使用的是来自Angular Material的MatTableModule,当我显示我的表时,我想给每一行一个id。当我检查元素时,它看起来就像在做,我将看到每个<mat-row>包含一个id属性。但是当我运行e2e测试时,它说它无法通过选择器找到元素。下面是表格代码:

<mat-table #table [dataSource]="people" class="table">
<!-- name Column -->
<ng-container matColumnDef="tractor">
<mat-header-cell *matHeaderCellDef class="mat-col-person"> Name</mat-header-cell>
<mat-cell *matCellDef="let person" class="mat-cell-person"> {{person.name}} </mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
<mat-row *matRowDef="let row; columns: displayedColumns; let i = index;" [id]=" 'val'+ i" (click)="onRowSelected(row)"></mat-row>
</mat-table>

onRowSelected(row)只是导航到页面,然后我检查我需要的元素是否包含所选人员的姓名。

每一行的id为:val#,如:val1,val2

在我的person-summary.e2e-spec.ts文件中包含这个表的测试代码,我有:

// removing the beforeEach where I just navigate to the page
it('should navigate to the person summary screen when clicking on a row', ()=>{
// navigates to a page about the user/person
element(by.id('val1')).click();
// wait for the next page to render and see if the element that contains the user's name appears
browser.wait(EC.presenceOf(element(by.id('current-person'))), BROWSER_TIMEOUT);
expect(element(by.id('current-person'))).toBeTruthy();
});

然后得到以下错误:

× should navigate to the person summary screen when clicking on a row
- Failed: No element found using locator: By(css selector, *[id="val1"])
driver = webdriver.Chrome()
rows = driver.find_elements_by_css_selector('mat-table mat-row')
rows.get(0)

尝试在检查行之前添加一些等待,因为mat-row是动态更新的。不知道为什么id没有被选中。但是你可以使用

下面的css定位符const ele = element.all(by.css('mat-table mat-row'));

访问第一行ele.get(0);

希望这能解决问题。

相关内容

  • 没有找到相关文章

最新更新