Привет коллеги!
Не так давно начал изучать увлекательный мир программирования и автоматизации
И сейчас передо мной стала следующая задача:
Есть таблица с столбцами “Дата”, “Статус” и “Действие”.
Необходимо:
Обращаясь к дате, проверять статус дня и от статуса дня проверять валидность возможного действия.
Думаю считывать построчно и записывать в многомерный массив… Так я смогу проверить количество дней, сделать проверку статусов и действий.
Но также есть необходимость нажимать в столбце “Действие” на возможные действия… а как это сделать не знаю… может кто подскажет
Создай кастомный HtmlElement (от Яндекса) - строку таблицы, с методами getDate(), getStatus(), calculate() ну и что тебе еще нужно…
Что-то похожее было тут:
Хотя не уверен что Selenide с HtmlElement рационально использовать
Да, в Selenide есть изящное решение.
Тут всё зависит от того, насколько вы контролируете тестируемое приложение.
Идеальный вариант - когда вы его полностью контролируете. То есть перед запуском тестов инициализируете данные в БД. То есть вы точно знаете, что должно быть на экране. Тогда так:
Плохой вариант - когда вы не контролируете состояние приложения. Вы не знаете точно, что должно быть на экране. В таком случае вы обычно хотите найти строку, в которой есть, скажем, дата “28.11.2015”, найти в этой строке кнопку “Рассчитать” и нажать её. Сочувствую.
Но и это возможно. Примерно так:
public static SelenideElement getAllTableBillingDayHistory() {
return $(By.cssSelector("#billingDayHistory"));
}
2)Создаю класс для работы с этой таблицей, в котором:
а)Объявляю 4 переменные типа SelenideElement с названиями столбцов
б)Сетеры гетеры для этих переменных
в)Создаю метод в который передаю SelenideElement всю таблицу и выполняю след. операции:
-создаю ElementsCollection которому присваиваю таблицу построчно. 1 элемент 1 строка из таблицы
-создаю ElementsCollection в который в цикле буду буду заполнять ячейками из строки
-создаю List элементов объектов данного класса
В цикле делаю следующее:
-получаю из строки массив ячеек
-создаю объект данного класса
-распределяю эти ячейки
-добавляю объект данного класса в массив элементов данного класса
По итогу метод возвращает массив в котором каждый элемент это строка таблицы. И через гетеры можно получить любую ячейку
Ниже класс enum для указания порядкового номера ячейки