`

selenium webdriver学习(二十一)------------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了。

 

 

 

 

 

 

 

1
0
分享到:
评论

相关推荐

    Selenium WebDriver Practical Guide-Code

    通过深入研究这个压缩包中的代码示例,学习者不仅可以理解Selenium WebDriver的工作原理,还能掌握如何在实际项目中应用这些知识,提升自动化测试的技能。同时,这也有助于理解和调试测试脚本,解决在自动化测试过程...

    selenium-java-2.44.0、selenium-java-2.44.0-srcs、selenium-server-standalone-2.44.0

    源代码也方便开发者学习Selenium的实现细节,提高自己的测试技能。 最后,`selenium-server-standalone-2.44.0.jar` 是Selenium Grid的独立服务器版本。Selenium Grid用于分布式测试,它可以同时在多个机器上运行...

    Selenium WebDriver 所需jar包

    3. **Selenium Server**:虽然不是所有情况下都需要,但Selenium Server(如Selenium Grid)可以用于分布式测试,允许多个浏览器实例在同一时间运行测试,提高测试效率。如果在大型项目中使用,可能会包含对应的jar...

    Mastering-Selenium-WebDriver-3.0-Second-Edition:精通Selenium WebDriver 3.0-第二版,由Packt发行

    精通Selenium WebDriver 3.0,第二版 这是Packt发行的的代码库。... 并学习如何使用Docker容器快速启动Selenium Grid。 在最后的几章中,您将通过一系列场景来演示如何扩展Selenium以使其与外部库和应用程序一起使用,

    selenium-server-standalone-2.45.0和selenium-java-2.45.0(含srcs)

    总结起来,"selenium-server-standalone-2.45.0" 和 "selenium-java-2.45.0(含srcs)" 提供了Selenium的核心组件,支持Java环境下的WebDriver自动化测试,同时包含了源码以便于深入学习和定制。它们是Web应用自动化...

    selenium webdriver 3 practical guide 第二版

    Selenium WebDriver 3 Practical Guide will walk you through the various APIs of Selenium WebDriver, which are used in automation tests, followed by a discussion of the various WebDriver implementations...

    selenium webdriver第三版

    总之,《Selenium WebDriver(Python)第三版》这本书是学习和掌握Selenium WebDriver与Python结合进行Web自动化测试的宝贵资源,它不仅讲解了基础操作,还涵盖了高级特性和实战经验,对提升测试工程师的技能大有裨益...

    selenium-selenium-4.5.0.zip源码

    5. **Remote WebDriver**: 支持远程执行测试,通过 Selenium Grid 或云服务如 Sauce Labs 或 BrowserStack 进行分布式测试。这部分源码展示了如何管理和协调多个远程浏览器实例。 6. **Selenium Server**: 作为测试...

    selenium-server-standalone-3.9.1.rar

    "selenium-server-standalone-3.9.1.rar" 文件包含了Selenium Grid 的独立服务器版本,适用于3.9.1这个高版本。Selenium Grid 是Selenium工具集中的一个重要组成部分,它允许我们进行分布式自动化测试,提高测试效率...

    selenium-server-standalone-2.44.0,selenium-java-2.44.0,java-client-2.2.0三件套

    标题中的“selenium-server-standalone-2.44.0”、“selenium-java-2.44.0”和“java-client-2.2.0”分别指的是Selenium WebDriver的三个关键组件,它们在自动化Web浏览器测试中起着至关重要的作用。Selenium是一个...

    Mastering-Selenium-Webdrivers-3.0-V-:Packt出版的Mastering Selenium Webdrivers 3.0(V)的代码存储库

    《Mastering Selenium WebDrivers 3.0》是针对自动化测试工程师和Web开发人员的一本深入指南,特别是那些希望使用Selenium WebDriver进行Web应用程序自动化测试的专业人士。这本书详细介绍了如何利用Selenium 3.0...

    selenium-java-2.25.0.zip和selenium-server-standalone-2.25.0.jar

    标题中的“selenium-java-2.25.0.zip”和“selenium-server-standalone-2.25.0.jar”是Selenium自动化测试框架的两个关键组件,分别代表了Selenium的Java绑定库和独立服务器。Selenium是一个开源的Web应用程序自动化...

    selenium-java-2.47.1.zip

    3. **docs**:文档目录,可能包含了API参考、用户指南等,帮助开发者学习如何使用Selenium。 4. **examples**:示例代码,展示了一些基本的测试用例,有助于快速上手。 5. **build.xml**:Ant构建文件,用于编译和...

    java-client-4.1.2.jar , selenium-server-standalone-3.0.0-beta3.jar

    此外,Selenium Grid,作为Selenium Server的一部分,负责调度和分配测试任务到各个远程节点,确保测试覆盖多种环境。 标签“jar”表明这两个文件都是Java Archive格式,这是Java平台的标准归档文件格式,用于打包...

    selenium-server-standalone-3.8.1和selenium-java-3.7.1

    2. **Selenium Server**: 提供了 WebDriver 支持,包括 Grid 功能,允许并行测试。 3. **Selenium Grid**: 用于分布式测试,可以在多台机器上并行运行测试,提高测试覆盖率和速度。 4. **WebDriver API**: 一种与...

    selenium-server-standalone-3.8.1

    Selenium Server Standalone 是 Selenium Grid 的基础,Selenium Grid 是一个分布式测试框架,用于在多台机器上并行执行测试,大大加快了测试速度。当你需要在不同的操作系统或浏览器配置上进行测试时,Selenium ...

    selenium-server-4.8.3.jar

    Selenium Server (Grid) The Selenium Server is needed in order to run Remote Selenium WebDriver (Grid).

    seleniumwebdriver(python)第三版.rar

    selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。 Selenium的核心Selenium Core基于JsUnit,完全由...

    PacktPublishing-Beginning-Selenium-WebDriver-Testing-in-Java:Packt发行的《 Selenium-WebDriver-Java测试》,由Packt发布

    开始使用Java进行Selenium WebDriver测试[视频] 这是发行的的代码存储库。 它包含从头到尾完成视频课程所需的所有支持项目文件。 关于视频课程 本课程将使您了解Selenium WebDriver的功能。 您将通过实践测试步骤并...

Global site tag (gtag.js) - Google Analytics