作为QA,我使用WSH脚本在IE中进行自动上传,部署和一些Web测试.使用JavaScript的WSH(wscript)可以打开IE窗口,激活它并访问DOM模型来执行某些操作或验证一些预期的结果.它是一种Selenium 1.0方法,但不需要JAVA和任何环境配置,因此可以在任何开发人员/ qa windows机器上进行即时执行.
最近我发现了NodeJS及其所有功能,除了使用Windows IE DOM进行操作.无法找到如何运行旧的WSH脚本来测试IE DOM并同时使用一些NodeJS模块来解析XML或运行测试报告服务器的方法.
所以问题:是否可以运行WSH JavaScripts和Node.js并使用来自两个世界的所有好东西?我担心,它不是,但希望有人有解决方法......
作为解决方法,也许有人在NodeJS中找到了启动IE窗口访问其DOM的方式(...添加自己的js脚本或运行SendKeys到它)!
我知道NodeJS不是为了执行Windows管理任务而设计的.
虽然实际上并没有按照问题的要求结婚,但@o_nix在评论中提出了对https://github.com/idobatter/node-win32ole的建议.
我建议这个模块可以满足从谷歌到达这里的人们的许多问题(就像我一样).它也可以从这里的npm获得:https://www.npmjs.com/package/win32ole
该模块还有很多示例,例如:https: //github.com/idobatter/node-win32ole/blob/dev0.1.3/examples/activex_filesystemobject_sample.js
var win32ole = require('win32ole');
. . .
var withReadFile = function(filename, callback){
var fso = new ActiveXObject('Scripting.FileSystemObject');
var fullpath = fso.GetAbsolutePathName(filename);
var file = fso.OpenTextFile(fullpath, 1, false); // open to read
try{
callback(file);
}finally{
file.Close();
}
};
var withEachLine = function(filename, callback){
withReadFile(filename, function(file){
// while(file.AtEndOfStream != true) // It works. (without unary operator !)
// while(!file.AtEndOfStream) // It does not work.
while(!file.AtEndOfStream._) // *** It works. oops!
callback(file.ReadLine());
});
};
withEachLine(testfile, function(line){
console.log(line);
});
Run Code Online (Sandbox Code Playgroud)
所以,对我而言,这与将旧的WSH脚本结合起来一样好.当然会涉及调整,但随后它再见了WSH.
更具体地说,对于手头的问题,这是一个演示IE脚本的片段:https: //github.com/idobatter/node-win32ole/blob/master/examples/ie_sample.js
var win32ole = require('win32ole');
. . .
var ie = new ActiveXObject('InternetExplorer.Application');
ie.Visible = true;
for(var i = 0; i < uris.length; ++i){
console.log(uris[i]);
ie.Navigate(uris[i]);
win32ole.sleep(15000, true, true);
}
ie.Quit();
Run Code Online (Sandbox Code Playgroud)