Простой, объявите их как By на этой страницеОбъект:
public By testIdElement = By.id("testid");
public By testNameElement = By.name("testname");
public By testClassElement = By.className("testclass");
затем вызовите их в методе findelements так, как вы хотите:
firefoxDriver.findElement(elementsPage.testIdElement);
firefoxDriver.findElement(elementsPage.testNameElement);
firefoxDriver.findElement(elementsPage.testClassElement);
Мне лично нравится помещать метод driver.findElement в pageObject как лямбда-выражение, чтобы избежать переписывания кода:
что я делаю на C #:
public IWebElement Test => webdriver.FindElement(By.CssSelector("test"));
преобразование в Java:
public WebElement test -> driver.findElement(By.cssSelector("test"));
Итак, написание моего кода было бы примерно так:
page.Test.Click();
page.Test.SendKeys("...");
Поскольку я не люблю использовать элементы в классе Test, я пишу эти методы в объекте страницы (отделяя логику теста от сценария), пример:
public PageObjectClassExample ShowFilters()
{
showFiltersButton.Click();
return this;
}
public PageObjectClassExample ClearAllFilters()
{
finalDatePicker.Clear();
initialDatePicker.Clear();
searchButton.Click();
return this;
}
public PageObjectClassExample HideShowIssuerColunm()
{
ShowHideColumnBtn.Click();
IssuerColumnCheck.Click();
KeyColumnCheck.Click();
ShowHideColumnBtn.Click();
return this;
}
и в тестовом файле я бы написал что-то вроде этого:
PageObjectClassExample page = new PageObjectClassExample();
page
.ShowFilters()
.ClearAllFilters()
.HideShowIssuerColumn();