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

标签 java selenium appium selenium-grid

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

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

这是我的 testng.xml 文件:

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

<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>

线程计数将是您在案例 2 中同时运行的设备数量,但如果您有更多或更少的设备,只需更改线程计数

关于java - 我的 appium 测试在一台设备上运行两次,但我需要在两台设备上并行运行它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58995580/

相关文章:

javascript - 我必须在页面的元素中输入文本,但该页面有四个具有相同属性的元素

IOS测试: Test interaction between two apps

swift - 在 Swift 2 中设置 Appium 驱动程序时出错

java - Android Studio 在运行时不提示设备

java - 它需要在 Criteria API 中创建带有日期的谓词,但仍然出现异常。如何构建这样的谓词?

java - 将多个 jar 文件添加到类路径中

android-studio - 无法获得gradle接受android studio 3中的java-client-6.0.0-BETA1.jar

java - 由已分配的 ByteString 支持的高效 okio 源?

java - 带有 Selenium 的 ChromeDriver 显示空白页

python - 使用 Python 和 Selenium 进行网页抓取