如何在 UIAutomation 中使用节点模块
Posted
技术标签:
【中文标题】如何在 UIAutomation 中使用节点模块【英文标题】:How to use node modules with in UIAutomation 【发布时间】:2013-02-26 22:40:37 【问题描述】:根据苹果的documentation,我可以使用import 语句将一个JS 文件导入另一个。是的,我可以使用 JS 函数并递归调用其他 JS 函数。
但是我可以将节点模块包含在我的自动化中吗? Node/npm 模块似乎有很多工具可以让生活更轻松并避免代码重复。
实际上,我可以通过代码中的以下调用使用一个名为 moment.js 的节点模块
#import "../node_modules/moment/moment.js"
但我对其他 npm 模块的运气并不好。我尝试了一对Faker.js,Charlatan.js,但在 Faker.js 中出现以下错误
脚本引发未捕获的 javascript 错误:找不到变量:窗口 在 Faker.js 的第 618 行
查看 *.js 文件似乎与这些模块的打包方式有关。我的 JS 知识并没有让我到任何地方。
moment js文件最后几行
// CommonJS module is defined
if (hasModule)
module.exports = moment;
/*global ender:false */
if (typeof ender === 'undefined')
// here, `this` means `window` in the browser, or `global` on the server
// add `moment` as a global object via a string identifier,
// for Closure Compiler "advanced" mode
this['moment'] = moment;
/*global define:false */
if (typeof define === "function" && define.amd)
define("moment", [], function ()
return moment;
);
Faker js 文件的最后几行
if (typeof define == 'function')
define(function()
return Faker;
);
else if(typeof module !== 'undefined' && module.exports)
module.exports = Faker;
else
window.Faker = Faker;
我完全可以在节点控制台中使用这些模块,所以这些模块没有问题,只是如何在我的 JS 文件中包含/要求它们。
【问题讨论】:
【参考方案1】:Faker 必须为我做两件事
-
删除“使用严格”
检查窗口是否未定义
添加此语句
this['Faker'] = Faker;
【讨论】:
以上是关于如何在 UIAutomation 中使用节点模块的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UIAutomation 中从句子中取出特定的单词?
我如何在 XCODE 8、Swift 3 中使用 UIAutomation
Windows桌面程序自动化控制之uiautomation模块全面讲解