Selenium自动化测试selenium+java专题Web自动化测试

selenium webdriver学习21Selenium G

2017-04-14  本文已影响57人  七月尾巴_葵花

应网友要求写一个用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的重复。

Selenium Grid只是提供多系统、多浏览器的执行环境,而不是说任务一个test case丢给它就能并行运行。并行的运行我这里就交给testng了。看下面代码和配制。


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();  

        }  

      

}  


<!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了。

上一篇下一篇

猜你喜欢

热点阅读