atesting.ru Блог Объектная модель страницы с фабрикой страниц в Selenium — полное руководство

Объектная модель страницы с фабрикой страниц в Selenium — полное руководство

Объектная модель страницы с фабрикой страниц в Selenium

В этом руководстве мы узнаем о шаблоне проектирования объектной модели страницы. Мы увидим полную информацию о шаблоне проектирования объектной модели страницы с фабрикой страниц в Selenium на практических примерах.

  1. Что такое шаблон проектирования POM (модель объектов страницы)
  2. Что такое страница Factory
  3. В чем разница между POM и Page Factory
  4. Преимущества платформы модели объектов страницы
  5. Создание POM с помощью фабрики страниц в Selenium WebDriver

Что такое шаблон проектирования объектной модели страницы (POM):

Объектная модель страницы — это шаблон проектирования, который стал популярным в Selenium Test Automation. Это широко используемый шаблон проектирования в Selenium для улучшения обслуживания тестов и уменьшения дублирования кода. Объектная модель страницы (POM) может использоваться в любой структуре, такой как модульная, управляемая данными, управляемая ключевыми словами, гибридная структура и т. Д. Объект страницы — это объектно-ориентированный класс, который служит интерфейсом для страницы вашего приложения. Тест (AUT). Затем тесты используют методы этого класса объекта страницы всякий раз, когда им нужно взаимодействовать с пользовательским интерфейсом (UI) этой страницы. Преимущество заключается в том, что при изменении пользовательского интерфейса для страницы не нужно менять сами тесты, нужно изменять только код внутри объекта страницы. Впоследствии все изменения для поддержки этого нового пользовательского интерфейса расположены в одном месте.

Объект страницы Модель с фабрикой страниц в Selenium & ndash; Полное руководство

Что такое фабрика страниц:

Мы видели, что «объектная модель страницы» — это способ представления приложения в тестовой среде. Для каждой «страницы» в приложении мы создаем объект страницы для ссылки на «страницу», тогда как «фабрика страниц» является одним из способов реализации «объектной модели страницы».

< strong> В чем разница между объектной моделью страницы (POM) и фабрикой страниц:

Объект страницы — это класс, который представляет веб-страницу и содержит функции и элементы.
Страница Factory — это способ инициализировать веб-элементы, с которыми вы хотите взаимодействовать внутри объекта страницы, когда вы создаете его экземпляр.

Преимущества платформы объектной модели страницы:

  • Возможность повторного использования кода — Мы могли бы добиться повторного использования кода, написав код один раз и используя его в различных тестах.
  • Поддерживаемость кода — существует четкое разделение между тестовым кодом и кодом страницы, таким как локаторы. и макет, который становится очень простым в сопровождении кода. Код изменяется только в классах объектов страницы, когда происходит изменение пользовательского интерфейса. Это улучшает обслуживание тестов и уменьшает дублирование кода.
  • Репозиторий объектов — Каждая страница будет определена как класс java. Все поля на странице будут определены в интерфейсе как члены. Затем класс будет реализовывать интерфейс.
  • Читаемость — улучшает читаемость за счет четкого разделения между тестовым кодом и кодом страницы.

Создание объектной модели страницы с помощью фабрики страниц в Selenium WebDriver:

Здесь я возьму приложение Gmail, чтобы продемонстрировать реализацию шаблона проектирования объектной модели страницы с фабрикой страниц с использованием Selenium с Java.

Сценарий: Введите действительные учетные данные на странице « Вход в Facebook» и выполните перенаправление на страницу « Домашняя страница Facebook ».

Необходимо прочитать: полное руководство по Selenium WebDriver

Структура моего проекта (Maven Project) выглядит следующим образом:

 Объектная модель страницы с фабрикой страниц в Selenium & ndash; Полное руководство

< p>Чтобы реализовать шаблон проектирования объектной модели страницы, выполните следующие действия.

Шаг 1: Создание класса TestBase. Здесь мы создаем объект WebDriver, максимизируем браузер, реализуем ожидания, запускаем URL и т. Д.

В приведенном ниже примере программы я взял браузер Chrome и установил свойство системы для запуска браузера Chrome.

TestBase.java (БАЗОВЫЙ КЛАСС)

