jmeter应用WebDriver Sampler验证大文件分片上传
文章目录
一、背景
我们的系统中有文件上传功能,小文件可以直接通过调用文件上传接口进行验证,但系统对于超过1M的文件,会按1M大小进行拆分后分片上传,并支持断点上传。
通过Fiddler跟踪结果,会重复调用多个Upload,每个接口上传文件内容都为“blob”,而不是要上传的文件,通过接口调用方式无法模拟。如下图:
通过Jmeter的Plugins Manager,发现有Selenium相关插件,于是下载该插件,尝试模拟浏览器方式上传文件。
二、插件安装
-
安装插件管理器:Plugins Manager 下载地址:
https://jmeter-plugins.org/downloads/all/ -
将下载的plugins-manager.jar放至jmeter目录下的lib/ext目录下,然后重启Jmeter,这时菜单->选项下会多出Plugins Manager菜单,打开即可对插件进行安装、升级。
-
打开Plugins Manager菜单,搜索“selenium”,可以搜索到Selenium/WebDriver Support插件,安装该插件。
-
我们使用Chrome浏览器模拟,还需要下载chromedriver.exe
三、WebDriver Sampler应用
1.添加WebDriver Sampler取样器:
2.添加并配置Chrome Driver:
- 在WebDriver Sampler取样器下添加Chrome Driver Config的配置元件
- 在WebDriver Sampler取样器下添加Chrome Driver Config的配置元件
在Proxy中选择“Use system proxy settings”
Path to Chrome Driver中填写chromedriver.exe的存放路径
3.编辑WebDriver Sampler脚本
因上传文件,需要调用系统文件进行上传,这里不是浏览器行为,我们使用robot方式上传
脚本如下:
//导入WebDriver相关包
import org.apache.jmeter.services.FileServer;
import org.openqa.selenium.*;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection;