范例

  1. WDS.sampleResult.sampleStart()
  2. try{
  3. //打开博客首页
  4. WDS.browser.get('http://xqtesting.blog.51cto.com')
  5. //测试代码结束
  6. WDS.sampleResult.sampleEnd()
  7. }catch(x){
  8. WDS.sampleResult.sampleEnd()
  9. //设置为结果失败
  10. WDS.sampleResult.setSuccessful(false)
  11. //返回信息设置为-_- sorry
  12. WDS.sampleResult.setResponseMessage('-_- sorry')
  13. }

以上是最简单的使用,算是一个尝鲜吧,其中WebDriver Sampler中代码编写可以扩展,和你编写WebDriver一样,可以利用By.id,By.cssSelector等方法进行元素的定位并操作,类似如下代码:

  1. var pkg = JavaImporter(org.openqa.selenium)
  2. WDS.browser.findElement(pkg.By.id('what')).sendKeys(['xiaoqiang'])
  1. try {
  2.  
  3. var pkg = JavaImporter(org.openqa.selenium, org.openqa.selenium.support.ui)
  4. WDS.log.info('WDS Name:' + WDS.name)
  5. WDS.sampleResult.sampleStart()
  6.  
  7. WDS.browser.navigate().to('https://app2.hoau.com:8423/cas2')
  8. WDS.log.info('Browser Title:' + WDS.browser.getTitle())
  9. WDS.log.info('Browser CurrentUrl:' + WDS.browser.getCurrentUrl())
  10. WDS.log.info('Cookie:' + WDS.browser.manage().getCookies())
  11. WDS.log.info('Request Header: ' + WDS.sampleResult.getRequestHeaders())
  12.  
  13. var what = WDS.browser.findElement(pkg.By.id('username'))
  14. what.sendKeys(['test01'])
  15. var where = WDS.browser.findElement(pkg.By.id('password'))
  16. where.sendKeys(['psw01'])
  17.  
  18. // var button = WDS.browser.findElement(pkg.By.cssSelector('.btn-submit'))
  19. var button = WDS.browser.findElement(pkg.By.xpath("//input[@type='submit']"))
  20. button.click()
  21.  
  22. var wait = new pkg.WebDriverWait(WDS.browser, )
  23. wait.until(pkg.ExpectedConditions.presenceOfElementLocated(pkg.By.xpath("//a[@title='Click here to log out']")))
  24. var results = WDS.browser.findElements(pkg.By.xpath("//a[@title='Click here to log out']"))
  25. WDS.log.info('Result: ' + results)
  26.  
  27. if(results.empty) {
  28. WDS.sampleResult.successful = false
  29. WDS.sampleResult.responseMessage = 'There were no results returned'
  30. }
  31.  
  32. var iter = results.iterator()
  33. var element = iter.next()
  34. WDS.log.info('User: ' + element.getText())
  35.  
  36. if('test01' != element.getText()) {
  37. WDS.sampleResult.successful = false
  38. WDS.sampleResult.responseMessage = 'Login Failure'
  39. }
  40.  
  41. WDS.sampleResult.sampleEnd()
  42. } catch(ex) {
  43. WDS.log.error(ex)
  44. WDS.sampleResult.successful = false
  45. WDS.sampleResult.responseMessage = 'There were no results returned'
  46. WDS.sampleResult.sampleEnd()
  47. }

扩展

