Как я могу запустить тестовые сценарии селена C # по порядку? - PullRequest
1 голос
/ 30 мая 2019

Я написал несколько тестовых примеров с использованием веб-драйверов Selen в C #. Я использовал атрибут ORDER для запуска тестов по порядку. Он запускается по заказу. Но тесты не ждут окончания предыдущих тестов.

Я также использовал WebDriverWait. Но это не ждет.

Ссылка: https://github.com/nunit/docs/wiki/Order-Attribute

Пожалуйста, найдите фрагмент кода ниже:

[Test, Order(1)]
    public void OpenUserPage()
    {
        try
        {
            var wait = new WebDriverWait(_webDriver, new TimeSpan(2000));
            wait.Until(ExpectedConditions.ElementToBeClickable(By.Id("NavigationMenu")));

            var userPageEle = _webDriver.FindElement(By.ClassName("icon-Users"));
            userPageEle.Click();
        }
        catch (Exception e)
        {
            SendMail.SendErrorEmail(e.StackTrace, "OpenUserPage()");
        }
    }

    [Test, Order(2)]
    public void AddUser()
    {
        try
        {
            var waitForAddUser= new WebDriverWait(_webDriver, new TimeSpan(5000));
            waitForAddUser.Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("[ng-click*=AddUserBtnClick]")));

            var addUser = _webDriver.FindElement(By.CssSelector("[ng-click*=AddUserBtnClick]"));
            addUser.Click();

            var element = _webDriver.FindElement(By.XPath("//input[@id='Role_hidden']"));
            var permissionSet = _webDriver.FindElement(By.XPath("//input[@id='RolePermissionSet_hidden']"));

            var FirstName = _webDriver.FindElement(By.Name("FirstName"));
            FirstName.SendKeys("Sangeetha");

            var LastName = _webDriver.FindElement(By.Name("Last Name"));
            LastName.SendKeys("Periyaiah");

            var UserName = _webDriver.FindElement(By.Name("UserName"));
            UserName.SendKeys("SangeetheP");

            var Password = _webDriver.FindElement(By.Name("Password"));
            Password.SendKeys("Sync@123");

            var Email = _webDriver.FindElement(By.Name("Email"));
            Email.SendKeys("sangee900@gmail.com");

            var RoleList = _webDriver.FindElement(By.Name("RoleList"));
            element.SendKeys("SuperAdmin");

            var RolePermissionList = _webDriver.FindElement(By.Name("RolePermissionList"));
            permissionSet.SendKeys("SuperAdmin");

            var MobileNumber = _webDriver.FindElement(By.Name("MobileNumber"));
            MobileNumber.SendKeys("8220867882");

            var AreaCode = _webDriver.FindElement(By.Name("AreaCode"));
            AreaCode.SendKeys("600002");

            var Address = _webDriver.FindElement(By.Name("Address"));
            Address.SendKeys("3/761, Ab Block");

            var submit = _webDriver.FindElement(By.CssSelector("[ng-click*=AddUpdateUser]"));
            submit.Click();
        }
        catch (Exception e)
        {
            SendMail.SendErrorEmail(e.StackTrace, "AddUser()");
        }
    }

    [Test, Order(3)]
    public void ApplyFilter()
    {
        try
        {
            var waitForSearch = new WebDriverWait(_webDriver, new TimeSpan(55000));
            waitForSearch.Until(ExpectedConditions.ElementToBeClickable(By.CssSelector(".form-control.ng-pristine.ng-valid")));

            var searchUser = _webDriver.FindElement(By.CssSelector(".form-control.ng-pristine.ng-valid"));
            searchUser.SendKeys("as");

            var waitFilter = new WebDriverWait(_webDriver, new TimeSpan(55000));
            waitFilter.Until(ExpectedConditions.ElementToBeClickable((By.CssSelector("[ng-click*=filterUserBtnClick]"))));

            var applyUserFilter = _webDriver.FindElement(By.CssSelector("[ng-click*=filterUserBtnClick]"));
            applyUserFilter.Click();

            var waitResetFilter = new WebDriverWait(_webDriver, new TimeSpan(55000));
            waitResetFilter.Until(ExpectedConditions.ElementToBeClickable((By.CssSelector("[ng-click*=resetFilter]"))));

            var resetFilter = _webDriver.FindElement(By.CssSelector("[ng-click*=resetFilter]"));
            resetFilter.Click();
        }
        catch (Exception e)
        {
            SendMail.SendErrorEmail(e.StackTrace, "ApplyFilter()");
        }
    }

Пожалуйста, поделитесь любым другим решением.

Заранее спасибо

1 Ответ

0 голосов
/ 31 мая 2019

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

  1. Если строка кода webdriverwait выдает какое-то исключение, и оно не работает, вы можете обратиться к следующему коду

       var waitForAddUser= new WebDriverWait(_webDriver, new TimeSpan(5000));
         waitForAddUser.IgnoreExceptionTypes(typeof(NoSuchElementException),
                 typeof(ElementNotVisibleException));
        waitForAddUser.Until(ExpectedConditions.ElementIsVisible(By.CssSelector("[ng- 
               click*=AddUserBtnClick]")));
    
  2. Использовать [Setup ()] CommonWait () {Thread.sleep (5000)); }

...