使用 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 以编程方式触发点击事件的主要内容,如果未能解决你的问题,请参考以下文章

Kendo UI - 以编程方式设置参数

如何以编程方式更改 Angular Kendo UI 网格页面索引?

在 kendo ui 网格中以编程方式更改 serverSorting

如何以编程方式为 Kendo Ui 调度程序调用导航事件

Angular Kendo Grid:以编程方式选择行

Kendo ui mobile将默认主题设置为flat ui