为了解WDS 在JMeterUI下javascript脚本的能力,以及涉及到面问题相关的源码。

  • WDS (JMeterPlugins-WebDriver.jar)
  1. com.googlecode.jmeter.plugins.webdriver.sampler.WebDriverSampler
  2. com.googlecode.jmeter.plugins.webdriver.sampler.WebDriverScriptable
  3.  
  4. package com.googlecode.jmeter.plugins.webdriver.sampler;
  5.  
  6. import org.apache.jmeter.samplers.SampleResult;
  7. import org.apache.log.Logger;
  8. import org.openqa.selenium.WebDriver;
  9.  
  10. public final class WebDriverScriptable
  11. {
  12. private static final String[] EMPTY_ARGS = new String[];
  13. private String name;
  14. private String parameters;
  15. private Logger log;
  16. private WebDriver browser;
  17. private SampleResult sampleResult;
  18.  
  19. public void setName(String name)
  20. {
  21. this.name = name;
  22. }
  23.  
  24. public String getName() {
  25. return this.name;
  26. }
  27.  
  28. public void setParameters(String parameters) {
  29. this.parameters = parameters;
  30. }
  31.  
  32. public String getParameters() {
  33. return this.parameters;
  34. }
  35.  
  36. public String[] getArgs() {
  37. return this.parameters != null ? this.parameters.trim().replaceAll("\\s+", " ").split(" ") : EMPTY_ARGS;
  38. }
  39.  
  40. public void setLog(Logger log) {
  41. this.log = log;
  42. }
  43.  
  44. public Logger getLog() {
  45. return this.log;
  46. }
  47.  
  48. public void setBrowser(WebDriver browser) {
  49. this.browser = browser;
  50. }
  51.  
  52. public WebDriver getBrowser() {
  53. return this.browser;
  54. }
  55.  
  56. public void setSampleResult(SampleResult sampleResult) {
  57. this.sampleResult = sampleResult;
  58. }
  59.  
  60. public SampleResult getSampleResult() {
  61. return this.sampleResult;
  62. }
  63. }
  • WDS.browser (WebDriver - selenium-api-2.47.0.jar)
  1. org.openqa.selenium.WebDriver
  2. org.openqa.selenium.Cookie
  3.  
  4. package org.openqa.selenium;
  5.  
  6. import java.net.URL;
  7. import java.util.List;
  8. import java.util.Set;
  9. import java.util.concurrent.TimeUnit;
  10. import org.openqa.selenium.logging.Logs;
  11.  
  12. public abstract interface WebDriver extends SearchContext
  13. {
  14. public abstract void get(String paramString);
  15.  
  16. public abstract String getCurrentUrl();
  17.  
  18. public abstract String getTitle();
  19.  
  20. public abstract List<WebElement> findElements(By paramBy);
  21.  
  22. public abstract WebElement findElement(By paramBy);
  23.  
  24. public abstract String getPageSource();
  25.  
  26. public abstract void close();
  27.  
  28. public abstract void quit();
  29.  
  30. public abstract Set<String> getWindowHandles();
  31.  
  32. public abstract String getWindowHandle();
  33.  
  34. public abstract TargetLocator switchTo();
  35.  
  36. public abstract Navigation navigate();
  37.  
  38. public abstract Options manage();
  39.  
  40. @Beta
  41. public static abstract interface Window
  42. {
  43. public abstract void setSize(Dimension paramDimension);
  44.  
  45. public abstract void setPosition(Point paramPoint);
  46.  
  47. public abstract Dimension getSize();
  48.  
  49. public abstract Point getPosition();
  50.  
  51. public abstract void maximize();
  52. }
  53.  
  54. public static abstract interface ImeHandler
  55. {
  56. public abstract List<String> getAvailableEngines();
  57.  
  58. public abstract String getActiveEngine();
  59.  
  60. public abstract boolean isActivated();
  61.  
  62. public abstract void deactivate();
  63.  
  64. public abstract void activateEngine(String paramString);
  65. }
  66.  
  67. public static abstract interface Navigation
  68. {
  69. public abstract void back();
  70.  
  71. public abstract void forward();
  72.  
  73. public abstract void to(String paramString);
  74.  
  75. public abstract void to(URL paramURL);
  76.  
  77. public abstract void refresh();
  78. }
  79.  
  80. public static abstract interface TargetLocator
  81. {
  82. public abstract WebDriver frame(int paramInt);
  83.  
  84. public abstract WebDriver frame(String paramString);
  85.  
  86. public abstract WebDriver frame(WebElement paramWebElement);
  87.  
  88. public abstract WebDriver parentFrame();
  89.  
  90. public abstract WebDriver window(String paramString);
  91.  
  92. public abstract WebDriver defaultContent();
  93.  
  94. public abstract WebElement activeElement();
  95.  
  96. public abstract Alert alert();
  97. }
  98.  
  99. public static abstract interface Timeouts
  100. {
  101. public abstract Timeouts implicitlyWait(long paramLong, TimeUnit paramTimeUnit);
  102.  
  103. public abstract Timeouts setScriptTimeout(long paramLong, TimeUnit paramTimeUnit);
  104.  
  105. public abstract Timeouts pageLoadTimeout(long paramLong, TimeUnit paramTimeUnit);
  106. }
  107.  
  108. public static abstract interface Options
  109. {
  110. public abstract void addCookie(Cookie paramCookie);
  111.  
  112. public abstract void deleteCookieNamed(String paramString);
  113.  
  114. public abstract void deleteCookie(Cookie paramCookie);
  115.  
  116. public abstract void deleteAllCookies();
  117.  
  118. public abstract Set<Cookie> getCookies();
  119.  
  120. public abstract Cookie getCookieNamed(String paramString);
  121.  
  122. public abstract WebDriver.Timeouts timeouts();
  123.  
  124. public abstract WebDriver.ImeHandler ime();
  125.  
  126. @Beta
  127. public abstract WebDriver.Window window();
  128.  
  129. @Beta
  130. public abstract Logs logs();
  131. }
  132. }

以上要注意内部静态类 Options里面提供的,对Cookie进行操作的API。

