如何在PhantomJS或CasperJS中导入其他javascript模块
How to import other javascript module in PhantomJS or CasperJS
我正在尝试使用CasperJS构建一个功能测试。caseperjs由后端测试套件使用以下命令运行:
PHANTOMJS_EXECUTABLE=../client/node_modules/phantomjs/bin/phantomjs ../client/ext_modules/casperjs/bin/casperjs test ../client/test/functional/init.coffee
在init.coffee中,我想导入/包含紧挨着它的其他模块(文件)。如何做到?
以下不起作用:
require("user")
我只想从其他文件中获取一个内容到init.coffee
在尝试了许多其他建议(每个建议都应该在相应的环境中工作)后,找到了这个解决方案:
phantom.page.injectJs( 'script.js');
从1.1开始,CasperJS依赖PhantomJS的原生require():
https://groups.google.com/forum/#!topic/fintomjs/0-DYNn_6Bs
注入依赖项
在注入额外模块时,CasperJS会查找相对于cur目录的路径(运行casperjs命令的位置)我们可以使用clientScripts
选项注入依赖项。然而,注入的依赖项不能"全局"使用require
。它们会立即注入到加载的每个页面中。
casper.options.clientScripts = ["path/relative/to/cur/dir"]
此外,我们还可以使用命令行参数注入模块:
casperjs test --includes=foo.js,bar.js path/to/the/test/file
使用require
要导入用户模块,请使用:
require "./user-module.coffee"
然后在用户模块中,您也可以使用require。解决了使用require路径相对于当前文件(调用require的位置)
如果在用户模块中要导入casper-libs,则需要修补require,检查:https://casperjs.readthedocs.org/en/latest/writing_modules.html
文档中有一节关于这一点
var require = patchRequire(global.require);
require('./user');
在您的情况下,您应该使用global.require
,因为您使用的是CoffeeScript。
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 如何添加浮动和非浮动,其他
- 与其他库的jQuery.noConflict()
- 播放当前视频时如何停止其他视频?JavaScript
- 以其他名称导入 ES6 类
- NodeJS-从其他文件导入函数,并像以前一样使用
- 如何将javascript ES6 repo编译输出导入其他repo
- 如何将 jQuery 嵌入/导入到另一个 JavaScript 库中,而不会与网站上部署的 jQuery/其他库发生潜在
- 如何从其他html导入代码
- 如何在PhantomJS或CasperJS中导入其他javascript模块
- 如何使用聚合物在其他浏览器中启用HTML导入
- 加载/导入js代码的需求或其他东西
- 无法在expressJs的其他模块中导入app.js
- 从其他地方导入公钥到CngKey
- 将焦点设置在使用jQuery加载方法导入的其他页面的元素上
- 如何访问导入模块的其他功能中的道具
- 导入HTML节与支持其他javascript函数
- 如何从其他coffeescript文件导入文件
- 从其他应用程序导入JS/CSS以进行HTML响应
- web应用程序-是否有任何方法可以在NetBeans或其他IDE中为导入的JavaScript完成代码