witam,
jestem świerzak, więc proszę o wyrozumiałość. Jave i oop znam bardzo średnio. Zacząłem się bawić trochę selenium webdriver. Mam lekki problem, zapewne to podstawy.
Mam klasy - w których mam wypisane lokatory do elementów stron oraz metody które są wynkonywane na tych lokalizatorach (click(), sendkeys()) itp:
HomePage
LoginPage
itd
Główna klasa w której będą wywoływane metody to:
AddNewLeadTest.
Teraz robię tak że aby wywołać jakąś metodę z np HomePage muszę napisać coś takiego
HomePage hp = new HomePage(driver);
hp.loginButton.click()
O co mi ogólnie chodzi? Czy i jak mogę napisać klasę/metodę "ogólną" dzięki której mógłbym wywoływać medoty z klas z lokatorami w prostszy sposób, np
HomePage.loginButton.click()
bez tworzenia nowego obiektu dla każdej z klas (HomePage,LoginPage ....)
Chodziło by mi dokładnie o coś takiego (to jest przykład z neta, napisany w C#), tylko nie wiem jak to powinno wyglądać w javie i czy by to w ogóle działało
private static T GetPage<T>() where T : new()
{
var page = new T();
PageFactory.InitElements(Browser.Driver, page);
return page;
}
public static AboutPage About
{
get { return GetPage<AboutPage>(); }
}
public static TopNavigationPage TopNavigation
{
get { return GetPage<TopNavigationPage>(); }
}
public static HomePage Home
{
get { return GetPage<HomePage>(); }
}
public static ContactPage Contact
{
get { return GetPage<ContactPage>(); }
}
public static RegisterPage Register
{
get { return GetPage<RegisterPage>(); }
}
public static LoginPage Login
{
get { return GetPage<LoginPage>(); }
}
public static ManageAccountPage ManageAccount
{
get { return GetPage<ManageAccountPage>(); }
}