Selenium有多个类,为某些浏览器提供机制。
所以有以下驱动程序(我最关心):FireFoxDriver
,ChromeDriver
,InternetExplorerDriver
,
所有这些都继承自RemoteWebDriver
。
public class FireFoxDriver : RemoteWebDriver { ... }
public class ChromeDriver : RemoteWebDriver { ... }
public class InternetExplorerDriver : RemoteWebDriver { ... }
现在,我想为每个驱动程序提供其他功能/帮助程序,例如,转到URL并执行脚本:
public void Goto(string url)
{
Navigate().GoToUrl(url);
ExecuteScript("console.log('Using selenium');");
}
我想为每个驱动程序(FireFox,Chrome和IE)提供此功能,所以我可以这样做:
var chrome = new ChromeDriver();
chrome.Goto("https://google.com/");
所以是的,这样做的正确方法是什么?
基本上,我可以使用它来创建BaseRemoteWebDriver
类,将我的功能放在那里,然后创建BaseChromeDriver
,BaseFireFoxDriver
,BaseIEDriver
并继承自{ {1}}。
这样,我也许可以实现我想要的,但是我最终会有三个基本上是空的继承自BaseRemoteWebDriver
的类,只包含生成的构造函数。
这是在C#中扩展类的唯一(有效)方法吗?
答案 0 :(得分:1)
您也可以使用Extension Methods
。
然后你可以这样写:
public static class RemoteWebDriverExtensions
{
public static void Goto(this RemoteWebDriver driver, string url)
{
driver.Navigate().GoToUrl(url);
driver.ExecuteScript("console.log('Using selenium');");
}
}
然后就这样称呼它:
RemoteWebDriver chromedriver = new ChromeDriver();
chromedriver.Goto("https://google.com");