一、Background
脚本语言:JavaScript
WebDriver版本:JMeterPlugins-WebDriver-1.4.0.zip
JMeter版本:5.1.1 r1855137
WebDriver Sampler Documentation:Documentation
二、脚本
//import packages
var pkg = JavaImporter(org.openqa.selenium, org.openqa.selenium.support.ui);
var wait = new pkg.WebDriverWait(WDS.browser,8);
var timeunit = java.util.concurrent.TimeUnit;
//开始
WDS.sampleResult.sampleStart();
WDS.sampleResult.getLatency();
//打开 URL
WDS.browser.get('http://127.0.0.1/');
//登录
//输入账号密码
var userName = WDS.browser.findElement(pkg.By.id('account')); //定位方式:'id'/'name'/'xpath'/'cssSelector'…
userName.click(); //点击
userName.sendKeys(['123456']);//传值
var userPassword = WDS.browser.findElement(pkg.By.id('password'));
userPassword.click();
userPassword.sendKeys(['000000']);
//点击登录按钮
var login = WDS.browser.findElement(pkg.By.xpath('//*[@id="root"]/div/div/div[3]/div/form/button'));
login.click();
//登录后,需要调用"WDS.browser.getWindowHandle()" 方法才能定位登录后的页面的元素、
WDS.browser.switchTo().window(WDS.browser.getWindowHandle());
//定义sleep函数
function sleep(delay) {
var start = (new Date()).getTime();
while ((new Date()).getTime() - start < delay) {
continue;
}
}
sleep(5000);//等待5秒(等待页面加载,否则下一步的元素无法定位到)
//设置整个事务的总超时时间
WDS.browser.manage().timeouts().pageLoadTimeout(20,timeunit.SECONDS);
//断言登录后的页面是否加载成功
if(WDS.browser.getTitle()!='首页') {
WDS.sampleResult.setSuccessful(false);
WDS.sampleResult.setResponseMessage('Expected title to be 首页');
}else{
WDS.log.info(WDS.browser.getTitle()+" 加载成功!"); //true
}
//点击“人员管理”
var Melts = WDS.browser.findElement(pkg.By.xpath('//*[@id="root"]/div/section/header/div[2]/ul/li[2]/span'));
Melts.click();
sleep(1000);
//断言人员管理是否加载成功(这里不能直接用上面的Melts获取断言的文本,会报错)
var str = WDS.browser.findElement(pkg.By.xpath('//*[@id="root"]/div/section/header/div[2]/ul/li[2]/span')).getText();//获取用来断言的元素的文本
//方式一:
// if(str!='人员管理') {
// WDS.sampleResult.setSuccessful(false);
// WDS.sampleResult.setResponseMessage('Expected title to be 人员管理');
// }else{
// WDS.log.info(WDS.browser.getTitle()+" 加载成功!"); //true
// }
//方式二:
if(str.match('人员')) {
WDS.log.info(WDS.browser.getTitle()+" 加载成功!"); //true
}else{
WDS.sampleResult.setSuccessful(false);
WDS.sampleResult.setResponseMessage('Expected title to be 人员管理');
}
//方式三:
// if(str.search('人员')!= -1) {
// WDS.log.info(WDS.browser.getTitle()+" 加载成功!"); //true
// }else{
// WDS.sampleResult.setSuccessful(false);
// WDS.sampleResult.setResponseMessage('Expected title to be 人员管理');
// }
//end,关闭浏览器
WDS.sampleResult.sampleEnd();