2013-12-16 94 views
0

我使用了帶有junit的硒webdriver。我在詹金斯用螞蟻在IE中運行我的測試。我想以測試套件的形式運行多個測試。測試套件的第二項測試失敗(瀏覽器未打開)

所以我創建的類的TestSuite:

@RunWith(Suite.class) 
@SuiteClasses({ Test1.class, Test2.class, 
    Test3.class }) 
public class TestSuite { 
} 

在build.xml文件我已經加入:

<target name="TestSuite"> 
    <mkdir dir="${dir}" /> 
    <junit fork="yes" printsummary="withOutAndErr"> 
     <formatter usefile="false" type="plain" /> 
     <formatter type="xml" /> 
     <batchtest todir="${dir}"> 
      <fileset dir="bin"> 
       <include name="**/TestSuite.class" /> 
      </fileset> 
     </batchtest> 
     <classpath refid="classpath" /> 
    </junit> 
</target> 

但後來我跑的測試套件,Test1的成功運行,Test2的失敗,瀏覽器甚至沒有啓動。 我有方法之前和之後每次測試。在我清除緩存之前和在我運行之後:

driver.quit(); 
driver = null; 
killUnhandledProcess("IEDriverServer.exe"); 
killUnhandledProcess("iexplore.exe"); 

如何運行整個套件而不失敗?

錯誤日誌:

Testcase: test1 took 4,993 sec 
[junit]  Caused an ERROR 
[junit] Session ID is null 
[junit] Driver info: driver.version: RemoteWebDriver 
[junit] org.openqa.selenium.remote.SessionNotFoundException: Session ID is null 
[junit] Driver info: driver.version: RemoteWebDriver 
[junit]  at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:276) 
[junit]  at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:66) 
[junit]  at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:527) 
[junit]  at org.openqa.selenium.remote.RemoteWebDriver.get(RemoteWebDriver.java:276)... 

我有2個包 - 一個用於測試本身。每個測試都在單獨的類中,並且所有這些分類都擴展了基類。在基類中,我有Before和After方法。第二個包包含頁面對象的類。此包中的主類是主頁,並在此頁的webdriver被初始化:

protected WebDriver driver = DriverStart.getDriver(); 

驅動程序的實施是在單獨的類(單)

回答

0

請嘗試移動@After代碼爲@AfterClass方法,這樣它應該在處理驅動程序對象之前運行所有方法。

您可能需要使用@After方法返回到您的應用需要一個主頁/註銷測試

+0

我試圖做到這一點。沒有幫助 – khris

+0

是否有一個原因,你必須做驅動程序= null部分&殺死進程(我假設與其他第三方進程,而不是WebDriver)?是.quit()不夠? –

+0

我改變了這個部分:driver.quit(); driver = null; killUnhandledProcess(「IEDriverServer.exe」); killUnhandledProcess(「iexplore.exe」);只是driver.close();.仍然不起作用。 IE在第一次測試結束後關閉,並且不會再次監聽 – khris

相關問題