Selenium Grid深入学习

简介:
应网友要求写一个用 Selenium Grid控制多系统多浏览器并行执行 test case的例子。
  因为我这里有两台机子,我打算这样演示:
  一台机子启动一个作为主点节的hub 和 一个作为次节点的hub(系统windows 浏览器为ie) ip为:192.168.40.24
  另一台机子启动两个次节点hub,一个次节点浏览器为firefox,另一个浏览器为chrome (系统为windows),ip为:192.168.40.67
  启动各节点hub
  启动主节点hub命令:
   java -jar selenium-server-standalone-2.24.1.jar -role hub
  启动与主节点同一机子的次节点hub命令:
  java -jar selenium-server-standalone-2.24.1.jar -role node  -hub http://localhost:4444/grid/register -browser browserName="internet explorer"
  启动另外一台机子的两个节点hub命令分别为:
  启动firefox的
  java -jar selenium-server-standalone-2.24.1.jar   -Dwebdriver.firefox.bin="D:/Program Files/Mozilla Firefox/firefox.exe" -role webdriver  -hub http://192.168.40.24:4444/grid/register -browser browserName=firefox
  其中-Dwebdriver.firefox.bin="D:/Program Files/Mozilla Firefox/firefox.exe"这个是传我的firefox浏览器安装地址,不然找不到。
  启动chrome的
  java -jar selenium-server-standalone-2.24.1.jar   -Dwebdriver.chrome.driver="D:/chromedriver.exe" -role webdriver  -hub http://192.168.40.24:4444/grid/register -port 6666 -browser browserName=chrome
  其中-Dwebdriver.chrome.driver="D:/chromedriver.exe",这个是传入我chromedriver.exe的放置地址。端口设为6666,防止和上面firefox的重复。
  链接好后,可以在http://localhost:4444/grid/console可以查看到三个子节点的状态。启动详细方法可以参考前面的 文章
  Selenium Grid只是提供多系统、多浏览器的执行环境,而不是说任务一个test case丢给它就能并行运行。并行的运行我这里就交给testng了。看下面代码和配制。
  testcase 代码 和 testng.xml
  testcase代码:
package driver;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class GridParallelTests {
private WebDriver dr;
DesiredCapabilities test;
String baseUrl;
@Parameters({"browser","nodeUrl","webSite"})
@BeforeMethod
public void setUp(String browser,String nodeUrl,String webSite){
baseUrl = webSite;
if(browser.equals("ie")) test = DesiredCapabilities.internetExplorer();
else if(browser.equals("ff")) test = DesiredCapabilities.firefox();
else if(browser.equals("chrome")) test = DesiredCapabilities.chrome();
else System.out.println("browser参数有误,只能为ie、 ff、chrome");
String url = nodeUrl + "/wd/hub";
URL urlInstance = null;
try {
urlInstance = new URL(url);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("实例化url出错,检查一下url格式是否正确,格式为:http://192.168.40.67:5555");
}
dr = new RemoteWebDriver(urlInstance,test);
dr.get(webSite);
}
@Test
public void test(){
dr.get(baseUrl);
dr.findElement(By.id("kw")).sendKeys("selenium");
dr.findElement(By.id("su")).click();
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("title:"+dr.getTitle());
}
@AfterMethod
public void quit(){
dr.close();
}
}
 testng.xml:
<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="Suite1"  parallel="tests" thread-count="5">
<test name="test1">
<parameter name="browser" value="ff"/>
<parameter name="nodeUrl" value="http://192.168.40.67:5555"/>
<parameter name="webSite" value="http://www.baidu.com"/>
<classes>
<class name="driver.GridParallelTests"></class>
</classes>
</test>
<test name="test2">
<parameter name="browser" value="chrome"/>
<parameter name="nodeUrl" value="http://192.168.40.67:6666"/>
<parameter name="webSite" value="http://www.baidu.com"/>
<classes>
<class name="driver.GridParallelTests"></class>
</classes>
</test>
<test name="test3">
<parameter name="browser" value="ie"/>
<parameter name="nodeUrl" value="http://192.168.40.24:5555"/>
<parameter name="webSite" value="http://www.baidu.com"/>
<classes>
<class name="driver.GridParallelTests"></class>
</classes>
</test>
</suite>
  运行testng.xml就可以了。
  如果你是用ant把上面的参数传进去也是可以的。我这里就直接简单地放在testng.xml了。