123456789101112131415161718192021222324252627282930313233343536 пакетные тесты; импорт java.io.IOException; импорт java.util.concurrent.TimeUnit; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.AfterSuite; import org.testng.annotations.BeforeSuite; общедоступный класс TestBase {общедоступный статический драйвер WebDriver = null; @BeforeSuite public void initialize () выбрасывает IOException {System.setProperty (& # 34; webdriver.chrome.driver & # 34 ;, System.getProperty (& # 34; user.dir & # 34;) + & # 34; \ src \ test java drivers chromedriver.exe & # 34;); драйвер = новый ChromeDriver (); //Чтобы развернуть браузер, driver.manage (). Window (). Maximize (); //Неявное ожидание driver.manage (). Timeouts (). ImplicitlyWait (20, TimeUnit.SECONDS); //Чтобы открыть facebook driver.get (& # 34; https: //www.facebook.com"); } @AfterSuite //Очистка теста public void TeardownTest () {TestBase.driver.quit (); }}

Шаг 2: Создание классов для каждой страницы (например, Вход в Facebook Страница , Входящие Facebook Page) для хранения локаторов элементов и их методов. Обычно мы создаем объекты страниц для всех доступных страниц в AUT. Для каждой страницы мы создаем отдельный класс с конструктором. Определите все локаторы и поместите их в один класс. Это позволяет нам повторно использовать локаторы несколькими способами. Это позволяет нам легко обслуживать, если есть какие-либо изменения в пользовательском интерфейсе, мы можем просто изменить их на одной странице.

Здесь я создаю файлы java ( FacebookLoginPage.java и FacebookInboxPage.java ) для соответствующих страниц ( Facebook Login Page и Facebook Inbox Page) для хранения локаторов элементов и их методов.

FBHomePage.java (веб-страница 1)

1234567891011121314151617181920212223242526272829303132333435363738 страницы пакета; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.How; открытый класс FbHomePage {драйвер WebDriver; общедоступный FbHomePage (драйвер WebDriver) {this.driver = driver; } //Использование FindBy для поиска элементов @FindBy (how = How.XPATH, using = & # 34; //div [text () = & # 39; Настройки учетной записи & # 39;] & # 34;) WebElement profileDropdown; @FindBy (how = How.XPATH, using = & # 34; //text () [. = & # 39; Log Out & # 39;]/ancestor :: span [1] & # 34;) WebElement logoutLink; @FindBy (how = How.XPATH, using = & # 34; ///div [text () = & # 39; Добрый день, SoftwareTesting! & # 39;] & # 34;) WebElement loggedInUserNameText; //Определение всех действий пользователя (методов), которые могут быть выполнены на домашней странице Facebook //Этот метод, чтобы щелкнуть раскрывающийся список профиля public void clickOnProfileDropdown () {profileDropdown.click (); } //Этот метод щелчка по ссылке выхода public void clickOnLogoutLink () {logoutLink.click (); } //Этот метод для проверки LoggedIn Username Text public String verifyLoggedInUserNameText () {String userName = loggedInUserNameText.getText (); return userName; }}

FBLoginPage.java (веб-страница 2)

< textarea wrap = "soft" class = "crayon-plain print-no" data-settings = "dblclick" readonly = "" style = "- moz-tab-size: 4; -o-tab-size: 4; -webkit -tab-size: 4; tab-size: 4; font-size: 12px! important; line-height: 15px! important; ">страницы пакета; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.How; открытый класс FbLoginPage {драйвер WebDriver; общедоступный FbLoginPage (драйвер WebDriver) {this.driver = driver; } //Использование FindBy для поиска элементов @FindBy (how = How.XPATH, using = & # 34; //input [@type = & # 39; email & # 39;] [@ name = & # 39; email & # 39 ;] & # 34;) WebElement emailTextBox; @FindBy (how = How.XPATH, using = & # 34; //input [@type = & # 39; password & # 39;] [@ name = & # 39; pass & # 39;] & # 34;) WebElement passwordTextBox; @FindBy (how = How.XPATH, using = & # 34; //input [@type = & # 39; submit & # 39;] [@ id = & # 39; u_0_5 & # 39;] & # 34;) WebElement signinButton; //Определение всех действий пользователя (методов), которые могут быть выполнены на домашней странице Facebook //Этот метод заключается в установке электронной почты в текстовом поле электронной почты public void setEmail (String strEmail) {emailTextBox.sendKeys (strEmail); } //Этот метод заключается в установке пароля в текстовом поле пароля public void setPassword (String strPassword) {passwordTextBox.sendKeys (strPassword); } //Этот метод заключается в нажатии кнопки входа в систему public void clickOnLoginButton () {signinButton.click (); }}

1234567891011121314151617181920212223242526272829303132333435 страницы пакета; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.How; открытый класс FbLoginPage {драйвер WebDriver; общедоступный FbLoginPage (драйвер WebDriver) {this.driver = driver; } //Использование FindBy для поиска элементов @FindBy (how = How.XPATH, using = & # 34; //input [@type = & # 39; email & # 39;] [@ name = & # 39; email & # 39 ;] & # 34;) WebElement emailTextBox; @FindBy (how = How.XPATH, using = & # 34; //input [@type = & # 39; password & # 39;] [@ name = & # 39; pass & # 39;] & # 34;) WebElement passwordTextBox; @FindBy (how = How.XPATH, using = & # 34; //input [@type = & # 39; submit & # 39;] [@ id = & # 39; u_0_5 & # 39;] & # 34;) WebElement signinButton; //Определение всех действий пользователя (методов), которые могут быть выполнены на домашней странице Facebook //Этот метод заключается в установке адреса электронной почты в текстовом поле электронной почты public void setEmail (String strEmail) {emailTextBox.sendKeys (strEmail); } //Этот метод заключается в установке пароля в текстовом поле пароля public void setPassword (String strPassword) {passwordTextBox.sendKeys (strPassword); } //Этот метод заключается в нажатии кнопки входа в систему public void clickOnLoginButton () {signinButton.click (); }}

Шаг 3: Создание теста (например, FBLoginTest ) на основе вышеуказанных страниц. В соответствии с моим тестовым сценарием, который был упомянут выше, сценарии выполняются следующим образом.

  1. Запустите браузер и откройте facebook.com
  2. Введите учетные данные пользователя и выполните вход
  3. Проверьте имя пользователя, вошедшего в систему, и выйдите из системы

FBLoginTest.java (Тестовый пример 1)

1234567891011121314151617181920212223242526 пакетные тесты; import org.openqa.selenium.support.PageFactory; import org.testng.annotations.Test; импортировать страницы.FbHomePage; импортировать страницы.FbLoginPage; открытый класс FbLoginTest расширяет TestBase {@Test public void init () выдает исключение {//driver.get("https://www.facebook.com"); FbLoginPage loginpage = PageFactory.initElements (драйвер, FbLoginPage.class); loginpage.setEmail (& # 34; [email protected]"); loginpage.setPassword (& # 34; raj123456 & # 34;);); loginpage.clickOnLoginButton (); Домашняя страница FbHomePage = PageFactory.initElements (драйвер, FbHomePage.class); homepage.clickOnProfileDropdown (); homepage.verifyLoggedInUserNameText (); homepage.clickOnLogoutLink (); }}

Шаг 4. Создание файла testng.xml

Ниже находится файл testng.xml. .

123456789101112 & lt;? xml version = & # 34; 1.0 & # 34; encoding = & # 34; UTF-8 & # 34;? & gt; & lt;! DOCTYPE suite SYSTEM & # 34; http: //testng.org/testng-1.0.dtd" & gt; & lt; suite name = & # 34; Everjobs Suite & # 34; & gt; & lt; test name = & # 34; Проект объектной модели страницы & # 34; & gt; & lt; классы & gt; & lt; class name = & # 34; tests.TestBase & # 34;/& gt; & lt; class name = & # 34; tests.FbLoginTest & # 34;/& gt; & lt;/classes & gt; & lt;/test & gt; & lt;/suite & gt; & lt;! — Suite — & gt;

Шаблон проектирования объектной модели страницы помогает разрабатывать более быстрые, простые и понятные тесты. Вы можете узнать больше о шаблоне проектирования объектной модели страницы на официальном сайте SeleniumHQ. Надеюсь, вам понравилось читать статью. Если у вас есть какие-либо вопросы, дайте нам знать в разделе комментариев ниже и поделитесь ими со своими друзьями.

Здесь я отобрал несколько сообщений, которые помогут вам узнать кое-что интересное:

  • Объясните структуру автоматизации тестирования в интервью.
  • Вопросы для интервью по платформе автоматизации тестирования
  • Вопросы для интервью по Selenium
  • Вопросы для интервью в TestNG
  • Почему вы выбираете тестирование программного обеспечения в качестве карьеры
  • Вопросы для собеседования по ручному тестированию
  • Общие вопросы для собеседования
  • Вопросы для собеседования по SQL
  • Agile Вопросы для собеседований
  • Учебник по Selenium
  • Учебник по TestNG
  • Учебник по ручному тестированию
  • Учебник по Katalon Studio

TAG: qa