C# Selenium - 编写自己的 click() 方法

C# Selenium - write an own click() method

我想写一个自己的 click() 方法并用不同的类型覆盖它。我的问题是我不知道以下数据类型:

通常我写: driver.FindElement(By.Id("GUI-id").Click();

我想要这样的方法: click("GUI-id");

谁能帮帮我...?

By.something 是一个 By 对象。你可以把它发送到这样的方法

public void Click(By by)
{
    driver.FindElement(by).Click();
}

然后这样称呼它

Click(By.Id("GUI-id")); 
Click(By.Name("GUI-name"));
// etc

是的,你可以这样做

public void Click(string something)
{
    if(driver.FindElement(By.Id(something)).Count > 0)
       driver.FindElement(By.Id(something)).Click();
    else if (driver.FindElement(By.Name(something)).Count > 0)
       driver.FindElement(By.Name(something)).Click();
//and so on...
}

通话

Click("GUI-id");

但它根本没有效果!

C# 为此提供了扩展方法:

public static class MyExtensionMethodsOrWhateverNameYouLike
{
    public static void Click(this IWebElement element)
    {
        element.Click();
    }
}

注意 Click() 方法定义中的 this 关键字。这将覆盖默认 IWebElement.Click() 并改为调用您的自定义方法。

或者您可以使用附加参数重载该方法:

public static class MyExtensionMethodsOrWhateverNameYouLike
{
    public static void Click(this IWebElement element, IWebDriver driver)
    {
        //driver.DoSomething();
        element.Click();
    }
}

在这种情况下,你可以这样称呼它:

IWebDriver driver;
IWebElement element;
...
element.Click(driver);