js 模擬報文發送requst請求(模擬點擊按鈕等操作)。


1.問題描述:

          在實際開發過程中,會因為各種各樣的問題, 導致一批數據,統一執行一個操作或者一樣的請求。

 

2.實現基礎知識必備:

    2.1Chrome中關於Console的輸出(js調試):

      console.log 用於輸出普通信息 

      console.info 用於輸出提示性信息

      console.error用於輸出錯誤信息

      console.warn用於輸出警示信息

      console.dir(console)  可以查看console 下的所有方法

 

其他console控制台中的內部方法可以參考:

參考優秀博客:https://www.cnblogs.com/Renyi-Fan/p/9687315.html#_label0_2   ; https://www.cnblogs.com/Renyi-Fan/p/9687315.html

參考googleApi原版文檔:  https://developers.google.com/web/tools/chrome-devtools/console/api

2.2  JS  中常用的方法函數的使用

 JavaScript 中的常用對象,經常忘記方法名稱 : https://www.w3school.com.cn/jsref/jsref_obj_string.asp

 

 

a. sql查詢出來數據,Execl導出,之后轉換超過需要個格式裝換成object對象

  Execl中的數據選擇需要的行,直接復制到 Notepad2(系統自帶) 中,利用他里面的正則表達式的替換規則做替換。(Ctrl+H)調出替換窗口

 1.經常使用的正則表達式 :Regular expression search  \s+  1個或者多個空白符
 2. 換行做替換用: 格式轉換成 Transform backslashes  ,search String 中用\r\n做轉換 
 3. 用在線工具 : http://www.bejson.com/json/col2json/  EXCEL ,CSV 轉JSon

     把execl 中自己選擇的行列直接復制過去,點擊裝換就 

[

{"CreateTime":"2019/07/03 04:44:15","LastUpdateTime":"2019/07/03 04:44:34"},
{"CreateTime":"2019/07/03 06:10:16","LastUpdateTime":"2019/07/03 06:10:35"}]

 

 

 

 

 

 

b. object 對象集合foreach 訪問object中的每個對象 

b1.對於逗號分隔的多個對象的訪問 

         var   obstr="1050516,64244187";

           function  testTestIdStr(textStr)

{

    //組裝成自己想要的的數據(用逗號分隔成元素)

     var Ids=textStr.split(',');

     ids.forEach(o=>{

      console.info(o);

 });

}

 

   b2. 對於多行的數據的(notePad2 中替換 execl 中的數據替換成一個字符串)

               var   obstr="1050516,64244187##1050538,64271921##1050554,64287642##1050593,64166857##1050669,63310506##1050870,64226341";

                   function textStr2(textOrderIdStrs)

{
var obs=textOrderIdStrs.split('##');
obs.forEach(o=>{
var obAttrs=o.split(',');
console.info(obAttrs[0]);
});
}

 

     b3.對於裝換成的JSon格式的訪問

var b=[
{"PKID":"958624","OrderId":"47763169","CreatedBy":"AUTOCommon","CreateTime":"2019/2/3 3:33"},
{"PKID":"958636","OrderId":"47514656","CreatedBy":"AUTOCommon","CreateTime":"2019/2/4 19:48"}
];

function textJson(testStr)
{
if(testStr.length==0)
{
return;
}
//下標訪問方式
testStr[0];
testStr.forEach(o=>{
console.info(o);
//直接訪問對象中成員
console.info(o.PKID);
})
}

 

c.js 中的定時服務的使用

  • setInterval() :按照指定的周期(以毫秒計)來調用函數或計算表達式。方法會不停地調用函數,直到 clearInterval() 被調用或窗口被關閉。
  • setTimeout() :在指定的毫秒數后調用函數或計算表達式。

                                                                                        setInterval(code,millisec,lang)(可以執行多次)

參數 描述
code 必需。要調用的函數或要執行的代碼串。
millisec 必須。周期性執行或調用 code 之間的時間間隔,以毫秒計。
lang 可選。 JScript | VBScript | JavaScript

 

                                                 setTimeout(code,millisec,lang)(只執行一次)
參數 描述
code 必需。要調用的函數后要執行的 JavaScript 代碼串。
millisec 必需。在執行代碼前需等待的毫秒數。
lang 可選。腳本語言可以是:JScript | VBScript | JavaScript

 

function  setIntervalStr()
{
  var count=0; var lencount=3;
  
//循環調用 console.time("setInterval"); var flag=setInterval( function(){ if(count>=lencount) { clearInterval(flag); } console.info(count); count++; },1000) console.timeEnd("setInterval");
//單次調用 console.time("setTimeout"); var flag2=setTimeout(function(){ console.info("aaaaa"); },2000); console.timeEnd("setTimeout"); }
 
        

執行結果: 從輸出結果來看 兩個定時期中的待執行的方法是異步的,不影響主線程的正常執行。

 

 

3.實現方法:(F12,查詢本次調用回來的報文)

       循環調用同一個方法,數量多時,防止接口被打死,用了setInterval 的定時循環;限制執行過程中防止同一個單子重復調用,需要加把下標致前。

調用方法職中得request參數

request  headers參數

1.模擬一次報文請求中  Form Data 數據  請求

/// 定時循環調用執行方法
function textCallsetInterval(textOrderIds)
{
var oBaosuns=textOrderIds.split(','); var index=0; var count=oBaosuns.length;
// 定時服務開始
var flag=setInterval (function(){ if(index>=count) {
//定時服務終止 clearInterval(flag); }
//要執行請求的對象
var o1=oBaosuns[index];
//先放在這里,防止重復操作 index
++;
//調用方法與 NetWork中單次調用中 RequestHeaders 中的path, obj需要傳遞額參數為 NetWork中的 全量Form Data 數據的組裝 $.post(
'/XX/XXX',{ guid: 'b682d392-6196-4294-b9e6-58f869a52f37', servicePath: 'XXXXXX', serviceName: 'IXXXXXXX', operationName: 'XXXXXXXXX', extendHistories:[{Index:1}], parameterValues:[{Index:1 },{Index:2,Value:o1 },{Index:3,Value:2 },{Index:4},{Index:5},{Index:6 },{Index:7},{Index:8,Value:0}], },function(result){ if(!result.IsSuccess) { console.error(o1); } else { console.log (o1); } }); } ,2000) }

2.如果有按鈕,則模擬點擊按鈕事件

var a='64131995,64136656'
var datas=a.split(',');
var i=0;
function auto() {
    if (i <datas.length) {
          setTimeout(() => {
            //對發送請求中的參數重新進行賦值
              var request = $("#requestcontainer ul li");
              request.eq(2).find('input').val(datas[i]);
              console.info(datas[i]);
              i++;
             //找到需要操作的按鈕的模擬點擊操作
            $('#callWcfServiceBtn').click();
            auto();
     }, 2000);
   }
}

 

4.總結: 

        JS腳本編程,能輔助我們處理一些重復的工作,而不用動后台代碼。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM