【问题标题】:Firing a click event programmatically using Kendo UI Mobile使用 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() 在浏览器控制台中不起作用的答案。

标签: jquery kendo-ui jasmine kendo-mobile


【解决方案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)获得更多选票,我将更新接受的答案。
猜你喜欢
  • 2020-06-02
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
相关资源
最近更新 更多