首页 > 解决方案 > 同时在不同的浏览器中启动不同的 selenium Grid 测试

问题描述

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

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 个单独的文件和 A 类和 B 类中有 2 个不同的测试:

第一个,司机:

 @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);
}

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

标签: javaselenium-webdrivertestng

解决方案


您可以在 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 文件,如上所述。


推荐阅读