每次我的基于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选择器(或我用于识别对象的任何其他方法)。
我建议使用包装类来执行此操作:
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);
}