Как писать скрипты, эффективно хранить объекты?:
Фреймворки: управляемый данными, управляемый ключевыми словами и шаблон объекта страницы Почему POP?
- простота в обслуживании
- легкая читаемость скриптов
- сокращение или устранение дубликатов
- ре – удобство использования кода
- надежность
Класс объектов страницы
Создайте класс для каждой страницы: Домашняя страница – все объекты, принадлежащие домашней странице Login – Класс Java(LoginPage) для идентификации объектов на одной странице
public class MaerkischeScholle {
WebDriver driver;
//local driver
public MaerkischeScholle(WebDriver driver) {
this.driver = driver;
//driver from where parameter is passed into constructor, is passed to local driver
}
By textFlatAvailability = By.xpath("//*[@id='article-27']");
public WebElement TextFlat() {
return driver.findElement(textFlatAvailability);
}
}
Класс Testcase
Создайте класс для тестовых примеров, например. Войдите в систему вызовите Login-Field из Loginpage-Class, чем вы можете воздействовать на Login-Field или получить текст со страницы и распечатать его
package testcases;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;
import objectrepository.MaerkischeScholle;
public class CheckAvailability {
@Test
public void CheckText() {
System.setProperty("webdriver.gecko.driver", "//home//helloworld//Documents//Code//Drivers" +
"//geckodriver");
WebDriver driver = new FirefoxDriver();
driver.get("https://www.maerkische-scholle.de");
MaerkischeScholle ms = new MaerkischeScholle(driver);
String text = ms.TextFlat().getText();
System.out.println(text);
}
}
Водитель
Webdriver инициируется в классе Testcase
System.setProperty("webdriver.gecko.driver", "//home//helloworld//Documents//Code//Drivers" +
"//geckodriver");
WebDriver driver = new FirefoxDriver();
Класс тестовых примеров (параметр для нового объекта PageObjectClass)
MaerkischeScholle ms = new MaerkischeScholle(driver);
а затем передается классу PageObjects в качестве параметра через конструктор. -> -> Класс объектов страницы
WebDriver driver;
//local driver
public MaerkischeScholle(WebDriver driver) {
this.driver = driver;
//driver from where parameter is passed into constructor, is passed to local driver
}
если вы переключитесь на другую страницу, просто создайте новый объект страницы в классе Test cases и передайте драйвер
HomePage hp = new HomePage(driver);
PageObjectFactory @findBy
@FindBy(xpath= "//*[@id='article-27']")
WebElement textFlatAvailability;
public WebElement TextFlat() {
return textFlatAvailability;
}
Оригинал: “https://dev.to/annequinkenstein/selenium-design-a-framework-page-object-pattern-4g55”