public static void Main()
AacerPage aacerPage = new AacerPage();
Console.WriteLine("Current AacerPage : " + aacerPage.GetUrl());
Console.WriteLine("Navigate To -> Home");
aacerPage.NavigateTo(AacerPage.Pages.Home);
Console.WriteLine("Current AacerPage : " + aacerPage.GetUrl());
Console.WriteLine("Navigate To -> Case Search");
var caseSearch = aacerPage.NavigateTo(AacerPage.Pages.CaseSearch);
Console.WriteLine("Current AacerPage : " + aacerPage.GetUrl());
Console.WriteLine("Navigate To -> Case Search - > Coversheet");
caseSearch.NavigateTo(CaseSearch.Pages.Coversheet);
Console.WriteLine("Current AacerPage : " + aacerPage.GetUrl());
Console.WriteLine("Current caseSearch* : " + caseSearch.GetUrl());
if(aacerPage.CurrentPage == caseSearch)
Console.WriteLine("Both point to the same " + aacerPage.CurrentPage.GetType() + " object.");
Console.WriteLine("These objects are not the same.");
IPage NavigateTo(IComparable page);
public IPage CurrentPage;
public string baseUrl = "//localHost/";
return baseUrl + CurrentPage.GetUrl();
public class AacerPage : Page, IPage
public IPage NavigateTo(IComparable page)
CurrentPage = new HomePage();
CurrentPage = new CaseSearch();
public class HomePage : Page, IPage
public IPage NavigateTo(IComparable page)
throw new Exception("Not Implemented");
public class CaseSearch : Page, IPage
public IPage NavigateTo(IComparable page)
CurrentPage = new CoversheetPage();
CurrentPage = new ClaimsPage();
public class CoversheetPage : Page, IPage
public IPage NavigateTo(IComparable page)
throw new Exception("This Page does not navigate any where.");
public class ClaimsPage : Page, IPage
public IPage NavigateTo(IComparable page)
throw new Exception("This Page does not navigate any where.");