使用线程概念在多个设备中并行执行 java

Parallel execution in multiple devices using thread concept java

我是 java 的新手。请帮忙。 我有一个要求,我需要在 java 的多个设备上执行相同的测试场景。 要求还说我的代码不应该单独在一个设备中执行,它应该一次在多个设备中启动相同的场景。

是否可以一次执行。

注意: 我一次连接了 3 个设备。 但是它一个接一个地执行相同的场景。

我正在使用 appium 服务器和 testng

请帮忙.. 提前致谢。

您可以尝试类似的方法:

public void startAppium() {
    //start appium instance
    try {
        Thread.sleep((long)(Math.random() * 10000)); //wait from 0 to 10 sec for parallel process run
        ProcessBuilder builder = new ProcessBuilder(getCmd());
        builder.redirectOutput("path to log file"); //here you can find logs of appium
        builder.redirectErrorStream(true);
        appium = builder.start();
        Thread.sleep(3000); //wait 3 sec until server started
    } catch (Exception e) {
        e.printStackTrace();
    }
}
public class Test{

    WebDriver driver = null;
    int timeOut=180;
    int port=-1;

    Test(int port){
        this.port=port;
    }

    public void testEmulator(int p) throws Exception {
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability(CapabilityType.BROWSER_NAME, "Android");
        capabilities.setCapability(CapabilityType.VERSION, "4.3");
        capabilities.setCapability(CapabilityType.PLATFORM, "Windows");

        capabilities.setCapability("udid","emulator-"+p);

        capabilities.setCapability("app-package", "your.app.pkg");
        capabilities.setCapability("app-activity",
            "your.app.pkg.Activity");
        driver = new RemoteWebDriver(new URL("http://127.0.0.1:"+this.port+"/wd/hub"),
        capabilities);
        driver.manage().timeouts().implicitlyWait(timeOut, TimeUnit.SECONDS);
        Thread.sleep(50000);
    }

    public void tearDown() {
        if (driver != null)
            driver.quit();
    }

    public void runTest() {
        try {
            testEmulator(5554);     // for emulator on port 5554
            tearDown();
            testEmulator(5556);     // for emulator on port 5556
            tearDown();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {
        new Test(4723).runTest();       // appium server port 4723
    }
}