FileHelpers - как создать поле на основе другого поля? - PullRequest
0 голосов
/ 18 апреля 2019

Я выполняю тестирование Selenium и хочу использовать FileHelpers для заполнения класса из файла CSV. Я хотел бы создать Selenium.By, используя пользовательский конвертер FileHelpers на основе текста поля и текста предыдущего поля.

Вот фрагменты моего кода:

using FileHelpers;
using By = OpenQA.Selenium.By;

[DelimitedRecord(";")]
public class WebElement
{
    public string SelectorString;

    [FieldConverter(typeof(ByConverter))]
    public By Selector;
}

public class ByConverter : ConverterBase
{
    public override object StringToField(string selectorType)
    {
        if (selectorType == "CssSelector")
            return By.CssSelector("");

        if (selectorType == "Id")
            return By.Id("");

        throw new ConvertException(selectorType, typeof(By));
    }
}

Вы можете видеть, что селектор By создан с пустой строкой, потому что конвертер не знает, что такое SelectorString.

Я хотел бы сделать что-то вроде этого:

public class ByConverter : ConverterBase
{
    public override object StringToField(string selectorType, string selectorString)
    {
        if (selectorType == "CssSelector")
            return By.CssSelector(selectorString);
    ...}
...}

Это приведет к созданию полезного объекта Selenium.By. Есть ли способ сделать что-то подобное?

В качестве альтернативы, есть ли способ изменить существующий объект By? Я еще не нашел способ. Что-то вроде:

By locator = By.Id("");
locator.SetValue("some string");
...