Selenium .NET驱动程序上IWebElement的基类?

时间:2015-07-01 18:52:31

标签: c# selenium selenium-webdriver

使用C#的Selenium WebDriver。

我想要做的就是找出IWebElement的基类是什么。

我无法在网上找到它。这里的任何人都可以帮我搞清楚吗?

我开始实现PageObject设计模式。我有一个名为Grid的PageObject,我希望将其视为IWebElement,因此它可以执行.Click(),。GetAttribute().SendKeys()之类的操作。当我这样做时:

public class Grid : IWebElement
{
}

它迫使我实现IWebElement中的所有方法,但我希望他们做的只是默认为已经实现的行为。

我认为实现这一目标的方法是找到IWebElement扩展的基类,并从 扩展网格,但我无法在任何地方找到它。

如果有人可以提供帮助,告诉我一种不同的方式来实现将Grid视为IWebElement的目标,我将非常感谢!提前谢谢。

1 个答案:

答案 0 :(得分:2)

OP说

  

我想做的就是弄清楚IWebElement的基类是什么。

首先,IWebElement是一个接口,所以它没有基类。

基本上,您正在寻找默认的IWebElement实施:RemoteWebElement

检查其源代码on GitHub

此外,RemoteWebElement是浏览器供应商专用实现的基类。例如,有FirefoxWebElement

更新

OP在一些评论中表示:

  

我想我应该改写一下。我想做的就是拥有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实施,并且所有浏览器都可以使用您的自定义设置!