Jmeter系列-webdriver代码范例
范例
- WDS.sampleResult.sampleStart()
- try{
- //打开博客首页
- WDS.browser.get('http://xqtesting.blog.51cto.com')
- //测试代码结束
- WDS.sampleResult.sampleEnd()
- }catch(x){
- WDS.sampleResult.sampleEnd()
- //设置为结果失败
- WDS.sampleResult.setSuccessful(false)
- //返回信息设置为-_- sorry
- WDS.sampleResult.setResponseMessage('-_- sorry')
- }
以上是最简单的使用,算是一个尝鲜吧,其中WebDriver Sampler中代码编写可以扩展,和你编写WebDriver一样,可以利用By.id,By.cssSelector等方法进行元素的定位并操作,类似如下代码:
- var pkg = JavaImporter(org.openqa.selenium)
- WDS.browser.findElement(pkg.By.id('what')).sendKeys(['xiaoqiang'])
- try {
- var pkg = JavaImporter(org.openqa.selenium, org.openqa.selenium.support.ui)
- WDS.log.info('WDS Name:' + WDS.name)
- WDS.sampleResult.sampleStart()
- WDS.browser.navigate().to('https://app2.hoau.com:8423/cas2')
- WDS.log.info('Browser Title:' + WDS.browser.getTitle())
- 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.id('username'))
- what.sendKeys(['test01'])
- var where = WDS.browser.findElement(pkg.By.id('password'))
- where.sendKeys(['psw01'])
- // var button = WDS.browser.findElement(pkg.By.cssSelector('.btn-submit'))
- var button = WDS.browser.findElement(pkg.By.xpath("//input[@type='submit']"))
- button.click()
- var wait = new pkg.WebDriverWait(WDS.browser, )
- wait.until(pkg.ExpectedConditions.presenceOfElementLocated(pkg.By.xpath("//a[@title='Click here to log out']")))
- var results = WDS.browser.findElements(pkg.By.xpath("//a[@title='Click here to log out']"))
- WDS.log.info('Result: ' + results)
- if(results.empty) {
- WDS.sampleResult.successful = false
- WDS.sampleResult.responseMessage = 'There were no results returned'
- }
- var iter = results.iterator()
- var element = iter.next()
- WDS.log.info('User: ' + element.getText())
- if('test01' != element.getText()) {
- WDS.sampleResult.successful = false
- WDS.sampleResult.responseMessage = 'Login Failure'
- }
- WDS.sampleResult.sampleEnd()
- } catch(ex) {
- WDS.log.error(ex)
- WDS.sampleResult.successful = false
- WDS.sampleResult.responseMessage = 'There were no results returned'
- WDS.sampleResult.sampleEnd()
- }
扩展
为了解WDS 在JMeterUI下javascript脚本的能力,以及涉及到面问题相关的源码。
- WDS (JMeterPlugins-WebDriver.jar)
- com.googlecode.jmeter.plugins.webdriver.sampler.WebDriverSampler
- com.googlecode.jmeter.plugins.webdriver.sampler.WebDriverScriptable
- package com.googlecode.jmeter.plugins.webdriver.sampler;
- import org.apache.jmeter.samplers.SampleResult;
- import org.apache.log.Logger;
- import org.openqa.selenium.WebDriver;
- public final class WebDriverScriptable
- {
- private static final String[] EMPTY_ARGS = new String[];
- private String name;
- private String parameters;
- private Logger log;
- private WebDriver browser;
- private SampleResult sampleResult;
- public void setName(String name)
- {
- this.name = name;
- }
- public String getName() {
- return this.name;
- }
- public void setParameters(String parameters) {
- this.parameters = parameters;
- }
- public String getParameters() {
- return this.parameters;
- }
- public String[] getArgs() {
- return this.parameters != null ? this.parameters.trim().replaceAll("\\s+", " ").split(" ") : EMPTY_ARGS;
- }
- public void setLog(Logger log) {
- this.log = log;
- }
- public Logger getLog() {
- return this.log;
- }
- public void setBrowser(WebDriver browser) {
- this.browser = browser;
- }
- public WebDriver getBrowser() {
- return this.browser;
- }
- public void setSampleResult(SampleResult sampleResult) {
- this.sampleResult = sampleResult;
- }
- public SampleResult getSampleResult() {
- return this.sampleResult;
- }
- }
- WDS.browser (WebDriver - selenium-api-2.47.0.jar)
- org.openqa.selenium.WebDriver
- org.openqa.selenium.Cookie
- package org.openqa.selenium;
- import java.net.URL;
- import java.util.List;
- import java.util.Set;
- import java.util.concurrent.TimeUnit;
- import org.openqa.selenium.logging.Logs;
- public abstract interface WebDriver extends SearchContext
- {
- public abstract void get(String paramString);
- public abstract String getCurrentUrl();
- public abstract String getTitle();
- public abstract List<WebElement> findElements(By paramBy);
- public abstract WebElement findElement(By paramBy);
- public abstract String getPageSource();
- public abstract void close();
- public abstract void quit();
- public abstract Set<String> getWindowHandles();
- public abstract String getWindowHandle();
- public abstract TargetLocator switchTo();
- public abstract Navigation navigate();
- public abstract Options manage();
- @Beta
- public static abstract interface Window
- {
- public abstract void setSize(Dimension paramDimension);
- public abstract void setPosition(Point paramPoint);
- public abstract Dimension getSize();
- public abstract Point getPosition();
- public abstract void maximize();
- }
- public static abstract interface ImeHandler
- {
- public abstract List<String> getAvailableEngines();
- public abstract String getActiveEngine();
- public abstract boolean isActivated();
- public abstract void deactivate();
- public abstract void activateEngine(String paramString);
- }
- public static abstract interface Navigation
- {
- public abstract void back();
- public abstract void forward();
- public abstract void to(String paramString);
- public abstract void to(URL paramURL);
- public abstract void refresh();
- }
- public static abstract interface TargetLocator
- {
- public abstract WebDriver frame(int paramInt);
- public abstract WebDriver frame(String paramString);
- public abstract WebDriver frame(WebElement paramWebElement);
- public abstract WebDriver parentFrame();
- public abstract WebDriver window(String paramString);
- public abstract WebDriver defaultContent();
- public abstract WebElement activeElement();
- public abstract Alert alert();
- }
- public static abstract interface Timeouts
- {
- public abstract Timeouts implicitlyWait(long paramLong, TimeUnit paramTimeUnit);
- public abstract Timeouts setScriptTimeout(long paramLong, TimeUnit paramTimeUnit);
- public abstract Timeouts pageLoadTimeout(long paramLong, TimeUnit paramTimeUnit);
- }
- public static abstract interface Options
- {
- public abstract void addCookie(Cookie paramCookie);
- public abstract void deleteCookieNamed(String paramString);
- public abstract void deleteCookie(Cookie paramCookie);
- public abstract void deleteAllCookies();
- public abstract Set<Cookie> getCookies();
- public abstract Cookie getCookieNamed(String paramString);
- public abstract WebDriver.Timeouts timeouts();
- public abstract WebDriver.ImeHandler ime();
- @Beta
- public abstract WebDriver.Window window();
- @Beta
- public abstract Logs logs();
- }
- }
以上要注意内部静态类 Options里面提供的,对Cookie进行操作的API。
Jmeter系列-webdriver代码范例的更多相关文章
- Jmeter系列-webdriver插件
1.下载地址 JMeterPlugins-WebDriver-1.1.2 2.将JMeterPlugins-WebDriver-1.1.2\lib\ext中的*.jar拷贝到D:\apache- ...
- 最准确的单点登录SSO图示和讲解(有代码范例)|手把手教做单点登录(SSO)系列之二
写第一篇博客<手把手教做单点登录(SSO)系列之一:概述与示例>,就获得了园子里朋友们热情的评论和推荐,感谢各位. 我那篇文章同时发了CSDN和博客园.对比一下,更感受到博客园童鞋们的技术 ...
- C# 7.0 新功能代码范例
随着新版本的IDE Visual Studio 15 紧锣密鼓的开发中,2016年8月24日,微软发布了与之配套的C# 7.0 preview 的新特性. 其主要特性有: 内联声明out变量 (Out ...
- NSDate常用代码范例
NSDate常用代码范例 NSDate类用于保存时间值,同时提供了一些方法来处理一些基于秒级别时差(Time Interval)运算和日期之间的早晚比较等. 1. 创建或初始化可用以下方法 用于创建N ...
- JMeter脚本java代码String数组要写成String[] args,不能写成String args[],否则报错。
JMeter脚本java代码String数组中括号要写在类型关键字后面,不能写在变量名后面.
- 单点登录SSO图示和讲解(有代码范例)转帖
完整的代码范例已完成,因和本文时序图严格对照,注释整理还需要一些工作,完成后将在下一篇放出.大家下载配置后,本地跑起来会是图一动画所示的运行效果,敬请期待. 敢说最准确,因为: 我严格对照所画时序图的 ...
- JMeter ----与WebDriver安装与测试
JMeter ----与WebDriver安装与测试 主要内容 JMeter安装 WebDriver安装 一个简单的JMeter+WebDriver示例 环境与参考 jvm版本: 1.8.0_65 j ...
- JMeter (2) —— JMeter与WebDriver测试用户登陆以CAS SSO为例(101 Tutorial)
JMeter (2) -- JMeter与WebDriver测试用户登陆以CAS SSO为例(101 Tutorial) 主要内容 JMeter与WebDriver测试用户登陆以CAS SSO为例 环 ...
- JMeter (1) —— JMeter与WebDriver安装与测试(101 Tutorial)
JMeter (1) -- JMeter与WebDriver安装与测试(101 Tutorial) 主要内容 JMeter安装 WebDriver安装 一个简单的JMeter+WebDriver示例 ...
随机推荐
- C语言实验报告(四)完全数
完全数,又称完美数或者完备数.是一些特殊的自然数.它所有的真因子的和,恰好等于它本身.编程找出1000以内的所有完全数,并输出该数成为完全数的因子. (例如6=1+2+3.按照6,its factor ...
- Java Web开发后端常用技术汇总
技术名称及官网 Spring Framework Spring容器 http://projects.spring.io/spring-framework/ SpringMVC Spring MVC框架 ...
- DE4加DVI子板实现静态图片显示
20170906录一下 内容后续补充
- 青岛Uber优步司机奖励政策(9月14日~9月20日)
由于上周银行系统升级,工资延后 9/14-9/20奖励细则 滴滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不 ...
- ORB-SLAM(十)LoopClosing Sim3求解
主要参考这篇论文 Horn B K P. Closed-form solution of absolute orientation using unit quaternions[J]. JOSA A, ...
- 【公司动态添加行】前台穿一个json的字符串到后台,并解析
<!doctype html><html lang="en"> <head> <meta charset="UTF-8" ...
- SpringBoot学习:整合shiro(rememberMe记住我后自动登录session失效解决办法)
项目下载地址:http://download.csdn.NET/detail/aqsunkai/9805821 定义一个拦截器,判断用户是通过记住我登录时,查询数据库后台自动登录,同时把用户放入ses ...
- jenkins通过maven指定testng的xml文件,并给testng代码传参
1.jenkins设置参数化构建,设置要传的参数名和值 2.指定testng的xml文件,在jenkins的输入以下 3.在pom.xml文件分别引用jenkins的参数,设置两个property & ...
- 分享一个 UiPath Studio 相关的公众号
RPA 和 UiPath 方面的资料比较少,因此我们自己创建了一个公众号,专门用于传播 UiPath 相关的知识. 会定期发布 UiPath 学习相关的信息.是目前难得的 UiPath 中文资源. 公 ...
- docker容器学习笔记
docker是通过内核虚拟化技术来提供容器的资源隔离与安全保障. docker组成: docker client.docker server.docker组件(镜像(image).容器(contain ...