我的问题不是双击同一按钮而是双击两个按钮。
用户双击按钮。
如何避免这种情况?
我已经测试过:
要在操作期间禁用所有UI按钮
但是如果操作确实非常快,则在第二次单击之前启用按钮
不要在用户界面的同一位置放置2个按钮
并非总是可能,并且使用响应式UI不可能管理所有情况
要在点击时添加全局时间戳记,并在第二次点击时测试是否有500毫秒
_click: function(args)
{
// to avoid double click user need wait 500ms between each click
if(window.paperbutton_timestamp)
{
var diff = new Date() - window.paperbutton_timestamp;
if(diff < 500)
{
window.paperbutton_timestamp = new Date();
return;
}
}
window.paperbutton_timestamp = new Date();
if(scope.click)
{
scope.click(args);
}
},
好的,就可以了。
现在,我的问题是我有很多量角器端到端测试,点击次数超过2000次。 一些量角器的点击操作在不到500毫秒内完成。
我可以使用哪种解决方案?
1.每次点击后添加一个等待时间
(更多2000等待手动添加)
2.在全局变量中设置500ms,并将此值覆盖为0ms
如何覆盖每个测试和每个页面的刷新?
3.覆盖量角器单击?
Seam是更好的解决方案,但我不知道该怎么做。
答案 0 :(得分:1)
通常使用良好的旧式人机交互解决。尝试使用在视觉上对悬停,mousedown和mouseup事件有反应的按钮样式。通常,这足以使用户理解没有必要双击。 Stackoverflow本身有一个很棒的示例:
空闲按钮:
悬停按钮:
鼠标右键:
鼠标键:
但是,如果您真的希望防止不必要的点击,也许最好的方法是在操作期间禁用按钮,而当您要重新启用按钮时,请将此操作置于超时状态,这样禁用的按钮将持续一段时间更长。
您可以实现一个全局函数,以在需要时生成覆盖整个屏幕的不可见div
。这将阻止屏幕上的所有内容。
<div style="position:fixed; top:0; left:0; width:100vw; height:100vh; z-index: 10000"></div>
将其放入您的布局文件(通常为app.component.html
)中,并实现一个*ngIf
,以便仅在必要时显示。另外,其z-index
应该大于整个应用程序中任何其他元素的z-index
。
答案 1 :(得分:1)
您是否考虑过对两个按钮都使用* NgIf **
<button *NgIf="oneActive" (click)="oneActive=false;callfunction()">one</button>
<button *NgIf="!oneActive" (click)="oneActive=true;callfunction2()">two</button>
**
答案 2 :(得分:0)
最好为量角器点击编写自定义函数:
protractor.ElementFinder.prototype.waitClick = function(wait){
browser.sleep(wait);
this.click();
};
describe('Tests', function() {
element.all(by.css('#testElements')).get(0).waitClick(1000)
});
因此,不建议您覆盖默认的点击功能。