t.me/atinfo_chat Telegram группа по автоматизации тестирования

Падают случайные тесты при запуске всех тестов класса

csharp
webdriver
Теги: #<Tag:0x00007f21d23d9b40> #<Tag:0x00007f21d23d98c0>

(Игорь) #1

Добрый день.
Есть тесты. При запуске всех тестов в студии часть тестов падает даже не пытаясь запуститься. После недолгих размышлений пришли к выводу что проблема существует при запуске (неожиданно). Т.е. после первого теста не успевает завершиться процесс браузера и сразу начинает выполняться второй тест и сразу падает. В итоге вижу вот такую картину. В данном случае тесты проходят через один.

Сводка

2019-07-04_12-53-48

Код

        public override void Invoke()
        {
            if (!IsDisplayed()) <==тут проверям отображается ли элемен страницы, если нет то...
            {
                Driver.Manage().Window.Maximize();
                Driver.Url = Config.CPIMainUrl;
                MyPages.LoginPage.WaitForOpen();
                var loginPage = MyPages.LoginPage;
                loginPage.Invoke();
                loginPage.Login(Config.SuperAdminMail, Config.SuperAdminPassword);
                WaitForOpen();
            }
        }

        public override bool IsDisplayed()
        {
            return lblTitleTemplateTree.IsDisplayedSafe();
        }
        public static bool IsDisplayedSafe(this IWebElement element)
        {
            var result = false;
            try
            {
                 //проверяем что элемент отображается и активен
                result = element.Displayed && element.Enabled; <<====Подозреваю проблему именно в этой строке.

            }
            catch (Exception e)
            {
                // Empty; Ignored
            }

            return result;
        }
        [TestMethod]
        public void DeleteComponent()
        {
            _cpiMainPage.Invoke();
            _helperMethods.CreateTemplate(_templateName);
            _helperMethods.CreateComponent(_templateName, _componentName);
            _helperMethods.DeleteComponent(_componentName);
            Assert.IsFalse(_cpiMainPage.GetTemplateNameInTree(_componentName), "Component is not delete");
        }
        [TestMethod]
       public void CreateComponent()
        {
            _cpiMainPage.Invoke();
            _helperMethods.CreateTemplate(_templateName);
            _helperMethods.CreateComponent(_templateName, _componentName);
            Assert.IsTrue(_cpiMainPage.GetQuestionNameInTemplate(_templateName, _componentName), "Component is not found");
        }

Код достался в наследство. Подскажите пожалуйста, где необходимо подправить проблему


(Valentin G ) #2

Было бы неплохо увидеть ту часть кода, где драйвер запускается.


(Игорь) #3

Если я верно нашел, то вот

        public static IWebDriver Driver
        {
            get
            {
                if (_driver == null)
                {
                    _driver = WebDriverRunner.Run(Config.swdBrowserType,
                        Config.wdIsRemote,
                        Config.wdRemoteUrl);
                }

                return _driver;
            }
        }

        public static void CloseDriver()
        {
            if (_driver != null)
            {
                _driver.Quit();
                _driver = null;
            }
        }

(Valentin G ) #4

Мне кажется у тебя проблема с запуском драйвера, возможно из-за Синглтона(похож на него твой драйвер).
После фейла теста, ты можешь щелкнуть по нему в Test Explorer и посмотреть стек ошибки. Там может быть полезная информация.