一般而言,對於頁面的“導出”操作,主要經歷如下兩個操作:①根據數據庫的內容,將文件導出到應用服務器上;②將服務器上的文件下載到本地電腦;
Jmeter同LoadRunner類似,只能記錄服務端與客戶端之間的數據流轉,而不能記錄本地操作,因此對於含有導出功能的性能需求,將服務端的文件下載到本地電腦,需要我們手工加入代碼實現(上面所述的步驟②)。
【1.導出請求分析】“導出”操作對應的兩個請求如下:

【2.獲取文件的服務端路徑】
在請求“97”下使用“后置處理器→正則表達式”,提取導出文件的名稱。

【3.獲取文件的內容並寫入本地】
在請求“98”下使用“BeanShell PostProcessor”,獲取導出文件的內容,並寫入本地(Java)。

注:①僅以文件名作為filepath的值,則導出的文件會默認保存在Jmeter安裝路徑的bin(即JVM的啟動路徑);
//備注:BeanShell PostProcessor中代碼如下: //JMeter的內置API:prev.getResponseData()獲取請求的響應內容 byte[] responseData = prev.getResponseData(); //①僅以文件名作為filepath的值,則導出的文件會默認保存在Jmeter安裝路徑的bin(即JVM的啟動路徑); //private String filePath = "${ExportExcelName}"; //②指定絕對路徑 private String filePath = "D:/JMeterTest/Wy/${ExportExcelName}"; //正則表達式提取時的引用名稱 BufferedOutputStream bos = null; FileOutputStream fos = null; File file = null; try { File file = new File(filePath); fos = new FileOutputStream(file); //不添加參數true,以非追加的方式添加內容 bos = new BufferedOutputStream(fos); bos.write(responseData); } catch (Exception e) { e.printStackTrace(); } finally { if (bos != null) { try { bos.close(); } catch (IOException e1) { e1.printStackTrace(); } } if (fos != null) { try { fos.close(); } catch (IOException e1) { e1.printStackTrace(); } } }
