51Testing软件测试论坛

标题: 写一个js实现的,WEB自动化、数据采集、同大家分享 [打印本页]

作者: wuxue107    时间: 2014-6-25 23:36
标题: 写一个js实现的,WEB自动化、数据采集、同大家分享
思路:js创建个InternetExplorer.Application对象,将DocumentComplete事件绑到一个function,在这个function里将额外的本地jQuery(jQuery名称在脚本里已全部替换为Nop)加载到Document里。
并将常用的window、document、Script、$(JQuery)导出到脚本里。这样就可以像前端开发一样可以使用jQuery去操作Dom了,也可以用ajax去采集数据了。之前是用vbs写的,最后用js,是因为js可以很好融合到jQuery。

[attach]90879[/attach]
目录里有如下几个文件
│  Test2.js       ---脚本主要在这里面些
│  1.xlsx         ---存放采集到的数据
├─Lib
│      DataLib.js  --- 数据处理,包含几json2csv、json2xml、xml2csv、xml2json等函数
│      ExcelLib.js  --- DataLib扩展,处理Excel
│      IELib.js     ---绑定DocumentComplete,变量导出
│      jquery.alerts.js  ---在脚本运行中提供用户交互
│      nop-1.8.0.js  ---修改名称后的jQuery1.8.0

其中Test2.js就是一个Demo,就是一个采集例子,双击运行或cscript Test2.js运行test2.js,输入打开一个网站,输入提示的验证码,就会对采集的数据录入到Excel中

  1. if(WScript.FullName.substr(WScript.FullName.length-11,11) != 'cscript.exe'){
  2.         WScript.CreateObject("Wscript.Shell").Run('cscript //e:javascript "' + WScript.ScriptFullName + '"');
  3.         WScript.Quit();
  4. }

  5. scriptpath = WScript.ScriptFullName.substring(0,WScript.ScriptFullName.lastIndexOf("\\"));
  6. function include(f){
  7.         var p = "";
  8.         if(f.indexOf(":")!=1) p = scriptpath + "\\Lib\\";
  9.         eval(WScript.CreateObject("Scripting.FileSystemObject").OpenTextFile(p + f).ReadAll());
  10. }

  11. //#################### 以上固定无需修改。########################

  12. var username = "minyihua";
  13. var password = "baggio919871020";

  14. include("IELib.js");
  15. InitWebBower("http://chuanbo.weiboyi.com/");
  16. doLoopEvents(); // 代码执行到此处将进入事件循环,不在向下执行;


  17. // ###############################################################
  18. function loadComplete(URL){

  19.         if(/baidu/.test(URL)){
  20.                 print('百度');
  21.         }else if( PageNo == 10 ){
  22.                 print('第10个页面处理');
  23.         }else if("http://chuanbo.weiboyi.com/" == URL ){
  24.                 $("#tonggao_qd").click();
  25.                 $("#username").attr("value",username);
  26.                 $("#password").attr("value",password);
  27.                 print(window.ss);
  28.                 InputBox("输入验证码:",function(v){
  29.                         if(null != v){
  30.                                 $("#piccode").attr("value",v);
  31.                                 $("#login-submit").click();
  32.                         }
  33.                 });
  34.         }else if("http://chuanbo.weiboyi.com/hwreservation/account" == URL){
  35.                 var tkv = $("#web_csrf_token").val();
  36.                 var n;
  37.                 var url;
  38.                 //include("DataLib.js");
  39.                 include("ExcelLib.js");
  40.                 var rline = 2;
  41.                 DataLib.initExcel('1.xlsx');
  42.                 for (n=0;n<90 ;n++)
  43.                 {
  44.                         url = '/hwreservation/account/list/requirement_id/?web_csrf_token=' + tkv + '&start=' + n*100 + '&limit=100';
  45.                         $.ajaxSetup({async: false});
  46.                         getJson(url,function(data){
  47.                                 DataLib.json2range(data.data.list,['weibo_name','url','followers_count','external_tweet_price','location','audience_gender','hand_tags','professions','reservation_notice','cooperation_index','posts_avgretweet_count','posts_avgcomment_count'],'A'+(n*100+rline) );
  48.                         });       
  49.                         print('采集数据:' + ((n+1)*100) + '条 ... ');
  50.                 }
  51.                 isComplete = true;  //将此全局变量设置为true后将会退出脚本
  52.         }else{
  53.                 //ie.document.Script.execScript("var hhh = {t:5};var backfunc = function(f){f(hhh);}");
  54.                 //window.backfunc(function(v){
  55.                 //        WScript.Echo(v.t);
  56.                 //});
  57.         }

  58. }

复制代码

作者: 赵佳乐SMILE    时间: 2014-6-26 10:44
高大上
作者: wuxue107    时间: 2014-6-26 10:55
使用中发现VBSEDIT可以调试js代码,顿时很爽。
作者: 黑羽祭    时间: 2014-6-26 16:13
顶~~~~




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2