我一直在一个 webdriver 项目中工作,以自动化我的测试,并且我尝试开发类似助手的东西。默认情况下,在 By 类中有 CssSelector()、XPath()、ClassName() 等方法。
我的问题是:我是否可以(以及如何?!)扩展此类以创建另一种方法来简化我的代码?我想要 By 调用我自己的方法。我搜索并获得了一些关于如何创建 NewBy 的结果,但我认为这会使我的代码将来变得杂乱无章。
Selenium 中默认存在的内容:
FindElement(By.CssSelector("#example"));
我正在尝试开发什么:
FindElement(By.MyOwnMethod("example"));
谢谢!
请您参考如下方法:
在 css 中,# 符号是 ID 选择器。您可以只使用 By.Id(string) 方法。
编辑:
如果你真的想定制它,你可以定义你自己的By实现。但是您不能扩展静态方法,因此您需要创建一个新类来托管它们。我会在这里使用Via,您可以随时使用对您更有意义的名称,例如网站名称:
public class Via
{
public static By AdminMenu(string Id) // could also just use int
{
return By.CssSelector(string.Format("[selenium-admin-menu='{0}']", Id));
}
public static By ImgSrc(string source)
{
return By.CssSelector(string.Format("img[src='{0}']", source));
}
}
//usage:
var menu3 = driver.FindElement(Via.AdminMenu("3"));
