首页 > 解决方案 > 如何在testng中一个接一个地运行类

问题描述

我有 2 个 java 类,我需要使用 testng xml 一个接一个地运行它们。但是当我运行 xml 时,这两个类正在并行执行。

我试过设置parallel=false,但它仍然并行执行

以下是我的课程:

第一类:

package pulse.roster;

import static org.testng.Assert.assertTrue;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;

public class RosterClockinFilter {

    public WebDriver driver;
    public Actions actions;

    @BeforeSuite
    public void launchApplication() {

        System.setProperty("webdriver.chrome.driver",
                "C:\\MyChromeDriver\\chromedriver_win32\\chromedriver.exe");

        driver = new ChromeDriver();
        driver.get("mysite");
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
        actions = new Actions(driver);

    }

    public void closeApplication() {
        driver.close();
    }

    @Test(priority = 0)
    public void adminLogin() {

        try {
            actions.moveToElement(driver.findElement(By.name("userId")));
            actions.click();
            actions.sendKeys("admin");
            actions.build().perform();

            actions.pause(java.time.Duration.ofSeconds(1));

            actions.moveToElement(driver.findElement(By.name("password")));
            actions.click();
            actions.sendKeys("abc@123");
            actions.build().perform();

            actions.pause(java.time.Duration.ofSeconds(1));

            actions.moveToElement(driver.findElement(By.name("dcNumber")));
            actions.click();
            actions.sendKeys("7036");
            actions.build().perform();

            actions.moveToElement(driver.findElement(By
                    .cssSelector("body > ion-app > ng-component > ion-nav > page-login > ion-content > div.scroll-content > ion-card > ion-grid > form > ion-list > div.login-button > button > span")));
            actions.click();
            actions.build().perform();

        } catch (Exception e) {

            e.printStackTrace();
        }
    }

    @Test(priority = 1)
    public void rosterPage() {
        actions.moveToElement(driver.findElement(By
                .xpath("//*[@id='tab-t0-1']")));
        actions.click();
        actions.build().perform();
    }

    @Test(priority=2)

    public void filterButton(){
        WebDriverWait wait = new WebDriverWait(driver, 60);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By
                .xpath("//*[@id='tabpanel-t0-1']/whos-here-page/div/clocked-card/ion-toolbar/div[2]/ion-grid/ion-row/ion-col[2]/button")));
        actions.moveToElement(driver.findElement(By.xpath("//*[@id='tabpanel-t0-1']/whos-here-page/div/clocked-card/ion-toolbar/div[2]/ion-grid/ion-row/ion-col[2]/button")));
        actions.click();
        actions.build().perform();

    }

    @Test(priority=3)
    public void selectClockin(){
        actions.moveToElement(driver.findElement(By.xpath("//*[@id='tabpanel-t0-1']/whos-here-page/div/clocked-card/div/div/ion-row[3]/ion-col[1]/ion-row/ion-item[1]/div[1]/ion-radio")));
        actions.click();
        actions.build().perform();

    }

    @Test(priority=4)
    public void selectApply(){
        actions.moveToElement(driver.findElement(By.xpath("//*[@id='tabpanel-t0-1']/whos-here-page/div/clocked-card/div/div/div/ion-row")));
        actions.click();
        actions.build().perform();

    }

    @Test(priority=5)
    public void checkFilter(){
        String element=driver.findElement(By.xpath("//*[@id='tabpanel-t0-1']/whos-here-page/div/clocked-card/ion-content/div[2]/div[2]/ion-row/ion-col/div[2]/user-attendance-card/ion-list/div/ion-item[1]/div[1]/div/ion-label/ion-grid[2]/ion-row/ion-col[4]")).getText();
        assertTrue(element.contains("-"));

    }
}

第 2 类:

package pulse.roster;

import static org.testng.Assert.assertFalse;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;

public class RosterClockoutFilter {



    public WebDriver driver;
    public Actions actions;

    @BeforeSuite
    public void launchApplication() {

        System.setProperty("webdriver.chrome.driver",
                "C:\\MyChromeDriver\\chromedriver_win32\\chromedriver.exe");

        driver = new ChromeDriver();
        driver.get("mysite");
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
        actions = new Actions(driver);

    }

    public void closeApplication() {
        driver.close();
    }

    @Test(priority = 0)
    public void adminLogin() {

        try {
            actions.moveToElement(driver.findElement(By.name("userId")));
            actions.click();
            actions.sendKeys("admin");
            actions.build().perform();

            actions.pause(java.time.Duration.ofSeconds(1));

            actions.moveToElement(driver.findElement(By.name("password")));
            actions.click();
            actions.sendKeys("abc@123");
            actions.build().perform();

            actions.pause(java.time.Duration.ofSeconds(1));

            actions.moveToElement(driver.findElement(By.name("dcNumber")));
            actions.click();
            actions.sendKeys("7036");
            actions.build().perform();

            actions.moveToElement(driver.findElement(By
                    .cssSelector("body > ion-app > ng-component > ion-nav > page-login > ion-content > div.scroll-content > ion-card > ion-grid > form > ion-list > div.login-button > button > span")));
            actions.click();
            actions.build().perform();

        } catch (Exception e) {

            e.printStackTrace();
        }
    }

    @Test(priority = 1)
    public void rosterPage() {
        actions.moveToElement(driver.findElement(By
                .xpath("//*[@id='tab-t0-1']")));
        actions.click();
        actions.build().perform();
    }

    @Test(priority=2)

    public void filterButton(){
        WebDriverWait wait = new WebDriverWait(driver, 60);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By
                .xpath("//*[@id='tabpanel-t0-1']/whos-here-page/div/clocked-card/ion-toolbar/div[2]/ion-grid/ion-row/ion-col[2]/button")));
        actions.moveToElement(driver.findElement(By.xpath("//*[@id='tabpanel-t0-1']/whos-here-page/div/clocked-card/ion-toolbar/div[2]/ion-grid/ion-row/ion-col[2]/button")));
        actions.click();
        actions.build().perform();

    }

    @Test(priority=3)
    public void selectClockout(){
        actions.moveToElement(driver.findElement(By.xpath("//*[@id='tabpanel-t0-1']/whos-here-page/div/clocked-card/div/div/ion-row[3]/ion-col[2]/ion-row/ion-item[1]/div[1]/ion-radio")));
        actions.click();
        actions.build().perform();

    }

    @Test(priority=4)
    public void selectApply(){
        actions.moveToElement(driver.findElement(By.xpath("//*[@id='tabpanel-t0-1']/whos-here-page/div/clocked-card/div/div/div/ion-row")));
        actions.click();
        actions.build().perform();

    }

    @Test(priority=5)
    public void checkFilter(){
        String element=driver.findElement(By.xpath("//*[@id='tabpanel-t0-1']/whos-here-page/div/clocked-card/ion-content/div[2]/div[2]/ion-row/ion-col/div[2]/user-attendance-card/ion-list/div/ion-item[6]/div[1]/div/ion-label/ion-grid[2]/ion-row/ion-col[4]")).getText();
        assertFalse(element.isEmpty());

    }

}

我的测试 xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Roster Suite" parallel="false" preserve-order="true" verbose="2">
<test name="Regression suite 1">
    <classes>
    <class name="pulse.roster.RosterClockinFilter"></class>
    </classes>
    </test>
    <test name="Regression suite 2">
    <classes>
    <class name="pulse.roster.RosterClockoutFilter"></class>
    </classes>
    </test>
</suite>

如果有人可以指导我如何以系列方式而不是并行方式运行我的课程,那将会很有帮助。

标签: testng-eclipse

解决方案


推荐阅读