4 回答

TA貢獻1851條經驗 獲得超3個贊
當您使用已調用 quit() 或 close() 方法的驅動程序實例進行任何進一步操作時,會出現此錯誤。只需確保在再次使用之前重新初始化驅動程序實例。正如您在 @AfterMethod 中調用 driver.quit() 一樣,將 @BeforeMethod 中的驅動程序實例初始化為:
@BeforeMethod
public void testMethodInitialize() {
driver = new ChromeDriver();
}

TA貢獻1798條經驗 獲得超7個贊
您在@AfterMethod
這里使用并@AfterMethod
在每次執行該方法后執行,在您的情況下,在從 excel 進行一次迭代后,它會被執行,并且驅動程序實例會因為您在driver.quit()
這里使用而結束。
因此,要解決這個問題,您應該使用@AfterTest
而不是@AfterMethod
as@AfterTest
將僅在 excel 中的所有行都被執行并且您的測試用例執行完成時才運行。

TA貢獻1841條經驗 獲得超3個贊
您正在從 Excel 中讀取數據,并且您的第一次遍歷成功。
您的第二次遍歷將失敗,因為您在 @AfterMethod 注釋中已過期驅動程序調用。@AfterMethod 注釋將在每個 @Test 注釋之后執行。在您的情況下,由于驅動程序在 AfterMethod 中過期,并且如果它繼續進行 @Test 所以它失敗了。
在您的情況下,遍歷如下:
如果 3 excel 行:
@BeforeMethod(if applicable)
1st Row
@AfterMEthod
@BeforeMethod(if applicable)
2nd Row
@AfterMEthod
@BeforeMethod(if applicable)
3rd Row
@AfterMEthod
你需要了解TestNG注解的生命周期,什么時候調用哪個注解。
這是最簡單的例子:
最佳實踐是在 @AfterSuite 注釋中定義 driver.quite()。

TA貢獻1825條經驗 獲得超6個贊
利用 :
@BeforeMethod
public void initialize() {
if(driver == null){
//initialize your driver(webdriver or RemoteWebdriver)
driver = new ChromeDriver();
}
}
@AfterMethod
public void teardown() {
if(driver != null){
driver.quit();
}
}
添加回答
舉報