cypress - 赛普拉斯:由于覆盖,如何测试内容*不可*访问(可点击等)?
问题描述
我在 Angular 中实现了一个加载指示器,如下所示:
<div cdkTrapFocus class="activity-indicator-container">
<div class="content-container">
<ng-content></ng-content>
<div [ngStyle]="{visibility: showLoader ? 'visible': 'hidden'}" class="indicator-overlay">
<div class="loading-indicator">
</div>
</div>
</div>
</div>
的indicator-overlay
样式是这样的:
.indicator-overlay {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
background-color: rgba(255, 255, 255, 0.35);
}
当指示器显示时,内容由一个半透明的 div 变灰。
显示覆盖时运行cy.contains('text in content').should('not.be.visible')
失败。
那么有没有办法在赛普拉斯测试文本实际上是不可访问的(可选择的、可点击的等)?
解决方案
您可以使用 try/catch 块。听起来您正在测试覆盖是否捕获任何点击事件,而不是测试元素不可点击(因为您没有更改元素本身)
你可以做这样的事情
displayLoadingOverlay();
try{
// this should fail, since the overlay will be blocking it
element.click();
} catch(error){
expect(error).to.contain(message);
}
此测试确保如果您尝试单击元素(重复任意数量的元素)应引发错误,因为赛普拉斯无法单击该元素。如果没有抛出错误,您可以假设 click 事件有效。
推荐阅读
- spring - @JsonManagedReference 和 @JsonBackReference 无法从 jsonbackreference 模型中获取关系数据
- html - 如何在表格中的 td 内使用边距但不使用边框折叠:分离
- r - ggplot 指定经度/纬度轴中断
- r - 使用 quadprog 的多项式回归
- cplex - CPLEX 障碍方法迭代限制
- java - ModelMapper - 如何从源计算值并将其设置为目标
- reactjs - a11y:什么是正确的`
- loopbackjs - 'TypeError:无法初始化未定义的连接器:无法读取未定义的属性'root''
- python - 当图形包含多个子图时,matplotlib.widgets.TextBox 交互很慢
- vue.js - VueJs 使用属性值获取数组值