C# Selenium - 编写自己的 click() 方法
C# Selenium - write an own click() method
我想写一个自己的 click() 方法并用不同的类型覆盖它。我的问题是我不知道以下数据类型:
- 编号
- xpath
- 名字
- 价值
通常我写:
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);
我想写一个自己的 click() 方法并用不同的类型覆盖它。我的问题是我不知道以下数据类型:
- 编号
- xpath
- 名字
- 价值
通常我写:
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);