使用 Kendo UI Mobile 以编程方式触发点击事件
Posted
技术标签:
【中文标题】使用 Kendo UI Mobile 以编程方式触发点击事件【英文标题】:Firing a click event programmatically using Kendo UI Mobile 【发布时间】:2014-01-24 04:06:01 【问题描述】:我正在使用 Kendo UI Mobile,并且正在尝试编写 UI 测试用例。我正在使用 Jasmine 进行测试。我的移动应用登录页面中有以下按钮。
<a data-role="button" data-rel="modalview" href="#modalview-login" id="modalview-open-button">Login</a>
我正在尝试使用我的测试触发该按钮。我正在使用以下代码尝试触发该按钮,但没有发生任何事情(我可以说)。
$("#modalview-open-button").click();
我错过了什么?
【问题讨论】:
也许只是尝试调用 DOM 节点方法:$("#modalview-open-button").get(0).click();
与:document.getElementById('modalview-open-button').click()
相同
我应该可以在控制台窗口中输入,对吗?
如果您谈论浏览器控制台,是的。如果您谈论任何其他控制台,我不知道
是的,浏览器控制台。请参阅我关于为什么 click() 在浏览器控制台中不起作用的答案。
【参考方案1】:
显然 Kendo UI Mobile 正在捕获和处理 click() 事件。我能够使用以下方法模拟点击事件:
$("#modalview-open-button").mousedown().mouseup(); // send "click()"
expect($("#modalview-login").is(":visible")).toBeTruthy();
我还发现有时 .mousedown().mouseup() 之后的 expect() 代码在 .mouseup() 完成之前触发,因此我将测试代码放入回调中。
$("#modalview-open-button").mousedown().mouseup(function() // send "click()"
expect($("#modalview-login").is(":visible")).toBeTruthy();
);
【讨论】:
我应该注意到,这有相当多的异步问题,而且我至少有一种情况是 .mousedown().mouseup() 工作不那么热。【参考方案2】:我今天遇到了同样的情况,并通过使用以下代码行找到了解决方法。这不是一个好的解决方案,但也许它可以帮助陷入相同情况的人。
var kendoMobileButton = $("#button-id").data("kendoMobileButton");
kendoMobileButton._events.click[0]();
【讨论】:
我很想对此进行测试,但我不再从事这些项目了。如果这比解决方案(hack)获得更多选票,我将更新接受的答案。以上是关于使用 Kendo UI Mobile 以编程方式触发点击事件的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式更改 Angular Kendo UI 网格页面索引?