Я пытаюсь использовать фабрику браузера вместо использования веб-драйвера непосредственно в моих тестах, но когда я использую его в тестах, я получаю исключение Null, потому что он использует метод get перед методом init. У меня может быть простая ошибка, но я не могу понять, как написать этот класс обслуживания, как следует. Поэтому я не получу нулевое исключение и не смогу использовать драйвер в этом классе вместо создания другого экземпляра в тестовом классе.
Я добавил свой браузер фабрики
namespace WrapperFactory
{
class BrowserFactory
{
private static readonly IDictionary<string, IWebDriver> Drivers = new Dictionary<string, IWebDriver>();
private static IWebDriver driver;
public static IWebDriver Driver
{
get
{
if (driver != null)
throw new NullReferenceException("The WebDriver browser instance was not initialized. " +
"You should first call the method InitBrowser.");
return driver;
}
private set => driver = value;
}
public static void InitBrowser(string browserName)
{
switch (browserName)
{
case "Firefox":
if (Driver == null)
{
driver = new FirefoxDriver(".");
driver.Manage().Window.Maximize();
Drivers.Add("Firefox", Driver);
}
break;
case "Chrome":
if (Driver == null)
{
var options = new ChromeOptions();
options.AddArgument("--start-maximized");
driver = new ChromeDriver(".", options);
Drivers.Add("Chrome", Driver);
}
break;
}
}
public static void CloseAllDrivers()
{
foreach (var key in Drivers.Keys)
{
Drivers[key].Close();
Drivers[key].Quit();
}
}
}
}
Я использовал его в своем тесте, но получил исключение Null
public void VerifyerCtifications()
{
BrowserFactory.InitBrowser("chrome");
IWebDriver driver = BrowserFactory.Driver;
var homePage = new HomePage(driver);
ResourcesPage rsp = homePage.ClickOnResourceMenuAndGoToPage(BrowserFactory.Driver);
AboutPage aboutPg = rsp.ClickOnClickCertificationBtn(BrowserFactory.Driver);
aboutPg.ClickOnReadMoreAboutCertPrs(BrowserFactory.Driver);
BrowserFactory.Driver.SwitchTo().Window(BrowserFactory.Driver.WindowHandles.Last());
BlogPage blogPage = new BlogPage();
IWebElement certificate = blogPage.GetFundamentalsOffer(BrowserFactory.Driver);
Assert.NotNull(certificate);