Как писать скрипты, эффективно хранить объекты?:
Фреймворки: управляемый данными, управляемый ключевыми словами и шаблон объекта страницы Почему 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”