同时在不同的浏览器中启动不同的Selenium Grid测试

时间:2018-09-20 15:03:58

标签: java selenium-webdriver testng

我有一个硒网格集线器和一个硒节点:

java -jar selenium-server-standalone-3.14.0.jar -role hub
java -Dwebdriver.chrome.driver=c:\selenium\chromedriver.exe -jar selenium-server-standalone-3.14.0.jar -role node -hub http://10.X.X.X:4444/grid/register

我在2个单独的文件中分别进行了2种不同的测试,分别是A类和B类:

第一个,驱动程序:

 @BeforeTest
 public void setup() throws MalformedURLException {

     nodeUrl = "http://10.133.2.80:4444/wd/hub";

     DesiredCapabilities capabilities = DesiredCapabilities.chrome();
     capabilities.setBrowserName("chrome");
     capabilities.setPlatform(Platform.WINDOWS);
     driver = new RemoteWebDriver(new URL(nodeUrl), capabilities);

 }

第二个:

 @BeforeTest
 public void setup() throws MalformedURLException {

     nodeUrl = "http://10.133.2.80:4444/wd/hub";

     DesiredCapabilities capabilities = DesiredCapabilities.chrome();
     capabilities.setBrowserName("chrome");
     capabilities.setPlatform(Platform.WINDOWS);
     driver = new RemoteWebDriver(new URL(nodeUrl), capabilities);
}

现在我要在两个单独的chrome浏览器上同时运行它们,我该怎么做?我正在使用testng。

1 个答案:

答案 0 :(得分:0)

您可以在testng.xml运行程序文件中使用参数。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="TestSuite" thread-count="2" parallel="tests" >

 <test name="ChromeTest">

 <parameter name="browser" value="Chrome" />

   <classes>

     <class name="parallelTest.CrossBrowserScript"> </class>

  </classes>

 </test>


 <test name="FirefoxTest">

 <parameter name="browser" value="Firefox" />

  <classes>

    <class name="parallelTest.CrossBrowserScript"></class>

  </classes>

 </test>

</suite>

在@BeforeTest中,您可以执行以下操作:

@BeforeTest
    @Parameters("browser")
    public void setup(String browser) throws Exception{
        //Check if parameter passed from TestNG is 'firefox'
        if(browser.equalsIgnoreCase("firefox")){
        //create firefox instance
            System.setProperty("webdriver.firefox.marionette", ".\\geckodriver.exe");
            driver = new FirefoxDriver();
        }
        //Check if parameter passed as 'chrome'
        else if(browser.equalsIgnoreCase("chrome")){
            //set path to chromedriver.exe
            System.setProperty("webdriver.chrome.driver",".\\chromedriver.exe");
            //create chrome instance
            driver = new ChromeDriver();
        }
        else{
            //If no browser passed throw exception
            throw new Exception("No Browser");
        }
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    }

这个问题也可以帮助您: How to Launch browsers for each single testng XML file in selenium

但是,您需要使用一个带有多个测试标签的xml文件,如上所述。