腳本開發-檔案下載下傳
by:授客 QQ:1033553122
下載下傳簡介
對 HTTP協定來說,無論是下載下傳檔案或者請求頁面,對用戶端來說,都隻是發出一個GET請求,并不會記錄點選後的“儲存”、“另存為操作”。
如下,點選頁面中tar.gz壓縮包,用工具可以清楚的看到,用戶端僅是發起了一個GET請求,請求擷取點選的資源。接着伺服器傳回包含請求資源響應消息
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5ycuFmc091Zz9CXu9Wbt92Yvw1cldWYtl2LcVGb5R3c3c2bsJ2Lc52YuMnah5Waz5yZtl2cvw1LcpDc0RHaiojIsJye.gif)
LoadRunner記錄了用戶端發出的對檔案的請求,并能夠收到伺服器傳回的内容。是以,我們要做的額外工作就是“儲存”、“另存為”---可以通過關聯的方法擷取伺服器傳回的内容,并寫入檔案儲存即可。
注意:這裡的要儲存的内容為http的消息主體,也就是上述兩箭頭垂直相交形成區域的内容。
具體執行個體
如下,通路圖示頁面,并下載下傳紅色方框框選的壓縮包
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5ycuFmc091Zz9CXu9Wbt92Yvw1cldWYtl2LcVGb5R3c3c2bsJ2Lc52YuMnah5Waz5yZtl2cvw1LcpDc0RHaiojIsJye.gif)
腳本主要由以下四個action組成,其中vuser_init,vuser_end的内容為預設值,未存放錄制内容:
vuser_init
download_page
download_file
vuser_end
download_page,download_file的具體代碼如下
//
通路下載下傳頁面
download_page()
{
web_url("dist",
"URL=http://tsung.erlang-projects.org/dist/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t11.inf",
"Mode=HTML",
LAST);
return 0;
}
//錄制下載下傳操作
download_file()
int
file_size;
檔案大小
//fwrite緩沖區大小
long
file_handle = NULL;
檔案句柄
如果要儲存的資料超過1024個位元組,使用以下函數設定參數大小,保證參數可容納要儲存檔案的大小
web_set_max_html_param_len("10000");
//将響應資訊存放到
file_content參數
web_reg_save_param("file_content", "LB=", "RB=", "SEARCH=BODY", LAST);
web_link("idx-tsunami-0.1.1.tar.gz",
"Text=idx-tsunami-0.1.1.tar.gz",
"Snapshot=t12.inf",
//擷取響應檔案大小
file_size =
web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);
if(file_size > 0)
//以“二進制+寫”的方式打開檔案(如下,在d盤根目錄下建立idx-tsunami-0.1.1.tar.gz檔案
if((file_handle = fopen("d:\\idx-tsunami-0.1.1.tar.gz", "wb")) ==
NULL)
lr_output_message("檔案操作失敗!");
return -1;
//寫入檔案内容
fwrite(lr_eval_string("{file_content}"), file_size, 1,
file_handle);
//關閉檔案
fclose(file_handle);
注意:
1.如下,從BODY,即消息主體中查找,不指定左右邊界,即查找所有消息主體的内容
2.上述的web_link手工改成如下的web_url也是可以的。
web_url("下載下傳idx-tsunami-0.1.1.tar.gz",
"URL=http://tsung.erlang-projects.org/dist/idx-tsunami-0.1.1.tar.gz",
"RecContentType=application/x-gzip",
"Referer=http://tsung.erlang-projects.org/dist/",
解說:
1.
"URL=http://tsung.erlang-projects.org/dist/idx-tsunami-0.1.1.tar.gz",
此處的URL為指定資源下載下傳位址,通常通過右鍵資源連接配接-->屬性,可看到,如下圖
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5ycuFmc091Zz9CXu9Wbt92Yvw1cldWYtl2LcVGb5R3c3c2bsJ2Lc52YuMnah5Waz5yZtl2cvw1LcpDc0RHaiojIsJye.gif)
2."Referer=http://tsung.erlang-projects.org/dist/",
這裡的Referer指下載下傳資源所引用的頁面,Referer是HTTP
header的一部分,當浏覽器向web伺服器發送請求的時候,一般會帶上Referer,告訴伺服器我是從哪個頁面連結過來的,伺服器籍此可以獲得一些資訊用于處理。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5ycuFmc091Zz9CXu9Wbt92Yvw1cldWYtl2LcVGb5R3c3c2bsJ2Lc52YuMnah5Waz5yZtl2cvw1LcpDc0RHaiojIsJye.gif)
作者:授客
QQ:1033553122
全國軟體測試QQ交流群:7156436
Git位址:https://gitee.com/ishouke
友情提示:限于時間倉促,文中可能存在錯誤,歡迎指正、評論!
作者五行缺錢,如果覺得文章對您有幫助,請掃描下邊的二維碼打賞作者,金額随意,您的支援将是我繼續創作的源動力,打賞後如有任何疑問,請聯系我!!!
微信打賞
支付寶打賞 全國軟體測試交流QQ群