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 远程测试和多线程并发测试相关推荐

  1. TCP Socket Client 测试工具,并发测试

    TCP协议 Socket客户端测试程序 发送数据支持ASCII与16进制格式 可以模拟并发压力测试 创建终端,然后发送数据 工具下载

  2. 每天15分钟JMeter入门篇(二):使用JMeter实现并发测试

    每天15分钟JMeter入门篇(一):Hello JMeter 每天15分钟JMeter入门篇(二):使用JMeter实现并发测试 每天15分钟JMeter入门篇(三):认识JMeter的逻辑控制器 ...

  3. 电脑网页压力测试软件,网站压力测试工具

    网站压力测试软件可以测试不同上网方式.不同地区.访问Web不同页面.在不同并发访问密度情况下的客户端响应时间.流量和流速,实现极高的服务器测试,数据精准.网站压力测试软件适用于所有windows平台, ...

  4. PHP ab 压力并发测试

    PHP ab 压力并发测试 PHP接口并发测试的方法 系统:Ubuntu18.04 安装ab测试工具 如果没安装,输入ab -v,根据提示安装 sudo apt install apache2-uti ...

  5. postman和JMeter并发测试对比

    postman的runner是串行的,上一个请求结束后才开始下一个请求,属于连续测试不属于并发测试. JMeter可以指定用户数,发请求的间隔时间,可以模拟并发测试.

  6. 网站 压力 测试软件,网站压力测试软件

    这是网站压力测试软件下载,网站压力测试软件可以测试不同上网方式.不同地区.访问Web不同页面.在不同并发访问密度情况下的客户端响应时间.流量和流速,实现极高的服务器测试,数据精准.网站压力测试软件适用 ...

  7. 调整jmeter5内存_松勤软件性能测试-修改JMeter内存以适应更高的并发测试

    原标题:松勤软件性能测试-修改JMeter内存以适应更高的并发测试 Jmeter做并发测试时,报错 java.lang.OutOfMemoryError:gc overhead limit excee ...

  8. 导出目录结构_Selenium Webdriver 3.X源码分析之核心目录结构

    > 这是Selenium3.X源码分析系列第3篇 在看Selenium 3.X核心目录结构前,我们先看一个基础的Selenium使用实例 请注意上述代码中,匡红的导入部分,为什么可以从selen ...

  9. selenium自动化测试框架_selenium自动化测试框架之PO设计模式

    面向对象的特性:封装.继承.多态.在自动化中一样适用,Selenium自动化测试中有一个名字常常被提及PageObject(思想与面向对象的特性相同),通过PO模式可以大大提高测试用例的维护效率. 传 ...

  10. 曲鸟全栈UI自动化教学(四):Selenium工作原理及Webdriver对浏览器的配置和操作

    一.前言 上篇文章我们学习了Selenium页面操作原理及如何高效的进行元素定位 那Selenium的工作原理又是什么?是如何驱动浏览器的呢?这篇文章为你讲解Selenium工作原理及Webdrive ...

最新文章

  1. paip.提升效率--调试--日志系统日志参数含义---python
  2. 国外创意网站设计欣赏的200佳网站推荐(系列十)
  3. C语言学习之用函数处理,而且用指针类型的数据作函数参数,对输入的两个整数按大小顺序输出
  4. 您需要了解的有关默认方法的所有信息
  5. 高校网络中心主任挨骂冤不冤?
  6. 面试官问你什么是Hash表
  7. 【C语言】C语言入门经典题目(范围广,内容多)
  8. python官方文档中文版-主页 - Keras 中文文档
  9. Python 找完美数
  10. 用html制作带阴影小球弹跳,AE怎么制作一个有影子的弹跳小球动画?
  11. WPS JS宏入门案例集锦
  12. AtCoder题解——Beginner Contest 168——E - ∙ (Bullet)
  13. win10专业版如何快速恢复出厂设置的方法
  14. java游戏后端日志【6】 -- 初生牛犊不怕虎?
  15. 新概念英语(第一册)复习(原文及全文翻译)——Lesson 111 - Lesson 130
  16. SOEM 源码解析 ecx_LRD
  17. word文档可以打开但显示乱码的完全解决攻略
  18. SolidWorks装配模块四连杆运动仿真…
  19. 【数据库】 MySQL备份恢复
  20. 重写和重载有什么区别

热门文章

  1. FindWindowEx的应用
  2. DLL中的自定义类型含有非导出公开字段,从而产生Release版本运行异常
  3. mouseover显示层mouseout隐藏层,并且在鼠标放上层时显示层【原】
  4. ActiveMQ(4) ActiveMQ JDBC 持久化 Mysql 数据库
  5. 项目记事【SpringMVC-1】:后台接收前端传来的JSON,并转成对象
  6. extundelete数据恢复
  7. soa---java 多线程的---锁
  8. [JAVA]使用Jersey处理Http协议中的Multipart
  9. sharepoint页面添加后台代码
  10. AAAI'22 | 中稿的论文网友找出致命漏洞?