Я новый, и я изучаю webdriver и java :) У меня есть вопрос начинающего.Класс, который создает объект классов
Я создал классы йота locators(findBy)
и методы работы с этим локаторы (senKeys()
, click()
и т.д.) - я использую pagefactory
.
HomePage
LoginPage
...
Мой главный класс AddNewLeadTest
класс, где я инициализировать метод из классов с локаторами, и я делаю это так:
HomePage hp = new HomePage(driver);
hp.loginButton.click()
Я хотел бы сделать, чтобы это так:
HomePage.loginButton.click()
Это быстрее, и мне не нужно создавать в AddNewLeadTest
новый объект для всех xxxPage
класс.
Как написать класс/метод для упрощения создания нового объекта?
Я нашел пример, который хотел бы использовать в моем проекте (на C#), но я не знаю, как его использовать в Java. Смотри ниже.
public static class Pages
{
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>(); }
}
В этом примере метод вызывающему как это:
public void CanRegisterNewAccount()
{
Pages.Register.Goto();
Pages.Register.RegisterNewUser();
}
Таким образом, ее очень просто и понятно.
Вы * можете * сделать это, но я бы порекомендовал вас. Сильно. Использование статических методов, подобных этому, похоже на простое решение, но они являются ярлыком, который вы в конце концов пожалеете раньше, чем вы думаете. Вы тесно связываете свой код вместе, что очень быстро становится очень ограничивающим. –