Jmeter系列-webdriver代码范例的更多相关文章

  1. Jmeter系列-webdriver插件

    1.下载地址    JMeterPlugins-WebDriver-1.1.2 2.将JMeterPlugins-WebDriver-1.1.2\lib\ext中的*.jar拷贝到D:\apache- ...

  2. 最准确的单点登录SSO图示和讲解(有代码范例)|手把手教做单点登录(SSO)系列之二

    写第一篇博客<手把手教做单点登录(SSO)系列之一:概述与示例>,就获得了园子里朋友们热情的评论和推荐,感谢各位. 我那篇文章同时发了CSDN和博客园.对比一下,更感受到博客园童鞋们的技术 ...

  3. C# 7.0 新功能代码范例

    随着新版本的IDE Visual Studio 15 紧锣密鼓的开发中,2016年8月24日,微软发布了与之配套的C# 7.0 preview 的新特性. 其主要特性有: 内联声明out变量 (Out ...

  4. NSDate常用代码范例

    NSDate常用代码范例 NSDate类用于保存时间值,同时提供了一些方法来处理一些基于秒级别时差(Time Interval)运算和日期之间的早晚比较等. 1. 创建或初始化可用以下方法 用于创建N ...

  5. JMeter脚本java代码String数组要写成String[] args,不能写成String args[],否则报错。

    JMeter脚本java代码String数组中括号要写在类型关键字后面,不能写在变量名后面.

  6. 单点登录SSO图示和讲解(有代码范例)转帖

    完整的代码范例已完成,因和本文时序图严格对照,注释整理还需要一些工作,完成后将在下一篇放出.大家下载配置后,本地跑起来会是图一动画所示的运行效果,敬请期待. 敢说最准确,因为: 我严格对照所画时序图的 ...

  7. JMeter ----与WebDriver安装与测试

    JMeter ----与WebDriver安装与测试 主要内容 JMeter安装 WebDriver安装 一个简单的JMeter+WebDriver示例 环境与参考 jvm版本: 1.8.0_65 j ...

  8. JMeter (2) —— JMeter与WebDriver测试用户登陆以CAS SSO为例(101 Tutorial)

    JMeter (2) -- JMeter与WebDriver测试用户登陆以CAS SSO为例(101 Tutorial) 主要内容 JMeter与WebDriver测试用户登陆以CAS SSO为例 环 ...

  9. JMeter (1) —— JMeter与WebDriver安装与测试(101 Tutorial)

    JMeter (1) -- JMeter与WebDriver安装与测试(101 Tutorial) 主要内容 JMeter安装 WebDriver安装 一个简单的JMeter+WebDriver示例 ...

随机推荐

  1. C语言实验报告(四)完全数

    完全数,又称完美数或者完备数.是一些特殊的自然数.它所有的真因子的和,恰好等于它本身.编程找出1000以内的所有完全数,并输出该数成为完全数的因子. (例如6=1+2+3.按照6,its factor ...

  2. Java Web开发后端常用技术汇总

    技术名称及官网 Spring Framework Spring容器 http://projects.spring.io/spring-framework/ SpringMVC Spring MVC框架 ...

  3. DE4加DVI子板实现静态图片显示

    20170906录一下 内容后续补充

  4. 青岛Uber优步司机奖励政策(9月14日~9月20日)

    由于上周银行系统升级,工资延后 9/14-9/20奖励细则 滴滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不 ...

  5. ORB-SLAM(十)LoopClosing Sim3求解

    主要参考这篇论文 Horn B K P. Closed-form solution of absolute orientation using unit quaternions[J]. JOSA A, ...

  6. 【公司动态添加行】前台穿一个json的字符串到后台,并解析

    <!doctype html><html lang="en"> <head> <meta charset="UTF-8" ...

  7. SpringBoot学习:整合shiro(rememberMe记住我后自动登录session失效解决办法)

    项目下载地址:http://download.csdn.NET/detail/aqsunkai/9805821 定义一个拦截器,判断用户是通过记住我登录时,查询数据库后台自动登录,同时把用户放入ses ...

  8. jenkins通过maven指定testng的xml文件,并给testng代码传参

    1.jenkins设置参数化构建,设置要传的参数名和值 2.指定testng的xml文件,在jenkins的输入以下 3.在pom.xml文件分别引用jenkins的参数,设置两个property & ...

  9. 分享一个 UiPath Studio 相关的公众号

    RPA 和 UiPath 方面的资料比较少,因此我们自己创建了一个公众号,专门用于传播 UiPath 相关的知识. 会定期发布 UiPath 学习相关的信息.是目前难得的 UiPath 中文资源. 公 ...

  10. docker容器学习笔记

    docker是通过内核虚拟化技术来提供容器的资源隔离与安全保障. docker组成: docker client.docker server.docker组件(镜像(image).容器(contain ...