在我的Junit测试用例中,第一个测试失败后的所有测试

时间:2017-04-23 09:46:59

标签: java selenium selenium-webdriver junit

所以我有这个基本的JUnit程序,在@beforeclass中我打开浏览器并最大化它,然后打开浏览器导航到一个站点并检查元素。 但是,始终只执行第一种情况。所有后续测试用例都失败了。任何人都告诉我我在这里做了什么错误

代码:

package JUnitTesting;

import static org.junit.Assert.*;

import java.util.concurrent.TimeUnit;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class FlockTeamURLDomain {
    static WebDriver driver;
    String TeamUrl = "http://farzanshaikh.flock.co/";
    String TeamName = "<script>farzan</script>";
    String TeamDomain = "farzanshaikh.com";

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.setProperty("webdriver.chrome.driver", "C:\\Automation\\chromedriver_win32\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        Thread.sleep(2000);

    }

    @Test
    public void OpenTheTeamURL() throws InterruptedException {
        driver.get(TeamUrl);
        driver.manage().timeouts().implicitlyWait(3000, TimeUnit.SECONDS);
        String Title = driver.getTitle();
        System.out.println("The title of the Page is: "+Title);
        if(Title.equals("Flock - Team")){
            System.out.println("The Title is Correct");
        }
        else{
            System.err.println("The Title is InCorrect");
        }
        Thread.sleep(2000);
    }
    @Test
    public void CheckTheFooter() {
        boolean FlockFooter = driver.findElement(By.cssSelector("//div[@id='team-page']/div[2]/div[5]")).isDisplayed();
        System.out.println("Is the Footer Present? "+FlockFooter);

    }
    @Test
    public void CheckAndClickLogo() {
        boolean FlockLogo = driver.findElement(By.xpath("//div[@id='team-page']//img")).isDisplayed();
        System.out.println("Is Flock Logo Displayed "+FlockLogo);
    }
    @Test
    public void CheckTheHeader() {
        boolean FlockHeaderLogo = driver.findElement(By.xpath("//div[@id='step-2-block']/span")).isDisplayed();
        System.out.println("Is the Header Element Present? "+FlockHeaderLogo);

    }



    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        Thread.sleep(3000);
        driver.quit();
    }



}

3 个答案:

答案 0 :(得分:1)

我认为这是因为您只在第一次测试中导航到所需的网址,而其他任何测试都没有导航到所需的网址
尝试将导航步骤添加到setUpBeforeClass方法

尝试以下:

package JUnitTesting;
import static org.junit.Assert.*;
import java.util.concurrent.TimeUnit;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class FlockTeamURLDomain {
    static WebDriver driver;
    String TeamUrl = "http://farzanshaikh.flock.co/";
    String TeamName = "<script>farzan</script>";
    String TeamDomain = "farzanshaikh.com";

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.setProperty("webdriver.chrome.driver", "C:\\Automation\\chromedriver_win32\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        Thread.sleep(2000);
        driver.get(TeamUrl);

    }

    @Test
    public void OpenTheTeamURL() throws InterruptedException {
        driver.manage().timeouts().implicitlyWait(3000, TimeUnit.SECONDS);
        String Title = driver.getTitle();
        System.out.println("The title of the Page is: "+Title);
        if(Title.equals("Flock - Team")){
            System.out.println("The Title is Correct");
        }
        else{
            System.err.println("The Title is InCorrect");
        }
        Thread.sleep(2000);
    }
    @Test
    public void CheckTheFooter() {
        boolean FlockFooter = driver.findElement(By.cssSelector("//div[@id='team-page']/div[2]/div[5]")).isDisplayed();
        System.out.println("Is the Footer Present? "+FlockFooter);

    }
    @Test
    public void CheckAndClickLogo() {
        boolean FlockLogo = driver.findElement(By.xpath("//div[@id='team-page']//img")).isDisplayed();
        System.out.println("Is Flock Logo Displayed "+FlockLogo);
    }
    @Test
    public void CheckTheHeader() {
        boolean FlockHeaderLogo = driver.findElement(By.xpath("//div[@id='step-2-block']/span")).isDisplayed();
        System.out.println("Is the Header Element Present? "+FlockHeaderLogo);

    }



    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        Thread.sleep(3000);
        driver.quit();
    }



}

答案 1 :(得分:0)

BeforeClass只运行一次。

尝试使用@Before代替。该注释使该方法在每个测试用例之前运行。

答案 2 :(得分:0)

如果我理解正确你想让测试执行上一次测试权所剩下的测试,那么你需要确保执行顺序是正确的,尽管恕我直言,这不是应该如何创建测试

我认为最好按顺序排列

def smoke_test_flock_team_domain():
""" test to check completeness of the page """
       open the page
       assert title
       assert footer
       assert header
       assert logo
       click logo and assert result