如何在 NativeScript 中以编程方式模拟视图上的点击事件?
How do I programmatically simulate a tap event on a view in NativeScript?
我正在编写一些代码来对我的 NativeScript 应用程序进行一些自动化 UI 测试。该代码将托管在应用程序本身内,因此我需要能够从 javascript 代码驱动 UI 事件。具体来说,我需要能够以编程方式在视图上触发点击事件。
Google 上的一些搜索没有找到任何好的方法来执行此操作。我看到几个类似的问题,其中包含直接调用 tap 事件处理函数的建议,但是当需要参数对象时这将不起作用,因为直接调用不会包含 NativeScript 生成的参数对象。
有什么想法吗?
有几种方法可以做到这一点。
1. 你可以使用NativeScript-Dom(本人是作者);然后你可以轻松地做到这一点:
var x = getElementById("blah");
x.notify({eventName: "tap", object: x});
或
runAgainstTagName("Buttons", function(elem) {
elem.notify({eventName: "tap", object: elem}
);
或getElementsByTagName
/getElementsByClassName
,或runAgainstId
/RunAgainstClassName
或者您甚至可以使用内置的 .getViewById("blah");
找到元素的任何一个。然后使用 .notify
将点击事件发送给它。
我正在编写一些代码来对我的 NativeScript 应用程序进行一些自动化 UI 测试。该代码将托管在应用程序本身内,因此我需要能够从 javascript 代码驱动 UI 事件。具体来说,我需要能够以编程方式在视图上触发点击事件。
Google 上的一些搜索没有找到任何好的方法来执行此操作。我看到几个类似的问题,其中包含直接调用 tap 事件处理函数的建议,但是当需要参数对象时这将不起作用,因为直接调用不会包含 NativeScript 生成的参数对象。
有什么想法吗?
有几种方法可以做到这一点。 1. 你可以使用NativeScript-Dom(本人是作者);然后你可以轻松地做到这一点:
var x = getElementById("blah");
x.notify({eventName: "tap", object: x});
或
runAgainstTagName("Buttons", function(elem) {
elem.notify({eventName: "tap", object: elem}
);
或getElementsByTagName
/getElementsByClassName
,或runAgainstId
/RunAgainstClassName
或者您甚至可以使用内置的 .getViewById("blah");
找到元素的任何一个。然后使用 .notify
将点击事件发送给它。