实例化一个非静态类以在没有继承的情况下跨其他类使用

时间:2019-03-03 20:08:33

标签: c# selenium

我正在尝试改善我的测试框架,并避免我的许多班级之间出现太多的依赖关系。这是用于测试自动化。我有一个名为WebDriverSupport的类,其中大多数包含硒webdriver方法,例如-Click(),entertext ...

我有使用这些方法的各种页面对象类,但我不想继承该类。我当前的实现是-

public class WebDriverSupport{
public void ClickElement(IWebElement element){element.Click()}}

然后有一个页面对象类,比如说Homepage-

public class HomePage{
private WebDriverSupport Support{get;set;} = new WebDriverSupport();
public void ClickOnThatElement(){
Support.ClickElement(Element)}

我的问题是,有没有一种更好的方法来实现我的webdriversupport类而无需主页继承该类或像上面那样实例化该类?

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用static创建一个Extensions

public static class WebElementSupport 
{
    public static void ClickElement(this IWebElement element) 
    {
        //implementation
    }
}

,然后仅using带扩展名的类使用它

using Namespace.With.Extension.WebElementSupport;

public class HomePage
{
    public void ClickOnThatElement()
    {
        Element.ClickElement();
    }
}