selenium 配合多线程_Selenium Webdriver 远程测试和多线程并发测试
Selenium & Webdriver 远程测试和多线程并发测试
Selenium Webdriver自动化测试,初学者可以使用selenium ide录制脚本,然后生成java程序导入eclipse中调试运行!当然录制出来的东西回放不一定能成功,还需要手工去修改;selenium自动化测试工具,但是特殊情况下也可以用来测试性能;先来介绍一下selenium 如何启动远程pc上的浏览器进行测试!
启动远程pc浏览器之前,需要下载selenium-server-standalone-2.40.0.jar,
1、主机端cmd下运行命令:
java -jar selenium-server-standalone-2.40.0.jar -role hub
2、远程pc机cmd下运行命令:
java -jar selenium-server-standalone-2.40.0.jar -Dwebdriver.firefox.bin="E:\Mozilla Firefox\firefox.exe" -role webdriver -hub http://10.30.12.110:4444/grid/register -browser browserName=firefox -port 7777
(Dwebdriver.firefox.bin="E:\Mozilla Firefox\firefox.exe是远程pc机浏览器安装路径;http://10.30.12.110:4444是主机地址和hub端口;节点端口7777不能和主机端口重复)
实例代码如下:
import java.io.File;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.Platform;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.Test;
import net.sourceforge.htmlunit.corejs.javascript.tools.debugger.Main;
public class TestLogin implements Runnable {
public static final SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSS");
@Test
public void run() {
System.out.println(Thread.currentThread().getId()+sf.format(new Date()));
DesiredCapabilities capability = DesiredCapabilities.firefox();
// capability.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
//设置用来匹配node中要使用的浏览器
capability.setBrowserName("firefox");
capability.setVersion("24");
capability.setPlatform(Platform.WINDOWS);
WebDriver driver = null;
String baseUrl = "http://XX.XX.XX.XX:9080/cas/login";
//设置本地驱动,如果你实例化Driver的时候是"WebDriver driver = new InternetExplorerDriver(capability)"这种方式,就必须设置
//System.setProperty("webdriver.ie.driver","D:\\IEDriverServer.exe");
try{
//本地启动浏览器
// driver = new FirefoxDriver(capability);
//远程启动浏览器
driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),capability);
System.out.println(Thread.currentThread().getId()+"访问网页开始时间:"+sf.format(new Date()));
driver.get(baseUrl);
//打开网页
try {
//等待页面打开,超时设置10秒
WebElement loginAccount = new WebDriverWait(driver, 10).until(new ExpectedCondition() {
public WebElement apply(WebDriver d) {
return d.findElement(By.id("loginAccount"));
}
});
if(null==loginAccount){
System.out.println(Thread.currentThread().getId()+" Timeout !!!");
driver.quit();
Thread.currentThread().interrupt();
}else{
System.out.println(Thread.currentThread().getId()+"访问网页结束时间:"+sf.format(new Date()));
loginAccount.clear();
loginAccount.sendKeys("username");
WebElement loginPassword = driver.findElement(By.id("loginPassword"));
loginPassword.clear();
loginPassword.sendKeys("password");
WebElement area = driver.findElement(By.cssSelector("area"));
System.out.println(Thread.currentThread().getId()+"登录开始时间:"+sf.format(new Date()));
area.click();
try {
//等待登录成功,超时设置10秒
WebElement quxiao = new WebDriverWait(driver, 10).until(new ExpectedCondition() {
public WebElement apply(WebDriver d) {
return d.findElement(By.xpath(".//*[@class='x-btn-mc']/em/button[text()='取消']"));
}
});
if(null==quxiao){
System.out.println(Thread.currentThread().getId()+" Loign Timeout !!!");
driver.quit();
Thread.currentThread().interrupt();
}else{
System.out.println(Thread.currentThread().getId()+"登录成功时间:"+sf.format(new Date()));
System.out.println(Thread.currentThread().getId()+"点击取消时间:"+sf.format(new Date()));
quxiao.click();
}
} catch (Exception e) {
System.out.println(Thread.currentThread().getId()+" Loign Error !!!");
e.printStackTrace();
driver.quit();
Thread.currentThread().interrupt();
}
}
}
catch (Exception e) {
System.out.println(Thread.currentThread().getId()+" Visit Error !!!");
e.printStackTrace();
driver.quit();
Thread.currentThread().interrupt();
}
}catch (Exception e) {
e.printStackTrace();
driver.quit();
}finally{
if(null!=driver){
driver.quit();
}
}
}
如果先要做远程多线程并发测试,将上面的代码new出了很多实例并且启动他们,启动selenium server也需要多加几个参数:
1、主机端cmd下运行命令:
java -jar selenium-server-standalone-2.40.0.jar -role hub -maxSession 40 -port 4444
(maxSession 设置最大连接数)
2、远程pc机cmd下运行命令:
java -jar selenium-server-standalone-2.40.0.jar -Dwebdriver.firefox.bin="E:\Mozilla Firefox\firefox.exe" -role node -hub http://127.0.0.1:4444/grid/register -maxSession 20 -browser "browserName=firefox,version=24,platform=WINDOWS,maxInstances=20" -port 5555
(maxInstances是同时运行浏览器的数量)
不过在我实际使用过程中火狐浏览器是无法同时实现并发的,但是IE浏览器就可以,所以需要把上面火狐的设置改成IE的就可以了!不到万不得已还是不建议使用这种方法进行性能测试!
Java接口多线程并发测试 (一)
本文为作者原创,禁止转载,违者必究法律责任!!! 本文为作者原创,禁止转载,违者必究法律责任!!! Java接口多线程并发测试 一,首先写一个接口post 请求代码: import org.apach ...
【总结】selenium webdriver 远程连接firefox和IE 环境搭建
参考链接:http://code.google.com/p/selenium/wiki/Grid2 本地环境为:win7,eclipse,jdk 1.7,本机ip为192.168.0.30 1.下载所 ...
Java接口多线程并发测试 (二)
selenium 配合多线程_Selenium Webdriver 远程测试和多线程并发测试相关推荐
- TCP Socket Client 测试工具,并发测试
TCP协议 Socket客户端测试程序 发送数据支持ASCII与16进制格式 可以模拟并发压力测试 创建终端,然后发送数据 工具下载
- 每天15分钟JMeter入门篇(二):使用JMeter实现并发测试
每天15分钟JMeter入门篇(一):Hello JMeter 每天15分钟JMeter入门篇(二):使用JMeter实现并发测试 每天15分钟JMeter入门篇(三):认识JMeter的逻辑控制器 ...
- 电脑网页压力测试软件,网站压力测试工具
网站压力测试软件可以测试不同上网方式.不同地区.访问Web不同页面.在不同并发访问密度情况下的客户端响应时间.流量和流速,实现极高的服务器测试,数据精准.网站压力测试软件适用于所有windows平台, ...
- PHP ab 压力并发测试
PHP ab 压力并发测试 PHP接口并发测试的方法 系统:Ubuntu18.04 安装ab测试工具 如果没安装,输入ab -v,根据提示安装 sudo apt install apache2-uti ...
- postman和JMeter并发测试对比
postman的runner是串行的,上一个请求结束后才开始下一个请求,属于连续测试不属于并发测试. JMeter可以指定用户数,发请求的间隔时间,可以模拟并发测试.
- 网站 压力 测试软件,网站压力测试软件
这是网站压力测试软件下载,网站压力测试软件可以测试不同上网方式.不同地区.访问Web不同页面.在不同并发访问密度情况下的客户端响应时间.流量和流速,实现极高的服务器测试,数据精准.网站压力测试软件适用 ...
- 调整jmeter5内存_松勤软件性能测试-修改JMeter内存以适应更高的并发测试
原标题:松勤软件性能测试-修改JMeter内存以适应更高的并发测试 Jmeter做并发测试时,报错 java.lang.OutOfMemoryError:gc overhead limit excee ...
- 导出目录结构_Selenium Webdriver 3.X源码分析之核心目录结构
> 这是Selenium3.X源码分析系列第3篇 在看Selenium 3.X核心目录结构前,我们先看一个基础的Selenium使用实例 请注意上述代码中,匡红的导入部分,为什么可以从selen ...
- selenium自动化测试框架_selenium自动化测试框架之PO设计模式
面向对象的特性:封装.继承.多态.在自动化中一样适用,Selenium自动化测试中有一个名字常常被提及PageObject(思想与面向对象的特性相同),通过PO模式可以大大提高测试用例的维护效率. 传 ...
- 曲鸟全栈UI自动化教学(四):Selenium工作原理及Webdriver对浏览器的配置和操作
一.前言 上篇文章我们学习了Selenium页面操作原理及如何高效的进行元素定位 那Selenium的工作原理又是什么?是如何驱动浏览器的呢?这篇文章为你讲解Selenium工作原理及Webdrive ...
最新文章
- paip.提升效率--调试--日志系统日志参数含义---python
- 国外创意网站设计欣赏的200佳网站推荐(系列十)
- C语言学习之用函数处理,而且用指针类型的数据作函数参数,对输入的两个整数按大小顺序输出
- 您需要了解的有关默认方法的所有信息
- 高校网络中心主任挨骂冤不冤?
- 面试官问你什么是Hash表
- 【C语言】C语言入门经典题目(范围广,内容多)
- python官方文档中文版-主页 - Keras 中文文档
- Python 找完美数
- 用html制作带阴影小球弹跳,AE怎么制作一个有影子的弹跳小球动画?
- WPS JS宏入门案例集锦
- AtCoder题解——Beginner Contest 168——E - ∙ (Bullet)
- win10专业版如何快速恢复出厂设置的方法
- java游戏后端日志【6】 -- 初生牛犊不怕虎?
- 新概念英语(第一册)复习(原文及全文翻译)——Lesson 111 - Lesson 130
- SOEM 源码解析 ecx_LRD
- word文档可以打开但显示乱码的完全解决攻略
- SolidWorks装配模块四连杆运动仿真…
- 【数据库】 MySQL备份恢复
- 重写和重载有什么区别
热门文章
- FindWindowEx的应用
- DLL中的自定义类型含有非导出公开字段,从而产生Release版本运行异常
- mouseover显示层mouseout隐藏层,并且在鼠标放上层时显示层【原】
- ActiveMQ(4) ActiveMQ JDBC 持久化 Mysql 数据库
- 项目记事【SpringMVC-1】:后台接收前端传来的JSON,并转成对象
- extundelete数据恢复
- soa---java 多线程的---锁
- [JAVA]使用Jersey处理Http协议中的Multipart
- sharepoint页面添加后台代码
- AAAI'22 | 中稿的论文网友找出致命漏洞?