Skip to main content
 首页 » 编程设计

c#之C# 中的 Selenium WebDriver之"By"类扩展

2024年01月24日24jyk

我一直在一个 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"));