最新内容请见作者的GitHub页:http://qaseven.github.io/
相关文章
|
6月前
|
敏捷开发 监控 前端开发
自动化测试中Selenium Grid的优化策略
【4月更文挑战第12天】 在持续集成和持续部署(CI/CD)流程日益重要的今天,自动化测试成为确保软件质量的关键步骤。Selenium Grid作为实现并行测试的有效工具,其性能优化直接关系到测试效率的提升。本文将探讨针对Selenium Grid的优化策略,包括环境配置、脚本设计及资源管理等,旨在为软件测试工程师提供实用的参考,以缩短测试周期,提高自动化测试的整体效能。
50 3
|
6月前
|
JSON 数据管理 测试技术
自动化测试工具Selenium Grid的深度应用分析深入理解操作系统的内存管理
【5月更文挑战第28天】随着互联网技术的飞速发展,软件测试工作日益复杂化,传统的手工测试已无法满足快速迭代的需求。自动化测试工具Selenium Grid因其分布式执行特性而受到广泛关注。本文旨在深入剖析Selenium Grid的工作原理、配置方法及其在复杂测试场景中的应用优势,为测试工程师提供高效测试解决方案的参考。
|
6月前
|
敏捷开发 监控 测试技术
探索自动化测试工具Selenium Grid的高效集成策略
【4月更文挑战第30天】在现代Web应用的快速迭代和持续部署中,测试自动化已成为确保产品质量的关键。Selenium Grid作为一款支持多种浏览器和操作系统的测试工具,提供了并行执行测试用例的能力,极大地提升了测试效率。本文将深入探讨如何高效地将Selenium Grid集成到现有的测试框架中,以及实施过程中的最佳实践,帮助团队最大化测试覆盖率,同时降低资源消耗。
|
6月前
|
敏捷开发 Java 测试技术
探索自动化测试工具Selenium Grid的高效应用
【4月更文挑战第21天】 随着敏捷开发和持续集成的理念深入人心,自动化测试已成为软件开发过程中不可或缺的一环。本文将深入探讨如何利用Selenium Grid进行高效的自动化测试。通过分析其工作原理,搭建过程,以及在实际项目中的应用案例,揭示Selenium Grid在处理大规模并发测试中的潜力和优势。文章不仅提供了具体的操作步骤,还讨论了优化策略,帮助读者构建更加稳定和高效的自动化测试环境。
|
11月前
|
Web App开发 Docker 容器
百度搜索:蓝易云【用docker搭建selenium grid分布式环境实践】
通过这些步骤,您可以使用Docker搭建Selenium Grid分布式环境,并在多个节点上并行运行Selenium测试。根据实际需求,您还可以进行更高级的配置和扩展,如增加更多的节点、配置浏览器版本等。
63 1
|
XML 前端开发 机器人
Selenium工具学习
Selenium工具学习
93 1
|
存储 JSON Java
22-selenium之grid分布式测试
22-selenium之grid分布式测试
22-selenium之grid分布式测试
|
Web App开发 测试技术 调度
浩若烟海事半功倍|利用Docker容器技术构建自动化分布式web测试集群Selenium Grid
“世界上有那么多城市,城市里有那么多的酒馆,可她,却偏偏走进了我的.....”,这是电影《卡萨布拉卡》中的一句著名独白,投射到现实生活中,与之类似的情况不胜枚举,这世界上有那么多的系统,系统中有那么多的浏览器,在只有一台测试机的前提下,难道我们只能排队一个一个地做兼容性测试吗?有没有效率更高的方法呢?为此我们提出一个更高效的解决方案:使用Docker+Selenium Grid。
浩若烟海事半功倍|利用Docker容器技术构建自动化分布式web测试集群Selenium Grid
|
Web App开发 JavaScript 前端开发
selenium 4.0学习(三)JS定位及demo脚本
selenium 4.0学习(三)JS定位及demo脚本
selenium 4.0学习(三)JS定位及demo脚本
selenium 4.0学习(二)常用定位和函数方法
selenium 4.0学习(二)常用定位和函数方法
selenium 4.0学习(二)常用定位和函数方法