Ich habe die Notwendigkeit, Instanz einer Seite dynamisch (mit Selen) zur Laufzeit zu erstellen. Die Idee ist, den Klassennamen aus einer Zeichenfolge abzurufen und zu initialisieren.Wie initialisiert man eine geerbte Klasse aus String in C#?
Lasst uns sagen, dass ich ein „GenericPage“ haben:
public class GenericPage
{
public void Proceed(string testName)
{
//Basic implementation
}
}
Die zweite Klasse vererben GenericPage
public class WhatIsYourNamePage : GenericPage
{
[FindsBy(How = How.Id, Using = "fieldName")]
[CacheLookup]
private IWebElement UserName { get; set; }
[FindsBy(How = How.Id, Using = "fieldSurname")]
[CacheLookup]
private IWebElement UserSurname { get; set; }
[FindsBy(How = How.Id, Using = "submit-first-inner-1")]
[CacheLookup]
private IWebElement Submit { get; set; }
new public void Proceed(string testName)
{
var userData = ExcelDataAccess.GetTestData(testName);
UserName.EnterText(userData.fieldName, Costants.UserNameElementName);
UserSurname.EnterText(userData.fieldSurname, Costants.SurnameElementName);
Thread.Sleep(5000);
Submit.ClickOnIt(Costants.SubmitButtonElementName);
Thread.Sleep(5000);
}
}
es also hier gehen die Umsetzung ist das, was ich versucht habe, WhatIsYourNamePage dynamisch zu erstellen:
Problem ist, dass auf diese Weise ruft GenericPage.Proceed, aber ich möchte WhatIsYourNamePage.Proceed.
Natürlich kann ich ändern:
var myObject = (WhatIsYourNamePage)Activator.CreateInstance(type);
Aber ich brauche diese aus einem String dynamisch zu tun. Wie?
Lesen Sie hier: https://stackoverflow.com/questions/159978/c-sharp-keyword-usage-virtualoverride-vs-new – kiziu