接口测试 Jmeter_驱动浏览器做 GUI 测试

飞天小子的性能课堂 · April 30, 2018 · Last by bill replied at May 15, 2018 · 2497 hits

jmeter不光可以完成性能测试、接口测试,现在也可以依靠WebDriver来完成GUI的功能自动化测试了,是不是很神奇?

1:下载JMeterPlugins-WebDriver-1.3.1.zip,解压之后把lib目录下的所有jar文件和lib/ext目录下的JMeterPlugins-WebDriver.jar文件分别拷贝到本地Jmeter安装目录下的lib目录中和lib/ext目录中。

下载地址 https://jmeter-plugins.org/downloads/old/ 测试交流群 317765580

2:进入本地Jmeter安装目录下的lib目录中,把httpclient、httpcore、httpmime三个jar包较低版本的删除掉,只保留较高版本的。

3:启动Jmeter,可以看到图3.38中配置元件中新增了几个Driver Config。

4: 新建Chrome Driver Config

5:新建jp@gc - WebDriver Sampler ,我们执行一些默认代码

try {

var pkg = JavaImporter(org.openqa.selenium, org.openqa.selenium.support.ui)

##此处是导入support.ui的类,对应的是selenium-support.jar

WDS.log.info('WDS Name:' + WDS.name)

WDS.sampleResult.sampleStart()

WDS.browser.navigate().to("https://qas.cttq.com")

##调用navigate方法,跳转url,对应的方法在selenium-remote-driver.jar

WDS.log.info('Browser Title:' + WDS.browser.getTitle())

##调用getTitle方法,捕捉title,对应的方法在selenium-remote-driver.jar

WDS.log.info('Browser CurrentUrl:' + WDS.browser.getCurrentUrl())

WDS.log.info('Cookie:' + WDS.browser.manage().getCookies())

WDS.log.info('Request Header: ' + WDS.sampleResult.getRequestHeaders())

var what = WDS.browser.findElement(pkg.By.name('username'))

what.sendKeys(['8107000'])

##定位name元素,触发sendKeys事件,填写登录名

var where = WDS.browser.findElement(pkg.By.name('password'))

where.sendKeys(['000000'])

##定位name元素,触发sendKeys事件,填写登录名

var button = WDS.browser.findElement(pkg.By.id('login-btn'))

button.click()

##定位id元素,触发click事件,点击登录

##上面调用的几种封装元素和事件,对应的方法在selenium-remote-driver.jar

var wait = new pkg.WebDriverWait(WDS.browser, 5000)

##调用了WebDriverWait,对应的方法在selenium-support.jar中。数值为ms

wait.until(pkg.ExpectedConditions.presenceOfElementLocated(pkg.By.xpath("/html/body/div/header/div[1]/div/img")))

##调用前面的wait 5s,强制等待元素出现

var results = WDS.browser.findElements(pkg.By.xpath("/html/body/div/header/div[1]/div/img"))

WDS.log.info('Result: ' + results)

if(results.empty) {

WDS.sampleResult.successful = false

WDS.sampleResult.responseMessage = “登录失败“

}

else{WDS.log.info("登录")}

##断言元素是否捕捉成功

WDS.sampleResult.sampleEnd()

} catch(ex) {

WDS.log.error(ex)

WDS.sampleResult.successful = false

WDS.sampleResult.responseMessage = 'There were no results returned'

WDS.sampleResult.sampleEnd()

}
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 4 条回复 时间 点赞

新尝试,赞

这都被你发现了。有app driver插件吗?

为啥没打开浏览器呢 是不是需要制定驱动的位置?

大神,mysql config 填写的jar路径,有没有支持相对路径的方案?绝对路径上jenkins 多个job ,人工手调好麻烦

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up