2016-12-20 27 views
0

我在testng xml文件中有兩個「測試」,全部都是並行運行的,我的問題是我在@AfterSuite註釋中調用了Webdriver.quit()方法。它只關閉最後創建的瀏覽器實例並不是所有打開的瀏覽器。Webdriver.quit(),在@AfterSuite註釋中調用時無法正常工作

當我打電話給@AfterTest註釋它會關閉。下面

是我的TestNG的文件
enter image description here

我創建的驅動程序中的基類,測試類擴展。

創建驅動程序實例的代碼。

@BeforeClass @參數({ 「設備名稱」, 「platformName」, 「platformVersion」, 「UDID」, 「browserName」, 「browserVersion」, 「nodeIP」, 「nodePort」}) 公共無效startBrowser(字符串設備名稱,字符串platformName和字符串platformVersion,UDID字符串,字符串browserName,字符串browserVersion,字符串nodeIP,字符串nodePort)

{ 
    DesiredCapabilities capabilities =DesiredCapabilities.chrome(); 
    System.setProperty("webdriver.chrome.driver", "chromeDriverPath"); 
    ChromeOptions options = new ChromeOptions(); 
    capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); 
    driver = new ChromeDriver(capabilities); 
} 

任何一個可以幫助我在這個..

+0

在基類中創建驅動程序並擴展到測試類 –

回答

0

AfterSuite被稱爲每間套房一次。上面顯示的是一個套件並行執行兩個測試。您需要確保您的驅動程序是線程安全的。

AfterTest在<test>標記結束後被調用 - 因此,如果特定於某個線程的webdriver將被關閉。

如果你想關閉所有的webdriver後,你需要建立一個webdrivers列表並關閉每一個單獨。

0

因爲你有2 <test>,TestNG創建2個實例(使用相同的套件方法)。 但是,testng將套件方法視爲套件中的單一方法,只會調用一次(它發現的第一個方法)。 這就是爲什麼它與測試後的方法,看起來是你應該使用的。

順便說一句,因爲你想在後套房方法中關閉驅動程序,我想你可以在套房方法中創建它,而不應該出於同樣的原因。你能否詳細說明你在哪裏/如何創建驅動程序?