模拟操作之word编辑问题
背景:软航的word编辑操作,在模拟操作中无法进行定位处理。
方案:
- 打开需要进行模拟的编辑页面
- 找到保存按钮或上一步打开编辑页面loadword的对应的方法,在方法中看能否找到保存的是哪个文件(保存方法的request中看能否查到)。
- 在本机找到对应的文件缓存目录(js中找到的路径)
- 使用poi或其他中间件操作word
- 模拟操作进行提交。
例如:
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