模拟操作之word编辑问题

背景:软航的word编辑操作,在模拟操作中无法进行定位处理。

方案:

  1. 打开需要进行模拟的编辑页面
  2. 找到保存按钮或上一步打开编辑页面loadword的对应的方法,在方法中看能否找到保存的是哪个文件(保存方法的request中看能否查到)。
  3. 在本机找到对应的文件缓存目录(js中找到的路径)
  4. 使用poi或其他中间件操作word
  5. 模拟操作进行提交。

例如:

1.软航中保存的按钮,看SaveToURL(type,returnFlag)方法,首先接受了所有的修订AcceptAllRevisions(),接受修订调用了ActiveX插件进行的,document.getElementById(“TANGER_OCX”).ActiveDocument.AcceptAllRevisions(),接受修订完成后进行的word上传保存操作。从如下js中获取

var returnFlag_glob = 0;
    var spxtPath = 'http://149.0.150.10:8080/ajgl/';
	var sfJaws;
  	function SaveToURL(type,returnFlag){
		var sfgg="0";
		if(sfgg=='1'){
			AcceptAllRevisions();
		}
  	     if(type == 2){
             if(confirm("定稿之后文书将无法修改,确认要继续?")){
                 commit(type,returnFlag);
             }
         }else{
             commit(type,returnFlag);
         }
	}
	//接受所有修订
	function AcceptAllRevisions()
	{
		document.getElementById("TANGER_OCX").ActiveDocument.AcceptAllRevisions();
	}
  	function commit(type,returnFlag){
  		showLoading();
			$("#loading-indicator-LoadingInfo-overlay").html("<div style='text-align:left;background-color:yellow;width:100px;color:red;font-size:14px;margin-top:3px;'><strong>数据提交中....</strong></div>");
	  		var ntkoobj = document.getElementById("TANGER_OCX");
	  		var filePath = 'M13/fgsws/2021/4_1/M13_da5681a8-b648-4b34-9f0d-4b17bb3d4e44.doc';
	 		var fileNameArray = filePath.split("/");
	 		var fileName = fileNameArray[fileNameArray.length-1];
	 		var isgk = $("#sfgk").val();
			var isJaws=sfJaws; //是否是结案文书
	 		if(!isgk){
	 			isgk = '';
	 		}
	 		var bgkyy = $("#bgkyy").val();
	 		if(!bgkyy){
	 			bgkyy = '';
	 		}
	 		returnFlag_glob = returnFlag;
	 		//ntkoobj.WebUserName = "11"; 
 			var save_type = 5;
 			if(fileName.indexOf(".rtf") > 0){
 				save_type = 3;
 			}

 			var saveUrl = 'http://149.0.150.10:8080/ajgl/FgswsServletUpload';
 			if(type==2){//定稿
 				saveUrl= 'http://149.0.158.70/ajgl/FgswsServletUpload';
 	 		}
	 		saveUrl += '?isJaws='+isJaws+'&spid=&dsrId=ef55d25a-48fb-45e8-ba4f-a6a89a217b5b&sddzid=&fydm=M13&mbids=M0026145bce-67df-473e-93a8-acb18dcdd9f8&ajbs=c9fdcdcc-940f-4eaa-9d9b-339687ec2354&isgk='+isgk+'&bizpaycode=&bgkyy='+bgkyy+"&sfzdybt="+$("#sfzdybt").val()+"&wjxsmc="+$("#wjxsmc").val()+"&type="+type+loginParams;
			saveUrl+="&ywjlid=&txm=3115585141528-20190001";
		console.log(saveUrl);
		if (browser=="IE"){
	 			var doc_res=ntkoobj.SaveAsOtherFormatToURL(save_type,saveUrl,'EDITFILE','',fileName,'commitForm',true);
	 			//var doc_res=ntkoobj.SaveToURL(encodeURI(saveUrl),'EDITFILE','',fileName,0); 
	 			var res = doc_res.split("#");
	 			if(res[0]=="success"){
	 				hideLoading();
	 				if(returnFlag == 0){
	 					 var url=spxtPath+'/xbsswsIndexAction/inFgswsSideIndex.action?type=1&swh=0&jlid='+res[1]+'&ajbs=c9fdcdcc-940f-4eaa-9d9b-339687ec2354&nodeId=SPGL_SA&opr=edit';
	 					 window.parent.location = url+loginParams+"#refresh";
	 				}else{
	 					 if("1"=="main"){
	 					 	toback();
	 					 }else{
	 					 	closeWin();
	 					 }
	 				}
	  			}else{
	  				document.getElementById("TANGER_OCX").ShowTipMessage("提示","文书保存失败!");
	  				hideLoading();
	  			}
	 		}else{
	 			ntkoobj.SaveAsOtherFormatToURL(save_type,saveUrl,'EDITFILE','',fileName,'commitForm',true);
	 			//var doc_res=ntkoobj.SaveToURL(encodeURI(saveUrl),'EDITFILE','',fileName,0); 
	 		}
  	}
  		function savetourlre(type,code,html){
  		tipsShow = true;
		var res = html.split("#");
  		if(res[0] == "success"){
			var url=spxtPath+'/xbsswsIndexAction/inFgswsSideIndex.action?type=1&swh=0&jlid='+res[1]+'&ajbs=c9fdcdcc-940f-4eaa-9d9b-339687ec2354&nodeId=SPGL_SA&opr=edit';
			document.getElementById("TANGER_OCX").ShowTipMessage("提示","文书保存成功!");
			hideLoading();
			if(returnFlag_glob == 1){
				if("1"=="main"){
	 			 	toback();
	 			}else{
					closeWin();
				}
			}else{
				window.parent.location = url+loginParams+"#refresh";
			}
  		}else if(res[0] == "error"){
  			document.getElementById("TANGER_OCX").ShowTipMessage("提示","文书保存失败!");
  			hideLoading();
  		}
  	}
  	
	//保存之后的回调
  	function saveasotherurl(type,code,html){
  		tipsShow = true;
		var res = html.split("#");
  		if(res[0] == "success"){
			var url=spxtPath+'/xbsswsIndexAction/inFgswsSideIndex.action?type=1&swh=0&jlid='+res[1]+'&ajbs=c9fdcdcc-940f-4eaa-9d9b-339687ec2354&nodeId=SPGL_SA&opr=edit';
			document.getElementById("TANGER_OCX").ShowTipMessage("提示","文书保存成功!");
			hideLoading();
			if(returnFlag_glob == 1){
				if("1"=="main"){
	 			 	toback();
	 			}else{
					closeWin();
				}
			}else{
				window.parent.location = url+loginParams+"#refresh";
			}
  		}else if(res[0] == "error"){
  			document.getElementById("TANGER_OCX").ShowTipMessage("提示","文书保存失败!");
  			hideLoading();
  		}
  	}
  	document.getElementById("checkbox_d2").onclick=function (ev) {
		var checkbox_css = $("#checkbox_d2").attr("class");
		if(checkbox_css=="qiehuan"){
			$("#checkbox_d2").attr("class","qiehuan2");
			$("#checkbox_span").text("该文书是本案结案文书");
			sfJaws = 1;
		}else{
			$("#checkbox_d2").attr("class","qiehuan");
			$("#checkbox_span").text("该文书不是结案文书");
			sfJaws = 0;
		}
	}
    	
    	function clearbtn(){
    		$("#left_item").empty();
    	}
    	
    	function addbtn(nr){
    		$("#left_item").append(nr);
    	}

    	var json;
    	
    	function btnjson(mc,url){
    		if(json==""||json==null){
    			json = "'"+mc+"':"+"'"+url+"'";
    		}else{
    			json += ",'"+mc+"':"+"'"+url+"'";
    		}
    	}
    	
    	function getjson(){
    		//$("#temp").text("{"+json+"}");
    	}

2.在本机中找到对应的文件路径“M13/fgsws/2021/4_1/M13_da5681a8-b648-4b34-9f0d-4b17bb3d4e44.doc

3.使用poi进行word操作

4.操作完成或,模拟进行提交

参考资料:

aspose-word-for-java-acceptallrevisions-method-is-not-working-as-expected: https://stackoverflow.com/questions/49119524/aspose-word-for-java-acceptallrevisions-method-is-not-working-as-expected

Document. Open 事件 (Word): https://docs.microsoft.com/zh-cn/office/vba/api/word.document.open