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()

 }


↙↙↙阅读原文可查看相关链接,并与作者交流