Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的appium测试在一台设备上运行两次,但我需要并行地在两台设备上运行它_Java_Selenium_Appium_Selenium Grid - Fatal编程技术网

Java 我的appium测试在一台设备上运行两次,但我需要并行地在两台设备上运行它

Java 我的appium测试在一台设备上运行两次,但我需要并行地在两台设备上运行它,java,selenium,appium,selenium-grid,Java,Selenium,Appium,Selenium Grid,我正在尝试并行运行我的appium测试。我已经配置了selenium网格,并通过appium命令注册了节点。我有两个测试设备(模拟器)正在运行,每当我尝试运行测试时,它都会在两个设备上启动应用程序,但会在其中一个设备上运行两次测试。这是我的@beforethod代码: @BeforeMethod @Parameters({"deviceName", "platformVersion"}) public void beforeTest(String deviceName,

我正在尝试并行运行我的appium测试。我已经配置了selenium网格,并通过appium命令注册了节点。我有两个测试设备(模拟器)正在运行,每当我尝试运行测试时,它都会在两个设备上启动应用程序,但会在其中一个设备上运行两次测试。这是我的
@beforethod
代码:

    @BeforeMethod
    @Parameters({"deviceName", "platformVersion"})
    public void beforeTest(String deviceName, String platformVersion) throws IOException, InterruptedException {
        prop = new GeneralProperties();


            DesiredCapabilities capabilities = new DesiredCapabilities();
            capabilities.setCapability("platformVersion", platformVersion);
            capabilities.setCapability("platformName", prop.getPlatformName());
            capabilities.setCapability("deviceName", deviceName);
            capabilities.setCapability("appPackage", prop.getAppPackage());
            capabilities.setCapability("appActivity", prop.getAppActivity());
            capabilities.setCapability("automationName", "uiautomator2");
            capabilities.setCapability(MobileCapabilityType.NO_RESET, true);

            driver = new AndroidDriver<MobileElement>(new URL(prop.getUrl()), capabilities);
            driver.manage().timeouts().implicitlyWait(prop.getImplicitWait(), TimeUnit.SECONDS);
            wait = new WebDriverWait(driver, 10);
        } else if (deviceName.equals("emulator-5556")) {

            // read data from properties file and set capabilities
            DesiredCapabilities capabilities = new DesiredCapabilities();
            capabilities.setCapability("platformVersion", platformVersion);
            capabilities.setCapability("platformName", prop.getPlatformName());
            capabilities.setCapability("deviceName", deviceName);
            capabilities.setCapability("appPackage", prop.getAppPackage());
            capabilities.setCapability("appActivity", prop.getAppActivity());
            capabilities.setCapability("automationName", "uiautomator2");
            capabilities.setCapability(MobileCapabilityType.NO_RESET, true);

            driver = new AndroidDriver<MobileElement>(new URL(prop.getUrl()), capabilities);
            driver.manage().timeouts().implicitlyWait(prop.getImplicitWait(), TimeUnit.SECONDS);
            wait = new WebDriverWait(driver, 10);
        }
        drivers.set(driver);
}



我没有收到任何错误,但我已经为此奋斗了一段时间了

你真的很接近了。您只是缺少了suite标记,因为您正在并行运行测试,您正在运行一个suite,所以它应该是这样的

<suite name="suitename" parallel="tests" thread-count="2">
    <test name="Emulator">
        <parameter name="deviceName" value="emulator-5554"/>
        <parameter name="platformVersion" value="10"/>

        <classes>
            <class name="com.test.Login.VerifyValidLogin_Regression"></class>
        </classes>
    </test> <!-- Test -->
    <test name="Emulator_2">
        <parameter name="deviceName" value="emulator-5556"/>
        <parameter name="platformVersion" value="9"/>

        <classes>
            <class name="com.test.Login.VerifyValidLogin_Regression"> . </class>
        </classes>
    </test> <!-- Test -->
</suite>

. 
线程数将是您在案例2中一次运行的设备数,但如果您有更多的设备或更少的设备,只需更改线程数即可

<test name="Emulator">
    <parameter name="deviceName" value="emulator-5554"/>
    <parameter name="platformVersion" value="10"/>

    <classes>
        <class name="com.test.Login.VerifyValidLogin_Regression"></class>
    </classes>
</test> <!-- Test -->
<test name="Emulator_2">
    <parameter name="deviceName" value="emulator-5556"/>
    <parameter name="platformVersion" value="9"/>

    <classes>
        <class name="com.test.Login.VerifyValidLogin_Regression"></class>
    </classes>
</test> <!-- Test -->
<suite name="suitename" parallel="tests" thread-count="2">
    <test name="Emulator">
        <parameter name="deviceName" value="emulator-5554"/>
        <parameter name="platformVersion" value="10"/>

        <classes>
            <class name="com.test.Login.VerifyValidLogin_Regression"></class>
        </classes>
    </test> <!-- Test -->
    <test name="Emulator_2">
        <parameter name="deviceName" value="emulator-5556"/>
        <parameter name="platformVersion" value="9"/>

        <classes>
            <class name="com.test.Login.VerifyValidLogin_Regression"> . </class>
        </classes>
    </test> <!-- Test -->
</suite>