2014-03-01 75 views
0

我有一個框架,我已經在superTESTNG類中寫入了implicitlywait(),並且所有其他子類都擴展了superTESTNG。 在我的許多子課程中,我嘗試着抓住。我面臨的問題是由於這個implicitlywait()如何在Selenium Webdriver中嘗試捕獲時重寫implicitlywait()?

子類try catch需要花費太多時間來執行。請建議一個解決方案,以便在嘗試捕獲期間不會等待。

這是我的代碼:

在supertestNG

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

在子類中

try 
{ 
    ProjectLibrary.SelectPreviousRecord(xlpath, sheetName, 2, 1); 
} 
catch (NoSuchElementException ex) 
{ 
    ProjectLibrary.SelectPreviousRecord(xlpath, sheetName, 2, 2); 
} 

try 
{ 
    ProjectLibrary.CompareStringTextByID(xlpath, sheetName, 2, 1, "Name","ctl00_ContentPlaceHolder1_txtName"); 
} 
catch (NoSuchElementException ex) 
{ 
    ProjectLibrary.CompareStringTextByID(xlpath, sheetName, 2, 2, "Name", "ctl00_ContentPlaceHolder1_txtName"); 
} 
+0

我相信你將不得不使用driver.manage()超時()。 .implicitlyWait(10,TimeUnit.SECONDS);在你的子類中。 – Sighil

+0

只要你在你的子類的try塊中輸入,就重置implicitWait的時間(1/2秒)。這樣你可以避免等待...但是確保你最後定義了阻止隱式等待的時間。 – Anuragh27crony

+0

如果我們在子類中輸入try塊,請提供代碼以將時間重置爲1/2秒 –

回答

0
try 
{ 
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS); 
ProjectLibrary.SelectPreviousRecord(xlpath, sheetName, 2, 1); 
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
} 
catch (NoSuchElementException ex) 
{ 
ProjectLibrary.SelectPreviousRecord(xlpath, sheetName, 2, 2); 
} 

try 
{ 
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS); 
ProjectLibrary.CompareStringTextByID(xlpath, sheetName, 2, 1, "Name","ctl00_ContentPlaceHolder1_txtName"); 
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
} 
catch (NoSuchElementException ex) 
{ 
ProjectLibrary.CompareStringTextByID(xlpath, sheetName, 2, 2, "Name", "ctl00_ContentPlaceHolder1_txtName"); 
}