首页 > 解决方案 > 单击带有 Selenium 的 Material Sortable Header

问题描述

我正在尝试在 Angular 应用程序上使用 selenium 执行一些自动化测试。一项测试涉及单击 mat-sort-header。我一直无法找到使用硒单击标题的方法。

当我单击表格时,表格将正确排序,但我无法使用 Selenium 对表格进行排序。

<table mat-table [dataSource]="dataSource" matSort>
  <ng-container matColumnDef="Header">
    <th mat-header-cell *matHeaderCellDef mat-sort-header="Header">Header</th>
    <td mat-cell *matCellDef="let row">{{row.title}}</td>
  </ng-container>
  <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
  <tr mat-row *matRowDef="let row; columns: displayedColumns"</tr>
</table>

我最初的方法,没有奏效。

sort_header = driver.find_element_by_xpath("//th[contains(@aria-label, 'Change Sorting for Header')]")
sort_header.click()

我的第二种方法,也没有奏效。

js = "document.querySelector('[aria-label="Change Sorting for Header"]').click();"
driver.execute_script(js)

第一种方法给出“消息:元素不可交互”错误。通过修改 JS 代码,我可以在第二种方法(将按钮元素打印到控制台)中控制台记录正确的按钮。但是,执行 JavaScript 时元素不会排序。

标签: python-3.xangularselenium

解决方案


推荐阅读