python-3.x - 单击带有 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 - Hive,我有一个按时间戳排序的 QA 数据集(ID、时间、内容、角色)。如何将其转换为(ID、roleA、roleB)之类的格式?
- c# - 我可以在三元 If 语句中使用嵌套 OR 语句吗?
- reactjs - 登录后 React-Router 重定向
- azure - Azure Logic App 条件检查空数组
- php - Laravel LiveWire 2:我们是否必须创建一个新类或者我们可以像传统控制器一样做
- flutter - 参数类型“Null”不能分配给参数类型“AccountState”
- typescript - 在 TypeScript 中分布箭头函数参数的联合
- reactjs - ReactJS:useEffect 在aws IVS chaannel的每个请求上更新元数据
- java - 如何在 JSESSIONID Cookie 中设置 SameSite=None
- c++ - 如何读取具有多个分隔符的文本文件?