我为IWebElement
写了一个扩展方法。
在此扩展方法内,可能会引发异常。就我而言,我不想在扩展方法中抛出异常,但是我想将其传递给调用方法。
这是我的扩展方法:
public static IWebElement FindElementByID(this IWebElement baseElement, string searchString)
{
try
{
IWebElement foundElement = baseElement.FindElement(By.ID(searchString));
return foundElement;
}
catch (NoSuchElementException e)
{
new http.HttpErrorHandler().HttpError(browser.PageSource, e.Message.ToString());
throw new NoSuchElementException(e.Message.ToString());
}
}
这是一些调用扩展名的示例代码:
/// <summary>
/// This function fetches paymant data from opened Loan
/// </summary>
/// <returns></returns>
public static (int payedOnTime, int payedDelay, bool lastPaymentOnTime) FetchPaymentData()
{
browser.FindElementByID("payment-tab").Click();
BrowserOperations.WaitUntilIDIsVisible("card-tabs-content");
var element = browser.FindElementByID("card-tabs-content");
BrowserOperations.WaitUntilClassNameIsVisible("loan-table");
var table = element.FindElementByClassName("loan-table");
/* some calculation here */
}
在其中一个呼叫中(例如,在下一行中),由于连接中断,网站关闭或其他原因,可能会发生错误。
var element = browser.FindElementByID("card-tabs-content");
我希望在方法FetchPaymentData
中的上一行中引发异常,但应在扩展方法中引发该异常。
在使用throw new [...]
之前,我尝试仅使用throw;
获得相同的结果。关于如何实现这一目标的任何建议?