Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Можно ли передать параметры в класс


(anton_matyushkin) #1

Доброго времени суток.

Есть coded ui test, в нем объявлены три переменные string, которые передаются в разные методы. Задавал в самом тесте, т.к. методы описаны в разных проектах, а значения строк генерируются рандомно, иначе получаются разные значения.

В конце теста мне нужно сделать клик по созданной строке в гриде.

Для строки написал класс:

public class UIДубликатЛВНRow : WinRow
    {
 
        public UIДубликатЛВНRow(UITestControl searchLimitContainer) : 
            base(searchLimitContainer)
 
        {
            #region Условия поиска
            DateTime Birthday = Utility.DataBirthdayPatient();
            this.SearchProperties.Add(WinRow.PropertyNames.Name, mDuplicateNumber + " " + mNumber + " " + mLastName + " Пациент Создаванович (М) " + Birthday.ToString("dd.MM.yyyy") + " г.р.", PropertyExpressionOperator.Contains);
            this.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);
            this.WindowTitles.Add("AKSi-клиника - Mozilla Firefox");
            #endregion
        }
 
        #region Properties
        public WinCell UIДубликатЛВНItemCell
        {
            get
            {
                this.mUIДубликатЛВНItemCell = new WinCell(this);
                #region Условия поиска
                this.mUIДубликатЛВНItemCell.SearchProperties[WinCell.PropertyNames.Instance] = "3";
                this.mUIДубликатЛВНItemCell.WindowTitles.Add("AKSi-клиника - Mozilla Firefox");
                #endregion
                return this.mUIДубликатЛВНItemCell;
            }
        }
        #endregion
 
        #region Fields
        private WinCell mUIДубликатЛВНItemCell;
        #endregion
    }
Параметры mNumber, mDuplicateNumber, mLastName нужно получить из теста, т.е. через один из методов, используемых в тесте:
public void ChoiceCreatedDuplicatedDisabilityListMethod(string mNumber, string mDuplicateNumber, string mLastName)
        {
            #region
            WinCell uIДубликатЛВНItemCell = List_of_item.ListOfItem.UIAKSiклиникаMozillaFiWindow.UIItemTable.UIДубликатЛВНRow.UIДубликатЛВНItemCell;
            #endregion
 
            uIДубликатЛВНItemCell.WaitForControlEnabled(3000);
            Mouse.Click(uIДубликатЛВНItemCell);
            Playback.Wait(1000);
        }
Можно ли в класс строки запихнуть переменные? Если да, то куда их пихать?

(Дмитрий Жарий) #2

Я долго думал что же посоветовать. И придумал.

    1. Выкиньте всю эту непонятную метаморфозу с конструкторами, свойствами и полями

    2.  Создайте метод, который принимает 3 нужных параметра и возвращает WinCell. В этом методе, вначале найдите нужный Row, а в нем WinCell.

    3.  Этот метод вы можете создать в отдельном классе (можно и статическом)

Код, на генерированный CodedUI не в коем случае не должен быть примером для подражания.  Все рекордеры генерируют рабочий код, который очень далек от хорошего стиля. Так что не следует подстраиваться под то, что диктует CodedUI.