2014-02-24 31 views
0

我已經通過本網站上的existitng問題了,但無法解決 以下問題如何重用的webdriver的退出實例爲不同類別

工具:Junit的,的IntelliJ,java語言

//設置類

public class SetUpTest { 
public static WebDriver driver; 

    @BeforeClass 
public static void setUpTest() throws InterruptedException 
{ 
    driver=new FirefoxDriver(); 

    driver.get("http://www.ABC.co.uk"); 
    Thread.sleep(5000); 

} 


//Test1 
public class HomePageTest extends SetUpTest { 

    @Test 
    public void titleTest() 

    { 
     assertTrue(driver.getTitle().startsWith("ABC")); 

//Test2 
public void merchandisingTest() throws InterruptedException { 
    @Test 
    public void merchandisingTest() 
    { 

     driver.navigate().to("http://ABC.co.uk/deals"); 
assertThat(driver.getPageSource(),containsString("deals")); 

我試圖運行與@TestBefore和測試,但仍然是兩個瀏覽器窗口打開 一個Test1的另一個用於Test2.I還使用了@ Suite.SuiteClasses 但問題仍然存在。

回答

0

你可以試試這個代碼

public class BaseTest{ 
    public WebDriver driver; 
    @BeforeSuite 
    public void startDriver(){ 
     driver = new FirefoxDriver(); 
     driver.manage().timeouts().implicitlyWait(5l, TimeUnit.SECONDS); 
     driver.get("http://www.ABC.co.uk"); 
    } 
} 

public class HomePageTest extends BaseTest{ 
    @Test 
    public void titleTest(){ 
     assetTrue(driver.getTitle().startsWith("ABC")); 
    } 

    @Test 
    public void merchanisingTest(){ 
     driver.navigate().to("http://www.ABC.co.uk/deals"); 
     assertTrue(driver.getTitle().startsWith("deals")); 
    } 
} 

此外,運行此用TestNG XML我想,在其中@BeforeSuite方法被調用一次

+0

嗨rsakhale,我使用JUnit,因此@BeforeSuite在這種情況下不適用。該問題未通過使用隱式等待來解決。 –

+0

哦,那麼如果你在整個測試過程中保持單個類,你可以使用@BeforeClass,我不知道它會工作。但現在可能是切換TestNG以獲得諸多好處的好時機。 也許你也可以使用FactoryMethod來創建Driver的實例只創建一次 - http://en.wikipedia.org/wiki/Factory_method_pattern 在這裏你保持對象級別的驅動程序的副本,並始終調用getDriver方法,它給出了原始創建的實例,而不是創建新的實例 – rsakhale

相關問題