使用C#的Selenium WebDriver。
我想要做的就是找出IWebElement
的基类是什么。
我无法在网上找到它。这里的任何人都可以帮我搞清楚吗?
我开始实现PageObject设计模式。我有一个名为Grid
的PageObject,我希望将其视为IWebElement
,因此它可以执行.Click()
,。GetAttribute()
和.SendKeys()
之类的操作。当我这样做时:
public class Grid : IWebElement
{
}
它迫使我实现IWebElement
中的所有方法,但我希望他们做的只是默认为已经实现的行为。
我认为实现这一目标的方法是找到IWebElement
扩展的基类,并从 扩展网格,但我无法在任何地方找到它。
如果有人可以提供帮助,或告诉我一种不同的方式来实现将Grid
视为IWebElement
的目标,我将非常感谢!提前谢谢。
答案 0 :(得分:2)
OP说:
我想做的就是弄清楚IWebElement的基类是什么。
首先,IWebElement
是一个接口,所以它没有基类。
基本上,您正在寻找默认的IWebElement
实施:RemoteWebElement
。
检查其源代码on GitHub。
此外,RemoteWebElement
是浏览器供应商专用实现的基类。例如,有FirefoxWebElement
。
我想我应该改写一下。我想做的就是拥有Grid类 扩展IWebElement的功能,并且能够被视为 一个IWebElement。 -
恕我直言,如果您使用extension methods而不是继承提供此类自定义,您将会更有效率。如果使用继承方法,则需要从所有特定于供应商的RemoteWebElement
类派生,以便为Selenium支持的所有Web浏览器提供自定义。
概要。为什么不使用extension methods实现目标?
public static class GridWebElementExtensions
{
public static IWebElement Whatever(this IWebElement element)
{
// Do stuff here
}
}
通过这种方式,您可以扩展任何IWebElement
实施,并且所有浏览器都可以使用您的自定义设置!