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示例 ...
随机推荐
- python教程(二)·第一个python程序
几乎所有的计算机语言教程,不仅仅是python,都以这样一个相似的示例程序开始讲解--Hello World! 代码如下,简简单单的一行.想必稍微了解英语的读者,都能猜到这段代码功能吧. print( ...
- 网络文件系统nfs在ubuntu16.04的安装
1.搜索nfs-sudo apt-cache search nfs- 2.安装sudo apt-get install nfs-kernel-server 3.配置:/etc/exports /hom ...
- TCP/IP协议族、版本以及编址机制
TCP/IP协议族简称TCP/IP.这么命名是因为该协议家族中的两个核心协议:TCP(传输控制协议)和IP(网际协议),为该家族中最早通过的标准.TCP/IP提供点对点的链接机制,将数据应该如何封装, ...
- Strange RadioButton group behavior with ToolBar
原文地址:https://social.msdn.microsoft.com/Forums/vstudio/zh-CN/83352293-ca52-4e22-8092-8e23c453bc75/str ...
- 【BZOJ3611】大工程(虚树,动态规划)
[BZOJ3611]大工程(虚树,动态规划) 题面 BZOJ Description 国家有一个大工程,要给一个非常大的交通网络里建一些新的通道. 我们这个国家位置非常特殊,可以看成是一个单位边权的树 ...
- 成都Uber优步司机奖励政策(4月6日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- FreeRTOS的信号量和互斥量
1. 理解如下,言简意赅的说,信号量解决同步,互斥量解决竞争. 信号量用于同步,主要任务间和中断间同步:互斥量用于互锁,用于保护同时只能有一个任务访问的资源,为资源上一把锁. 互斥量具有优先级继承,信 ...
- 获取项目中.txt 文件的内容
package com.fh.controller.ruitai.util; import java.io.BufferedInputStream; import java.io.File; impo ...
- hdu5698瞬间移动(杨辉三角+快速幂+逆元)
瞬间移动 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
- 第六章 高级I/O函数
第六章 高级I/O函数 6.1 pipe函数 即管道函数,用于进程间的通信. #include<unistd.h> int pipe(int fd[2]); // fd:filedes / ...