Закодированный пользовательский интерфейс C#: добавление динамической даты в datatable

Я провожу кодированный тест пользовательского интерфейса для веб-сайта, который отображает данные по разделам:

Например:

Раздел 1: отображает ссылку 1, ссылку 2, ссылку 3

Раздел 2: отображает ссылку 3, ссылку 5, ссылку 6

Я хочу убедиться, что веб-сайт правильно отображает данные, как указано выше, поэтому я решил добавить исходные данные в файл csv в формате, как показано ниже: (примечание: это всего лишь пример, содержимое каждой ссылки отличается от других)

Раздел 1, ссылка 1

Раздел 1, ссылка 2

Раздел 1, ссылка 3

Раздел 2, ссылка 4

Раздел 2, ссылка 5

Раздел 3, ссылка 6

Затем я загружаю данные из файла csv в datatable и сравниваю каждую строку в datatable с реальными данными на веб-сайте.

Это отлично работает, пока я не обнаружил, что некоторые ссылки содержат некоторую динамическую дату (некоторые содержат сегодняшнюю дату, некоторые содержат предыдущую дату, они часто меняются)

Я думал о решении, которое добавляет некоторые переменные в файл csv и вставляет в него дату.

Например, я добавляю переменные в csv, как показано ниже:

Раздел 1, ссылка 1 {0}

Раздел 1, ссылка 2 {1}

Раздел 1, ссылка 3 {2}

Раздел 2, ссылка 4

Раздел 2, ссылка 5

Раздел 3, ссылка 6

И замените их настоящей датой, но я не знаю как.

Ниже кода, который я использую для загрузки данных из файла csv в datatable:

public System.Data.DataTable ConvertCSVtoDataTable(string pathFile)
        {
            System.Data.DataTable dt = new System.Data.DataTable();
            using (StreamReader sr = new StreamReader(pathFile))
            {
                string[] headers = sr.ReadLine().Split(',');
                foreach (string header in headers)
                {
                    dt.Columns.Add(header);
                }
                while (!sr.EndOfStream)
                {
                    string[] rows = sr.ReadLine().Split(',');
                    System.Data.DataRow dr = dt.NewRow();
                    for (int i = 0; i < headers.Length; i++)
                    {
                        dr[i] = rows[i];
                    }

                    if (rows.Length != headers.Length)
                    {
                        for (int i = headers.Length; i < rows.Length; i++)
                        {
                            dr[headers.Length - 1] = dr[headers.Length - 1] + "," + rows[i];
                        }
                    }

                    dt.Rows.Add(dr);
                }

            }
            return dt;
        }

DataTable table = ConvertCSVtoDataTable(projectPath);

Пожалуйста, помогите мне в этом. Спасибо

Какую дату вы хотите вставить? Сегодня? Вчера? Десять дней с сегодняшнего дня? На каком языке вы используете свои закодированные тесты пользовательского интерфейса? Куда вы хотите вставить дату? Пожалуйста, редактировать вопрос, чтобы включить более подробную информацию о том, что вы хотите сделать и что вы пробовали.

AdrianHHH 01.08.2018 15:43

Спасибо, @AdrianHHH, я изменил свой вопрос. у тебя есть какое-нибудь решение?

user1710727 02.08.2018 09:14

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

Markus Dresch 02.08.2018 09:31

Не могли бы вы конкретизировать это? Я хочу добавить динамические данные в конец текста в столбце, как в примере выше. Что-то вроде использования String.Format ("это тест {0}, 01.08.2018) => выход должен быть «Это тест 01.08.218»

user1710727 02.08.2018 09:50

Мой первый комментарий выше спросил "какую дату вы хотите вставить?" Вы не ответили на этот вопрос, и я думаю, что это ваша проблема. Вы хотите вставить дату, но не знаете, что это за дата. Когда вы объясните, какую дату нужно вставить, вам будет легче ответить на ваш вопрос. Во-вторых, в какой столбец или столбцы вы хотите добавить дату? Как выбрать столбцы, в которые должна быть добавлена ​​дата?

AdrianHHH 07.08.2018 13:31

Привет @AdrianHHH, думаю, дата не важна. Например, я хочу добавить сегодняшний день в строку 1, столбец 3 в конце текстовой строки и добавить предыдущий день в строку 2, столбец 3 в конце текстовой строки (см. Пример). Ваш вопрос "Как выбрать столбцы, в которые должна быть добавлена ​​дата?" на самом деле проблема, с которой я столкнулся. Я не знаю, как добавить дату (или несколько текстов) в строку и столбец, которые я хочу добавить. Спасибо

user1710727 08.08.2018 11:51

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

AdrianHHH 08.08.2018 17:54

Привет @AdrianHHH, переписываю вопрос. Пожалуйста, помогите мне просмотреть и дайте мне знать, где вам непонятно, чтобы я мог объяснить больше. Спасибо

user1710727 10.08.2018 05:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
8
64
1

Ответы 1

Вы можете изменить цикл, содержащий dr[i] = rows[i];, на.

int drIndex = 0;
for (int i = 0; i < headers.Length; i++)
{
    dr[drIndex] = rows[i];
    drIndex++;

    if (i == indexForInsertingTheDate)
    {
        dr[drIndex] = theDateToBeInserted;
        drIndex++;
    }
}

В качестве альтернативы вы можете изменить тело цикла с простого dr[i] = rows[i]; на:

string field = rows[i];
if (field.StartsWith("this is test "))
{
    field += theDateToBeInserted;
}
dr[i] = field;

В вопросе не указано, какую дату использовать. Если нужна сегодняшняя дата, вы можете установить theDateToBeInserted на DateTime.Now.ToString("mm/dd/yyyy").

Спасибо @AdrianHHH за ответ, на самом деле, я использую метод ConvertCSVtoDataTable для преобразования некоторых файлов csv, и некоторым из них не нужно вставлять дату. И также текст не начинается с «это тест», это просто пример. Есть ли способ изменить данные после преобразования в Datatable. Спасибо

user1710727 07.08.2018 09:43

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

AdrianHHH 07.08.2018 10:10

Хорошо @AdrianHHH, я редактировал вопрос. Пожалуйста, посмотрите, есть ли у вас время. Спасибо

user1710727 07.08.2018 12:20

Другие вопросы по теме

Невозможно запустить тесты, которые взаимодействуют с рабочим столом
Публикация тестовых сборок с артефактами для использования во время функциональных тестов на VSTS
Скрипт закодированного теста пользовательского интерфейса не выполняется при использовании удаленного рабочего стола
Закодированный щелчок мыши пользовательского интерфейса кнопки HTML не работает
«Адаптер модульного теста вызвал исключение: не удалось загрузить один или несколько запрошенных типов. Получите свойство LoaderExceptions для получения дополнительных сведений»
Как избежать исключения PlaybackFailureException в закодированном пользовательском интерфейсе при отправке клавиш клавиатуры в окно сообщений Outlook?
Автоматическое тестирование Microsoft Dynamics AX 2009?
Закодированный тест пользовательского интерфейса не одинаковое поведение на разных ПК
Закодированный пользовательский интерфейс: использование источника данных без входа на сайт
Репозиторий закодированных объектов пользовательского интерфейса