如何获取Selenium C#控件名称以进行报告

问题描述 投票:1回答:2

每次我的基于selenium的自动化框架点击控件时,我都想报告一行。我的对象存储库存储各个控件,如下所示:

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

每次我点击方法触发时我都希望它记录类似“用户点击:ExampleControl”的内容但是,当我这样做时,我得到“用户点击:侧面菜单> 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选择器(或我用于识别对象的任何其他方法)。

c# selenium selenium-webdriver ui-automation qa
2个回答
1
投票

我建议使用包装类来执行此操作:

public class 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
投票

尝试使用nameof(),例如:

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

更多信息here

© www.soinside.com 2019 - 2024. All rights reserved.