Как получить контрольные имена Selenium C # для отчетности - PullRequest
0 голосов
/ 06 сентября 2018

Я хочу сообщать о линии каждый раз, когда моя инфраструктура автоматизации на основе селена нажимает на элемент управления. В моем хранилище объектов хранятся отдельные элементы управления, например:

public static By ExampleControl = By.CssSelector("sidemenu > ul > li:nth-child(2) > a");

Каждый раз, когда мой метод щелчка срабатывает, я хочу, чтобы он записывал что-то вроде: > а ". Вот мой текущий код:

        public void Click(OpenQA.Selenium.By Control)
    {
        WaitForControlClickable(Control);
        TestInitiator.driver.FindElement(Control).Click();
        reporter.LogInfo("User clicked on: " + Control);
    }

Как мне получить этот элемент управления в журнале, чтобы показать имя элемента управления, а не селектор CSS (или любой другой метод, который я использую для идентификации объекта).

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Я бы порекомендовал класс-обёртку для этого:

открытый класс ByControlWithName {

    public OpenQA.Selenium.By Control { get; set; }
    public string ControlName { get; set; }

    public ByControlWithName(OpenQA.Selenium.By ctl, string name)
    {
        this.Control = ctl;
        this.ControlName = name;
    }


}

Вот ваш статический звонок:

public static ByControlWithName ExampleControl = new ByControlWithName(By.CssSelector("sidemenu > ul > li:nth-child(2) > a"), "ExampleControl");

И обновленная функция:

public void Click(ByControlWithName Control)
{
    WaitForControlClickable(Control.Control);
    TestInitiator.driver.FindElement(Control.Control).Click();
    reporter.LogInfo("User clicked on: " + Control.ControlName);
}
0 голосов
/ 06 сентября 2018

Попробуйте использовать nameof(), например ::

reporter.LogInfo("User clicked on: " + nameof(Control));

Подробнее здесь .

...