0

我試圖在拋出異常方法外執行@Test。我能夠執行@Test方法的唯一方法是如果我在拋出異常方法中調用它們,並且這會使@Test方法失敗。請參閱我的代碼。如何在selenium webdriver拋出異常後執行@Test

public class Communication extends WebPortalLogin  { 


    public static String driverPath = "C:/"; 
    public static WebDriver driver; 


    @BeforeTest 
    public void Circulars() throws Exception { 

     ExcelUtils.setExcelFile("C://TestData//TestData.xlsx", "Sheet1"); 

     String username = ExcelUtils.getCellData(1, 1); 
     String password = ExcelUtils.getCellData(1, 2); 

     driver = WebPortalLogin.login(username, password); 

     circulars(driver); 
     option_list(driver); 
     close_browser(); 

    } 

    @Test 
    public void circulars(WebDriver driver)  { 

     WebPortalNGFile.communication(driver).click(); 
     WebPortalNGFile.circulars(driver).click(); 

    } 

    @Test 
    public void option_list(WebDriver driver)  { 

    WebPortalNGFile.communication(driver).click(); 
    WebPortalNGFile.option_list(driver).click(); 

    } 

    @Test 
    public void close_browser() { 
     driver.close(); 

    } 

} 

回答

0

在你的類中,首先執行的是你的@BeforeTest方法。 @BeforeTest的想法實際上是在每個@Test之前執行的方法。

現在,由於某種原因,您正試圖從您的@BeforeTest方法調用您的@Test circulars()方法,該方法根本無法工作。

接下來,爲什麼您將@Test註釋添加到您的close_browser()和option_list()方法中?看起來他們只是助手方法,不需要@Test註釋。

閱讀有關@BeforeTest和@Test註釋的更多信息。

下面是您的代碼的一些模糊的更正,可能會對您有所幫助。

public class Communication extends WebPortalLogin{ 

public static String driverPath = "C:/"; 
public static WebDriver driver; 

@Test 
public void Circulars() throws Exception{ 

    ExcelUtils.setExcelFile("C://TestData//TestData.xlsx", "Sheet1"); 

    String username = ExcelUtils.getCellData(1, 1); 
    String password = ExcelUtils.getCellData(1, 2); 

    driver = WebPortalLogin.login(username, password); 

    circulars(driver); 
    option_list(driver); 
    close_browser(driver); 
} 

public void circulars(WebDriver driver){ 
    WebPortalNGFile.communication(driver).click(); 
    WebPortalNGFile.circulars(driver).click(); 
} 

public void option_list(WebDriver driver){ 
    WebPortalNGFile.communication(driver).click(); 
    WebPortalNGFile.option_list(driver).click(); 
} 

public void close_browser(WebDriver driver){ 
    driver.close(); 
} } 
+0

Hi sen4ik,Circular()實際上是set_up(),而close_browser()是AfterTest,因爲它終止瀏覽器。 circulars()和option_list()是測試,因此是註解@Test,我需要它們在報告中單獨列出,這就是爲什麼它們必須作爲單獨的方法運行,而不是在異常方法中調用。 –