C#Selenium速记代码

时间:2017-09-13 03:33:06

标签: c# selenium selenium-webdriver selenium-chromedriver

我正在尝试创建一个允许您输入

的方法
ClickOn(YourVariable);

而不是输入

driver.FindElement(By.Xpath(YourVariable)).Click();

我认为这是一种扩展方法,我有几个像这样:

public static IWebElement x(this IWebDriver driver, string xp)
{
    return driver.FindElement(By.XPath(xp));
}

这是我正在研究的方法:

public static IWebDriver ClickOn(this IWebDriver driver, string button)
{
    return driver.FindElement(By.XPath(button)).Click();
}

但我收到以下错误:

  

无法隐式将Void类型转换为OpenQA.Selenium.IWebDriver

我理解为什么我收到错误,但我想不出任何解决方案或解决方法。

非常感谢任何和所有这方面的帮助。

2 个答案:

答案 0 :(得分:2)

您可以使用以下方法:

public static IWebDriver ClickOn(this IWebDriver driver, string button)
    {
        driver.FindElement(By.XPath(button)).Click();
        return driver;// this driver will capture latest changes done
    }

我更希望拥有可以在任何地方使用的IWebDriver全局实例(单例),以便通过浏览器的最新更改可以在该全局单例驱动程序中。

答案 1 :(得分:0)

错误是因为您尝试返回.Click().Click()没有返回类型(void)。如果您只想单击一个元素,则无需返回任何类型。

我建议您传入By而不是string,这样您就可以使用任何定位器类型而不会被锁定到XPath(我不建议将其用于一般用法)。以下应该适合你。

public static void ClickOn(IWebDriver driver, By locator)
{
    driver.FindElement(locator).Click();
}