作成したテストを実行するためにセレンを使用しています。エラー処理を開始したいと思います。見つからなかった要素を取得して"Element start could not be found"
、エラー ログのように表示できるようにしたいと考えています。これができない場合は、例外が発生したコード行全体を出力したいと思います。
これを行う方法がわかりません。現時点では、各テストを try キャッチでラップするだけですCouldn't find element
が、これは非常に広範であり、検出できなかった要素を絞り込むことはできません。
私のセッション設定
private string excelId = CommonMethods.ExcelOfficeVersion();
private const string AppDriverUrl = "http://127.0.0.1:4723";
private static WindowsDriver<WindowsElement> excelSession;
System.Web.Caching.Cache cache = new System.Web.Caching.Cache();
xl.Workbook WB;
public static bool skipTearDown = false;
WindowsElement create;
WindowsElement blankWorkBook;
public static DesiredCapabilities appCapabilities = new DesiredCapabilities();
[TestInitialize]
public void SetUp()
{
try
{
appCapabilities.SetCapability("app", excelId);
var initialSession = new WindowsDriver<WindowsElement>(new Uri(AppDriverUrl), appCapabilities);
var capabilities = new DesiredCapabilities();
capabilities.SetCapability("app", "Root");
excelSession = new WindowsDriver<WindowsElement>(new Uri(AppDriverUrl), capabilities);
excelSession.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
CommonMethods.keyCheck(excelSession);
//blankWorkBook = excelSession.FindElementByName("Blank workbook");
//cache.Insert("Create", create);
CommonMethods.checkCreateExcel();
}
catch (Exception)
{
CommonMethods.ExceptionHandler("WinApp Driver failed to load Excel", new StackTrace(true).GetFrame(0).GetFileLineNumber(), new StackTrace(true).GetFrame(0).GetMethod(), excelSession);
}
}
これが私のコードの例です
try
{
excelSession.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
excelSession.FindElementByName("Blank workbook").Click();
excelSession.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
excelSession.FindElementByName("Create").Click();
skipTearDown = true;
}
catch (Exception)
{
CommonMethods.ExceptionHandler("Couldn't find element", new StackTrace(true).GetFrame(0).GetFileLineNumber(), new StackTrace(true).GetFrame(0).GetMethod(), excelSession);
}
別の典型的なテスト
public void newExcelWorkbook()
{
try
{
excelSession.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
excelSession.FindElementByName("Blank workbook").Click();
excelSession.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
excelSession.FindElementByName("Create").Click();
excelSession.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
excelSession.FindElementByName("New").Click();
CommonMethods.IsElementDisplayed(excelSession, new StackTrace(true).GetFrame(0).GetFileLineNumber(), new StackTrace(true).GetFrame(0).GetMethod(), "CreateErrorIcon", "Error appeard while selecting the New button");
excelSession.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
excelSession.FindElementByName("E Sample Data").Click();
CommonMethods.IsElementDisplayed(excelSession, new StackTrace(true).GetFrame(0).GetFileLineNumber(), new StackTrace(true).GetFrame(0).GetMethod(), "CreateErrorIcon", "Error appeard while selecting the E Sample Data button");
Thread.Sleep(4000);
excelSession.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
}
catch (Exception)
{
CommonMethods.ExceptionHandler("Couldn't find element", new StackTrace(true).GetFrame(0).GetFileLineNumber(), new StackTrace(true).GetFrame(0).GetMethod(), excelSession);
}
TearDown();
}