Как обернуть Browser Factory Class для использования в качестве класса обслуживания - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь использовать фабрику браузера вместо использования веб-драйвера непосредственно в моих тестах, но когда я использую его в тестах, я получаю исключение 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);

1 Ответ

0 голосов
/ 12 ноября 2018

Вы проверяете switch различную строку с учетом регистра, должно быть:

case "chrome":

Вы можете также рассмотреть строчную / прописную строку, отмеченную в switch как:

browserName.toLowerCase()

Что поможет вам избежать различий с учетом регистра

...