zoukankan      html  css  js  c++  java
  • 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了。

  • 相关阅读:
    SpringBoot 断点调试无效问题解决
    oracle数据库入门
    IPFS入门
    Spring安全参考
    什么是内存泄漏?该如何检测?又该如何解决?
    coredump
    同一个程序在一个系统中可以跑起来,在另外一个系统上跑不起来
    dpkg 强制安装deb文件
    日志文件丢失
    文件句柄资源
  • 原文地址:https://www.cnblogs.com/timsheng/p/2679961.html
Copyright © 2011-2022 走看看