C# 如何在save类测试中实现网页模式和添加接口
请参阅此结构(来自): 现在这是C# 如何在save类测试中实现网页模式和添加接口,c#,selenium,C#,Selenium,请参阅此结构(来自): 现在这是Sonclass: public class GmailPage : AbstractPage<GmailPageElementsMap, GmailPageValidator>, ITest { public GmailPage() : base("http:...") { } } 和验证程序: public class GmailPageValidator : AbstractPageValidator<GmailPageEleme
Son
class:
public class GmailPage : AbstractPage<GmailPageElementsMap, GmailPageValidator>, ITest
{
public GmailPage() : base("http:...") { }
}
和验证程序:
public class GmailPageValidator : AbstractPageValidator<GmailPageElementsMap>
{
}
公共类Gmail页面验证程序:AbstractPageValidator
{
}
正如您所看到的,我在我的
Gmail
类中实现了ITest
,但是我没有收到任何编译错误,尽管我没有添加这两个接口方法(登录和注销)。这是因为这些方法是在父抽象页面中实现的。如果要强制GmailPage
(以及所有其他派生类)实现Login()
和Logout()
请在父AbstractPage
类中将它们声明为abstract
public abstract class AbstractPage<M, V> : AbstractPage<M>, ITest
where M : AbstractPageEmenetsMap, new()
where V : AbstractPageValidator<M>, new()
{
public AbstractPage(VendorInfo vendorInfo) : base(vendorInfo) { }
public V Validate()
{
return new V();
}
public abstract void Login();
public abstract void Logout();
}
public IWebElement EmailAddressTextBox
{
get
{
return WebDriver.WebDriverWait.Until(ExpectedConditions.ElementIsVisible(By.Id("identifierId")));
}
}
public class GmailPageValidator : AbstractPageValidator<GmailPageElementsMap>
{
}
public abstract class AbstractPage<M, V> : AbstractPage<M>, ITest
where M : AbstractPageEmenetsMap, new()
where V : AbstractPageValidator<M>, new()
{
public AbstractPage(VendorInfo vendorInfo) : base(vendorInfo) { }
public V Validate()
{
return new V();
}
public abstract void Login();
public abstract void Logout();
}
public class GmailPage : AbstractPage<GmailPageElementsMap, GmailPageValidator>
{
public GmailPage() : base("http:...") { }
public override void Login()
{
throw new System.NotImplementedException();
}
public override void Logout()
{
throw new System.NotImplementedException();
}
}