Запуск события клика программно с помощью Kendo UI Mobile

Я использую Kendo UI Mobile и пытаюсь написать тестовый пример пользовательского интерфейса. Я использую Jasmine для тестирования. У меня есть следующая кнопка на странице входа в мое мобильное приложение.

<a data-role="button" data-rel="modalview" href="#modalview-login" id="modalview-open-button">Login</a>

Я пытаюсь запустить эту кнопку, используя мой тест. Я использую следующий код, чтобы попытаться запустить эту кнопку, но ничего не происходит (что я могу сказать).

$("#modalview-open-button").click();

Что мне не хватает?


person zkent    schedule 06.01.2014    source источник
comment
возможно, просто попробуйте вызвать метод узла DOM: $("#modalview-open-button").get(0).click();, который совпадает с: document.getElementById('modalview-open-button').click()   -  person A. Wolff    schedule 06.01.2014
comment
Я должен быть в состоянии ввести это в окно консоли, верно?   -  person zkent    schedule 06.01.2014
comment
если вы говорите о консоли браузера, да. Если вы говорите о любой другой консоли, я не знаю   -  person A. Wolff    schedule 06.01.2014
comment
Да, консоль браузера. Смотрите мой ответ, почему click() не работает в консоли браузера.   -  person zkent    schedule 07.01.2014


Ответы (2)


Очевидно, Kendo UI Mobile перехватывает и обрабатывает событие click(). Я смог имитировать событие клика, используя:

$("#modalview-open-button").mousedown().mouseup();  // send "click()"
expect($("#modalview-login").is(":visible")).toBeTruthy();

Я также обнаружил, что иногда код expect(), следующий за .mousedown().mouseup(), срабатывает до завершения .mouseup(), поэтому я помещаю свой тестовый код в обратный вызов.

$("#modalview-open-button").mousedown().mouseup(function() {  // send "click()"
    expect($("#modalview-login").is(":visible")).toBeTruthy();
});
person zkent    schedule 07.01.2014
comment
Я должен отметить, что это имеет свою долю асинхронных проблем, и у меня есть по крайней мере один случай, когда .mousedown().mouseup() не работает так горячо. - person zkent; 08.01.2014

Сегодня у меня была такая же ситуация, и я нашел обходной путь, используя следующие строки кода. Это не очень хорошее решение, но, возможно, оно поможет кому-то, кто застрял в такой же ситуации.

var kendoMobileButton = $("#button-id").data("kendoMobileButton");
kendoMobileButton._events.click[0]();
person Community    schedule 11.08.2015
comment
Я хотел бы проверить это, но я больше не работаю над этими проектами. Если это наберет больше голосов, чем решение (взлом), я обновлю принятый ответ. - person zkent; 11.08.2015