Создание управляемой данными, ключевыми словами и гибридной платформы Selenium



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

Предыдущий в этой серии статей вы познакомились с основными концепциями тестирования Selenium.Однако в этом блоге я расскажу вам, как использовать фреймворк Selenium для оптимизации структуры кода, и это приблизит вас к тому, чтобы стать .

Что такое фреймворк Selenium?

Фреймворк Selenium - это структура кода, упрощающая обслуживание кода и улучшающая читаемость кода. Фреймворк включает в себя разбиение всего кода на более мелкие части кода, которые проверяют определенную функциональность.





Код структурирован таким образом, что «набор данных» отделен от фактического «тестового примера», который проверяет функциональность веб-приложения. Он также может быть структурирован таким образом, чтобы тестовые примеры, которые необходимо выполнить, вызывались (вызывались) из внешнего приложения (например, .csv).

Существует несколько фреймворков, но три наиболее часто используемых фреймворка для Selenium:



Эти фреймворки будут обсуждаться с демонстрацией в этом блоге. Но прежде чем идти дальше, позвольте мне рассказать вам, зачем нужна структура Selenium и какие преимущества вы получите от их использования.

Зачем нам нужен фреймворк Selenium?

Без инфраструктуры будет один тестовый пример, который будет включать все функции тестирования. Самое страшное в том, что этот единственный тестовый пример может содержать до миллиона строк кода. Совершенно очевидно, что такой огромный тестовый пример будет трудно читать. Даже если вы захотите изменить какие-либо функции позже, вам будет сложно изменить код.

Поскольку реализация фреймворка приведет к меньшим, но множественным фрагментам кода, есть различные преимущества.



Преимущества Selenium framework

  • Увеличение повторного использования кода
  • Улучшенная читаемость кода
  • Более высокая портативность
  • Уменьшенный сценарийподдержание

Теперь, когда вы знаете основы фреймворков, позвольте мне подробно объяснить каждый из них.

Платформа, управляемая данными

Инфраструктура, управляемая данными в Selenium, - это метод отделения «набора данных» от фактического «тестового примера» (кода). Эта структура полностью зависит от входных тестовых данных. Тестовые данные поступают из внешних источников, таких как файл Excel, файл .CSV или любая база данных.

Фреймворк, управляемый данными - Selenium framework - edureka

Поскольку тестовый пример отделен от набора данных, мы можем легко изменить тестовый пример конкретной функции, не внося массовых изменений в ваш код. Например, если вы хотите изменить код для функциональности входа в систему, вы можете изменить только это, вместо того, чтобы также изменять любую другую зависимую часть в том же коде.

как настроить php

Помимо этого, вы также можете легко контролировать, сколько данных необходимо проверить. Вы можете легко увеличить количество параметров теста, добавив больше полей для имени пользователя и пароля в файл Excel (или другие источники).

Например, если мне нужно проверить вход на веб-страницу, я могу сохранить набор учетных данных имени пользователя и пароля в файле Excel и передать учетные данные коду для выполнения автоматизации в браузере в отдельном файле класса Java.

Использование Apache POI с Selenium WebDriver

WebDriver не поддерживает чтение файлов Excel напрямую. Следовательно, мы используем POI Apache для чтения / записи в любой офисный документ Microsoft. Вы можете загрузить Apache POI (набор файлов JAR) из Вот . Загрузите zip-файл или tar-файл в соответствии с вашими требованиями и поместите их вместе с набором Selenium JAR.

Координация между основным кодом и набором данных будет выполняться Провайдеры данных TestNG, которая является библиотекой, входящей в состав JAR-файлов Apache POI. Для демонстрации я создал файл Excel под названием «LoginCredentials», в котором имена пользователей и пароли хранятся в разных столбцах.

Взгляните на приведенный ниже код, чтобы понять тестовый пример. Это простой код для тестирования функциональности входа в приложение для бронирования авиабилетов.

пакет DataDriven import org.openqa.selenium.By import org.openqa.selenium.chrome.ChromeDriver import org.testng.Assert import org.testng.annotations.AfterMethod import org.testng.annotations.DataProvider import org.testng.annotations.Test public class DDTExcel {ChromeDriver driver @Test (dataProvider = 'testdata') public void DemoProject (String username, String password) выдает InterruptedException {System.setProperty ('webdriver.chrome.driver', 'C: UsersVardhanDownloadschromedriver.exe') driver = новый ChromeDriver () driver.get ('http://newtours.demoaut.com/') driver.findElement (By.name ('userName')). sendKeys (имя пользователя) driver.findElement (By.name ('пароль' )). sendKeys (пароль) driver.findElement (By.name ('login')). ​​click () Thread.sleep (5000) Assert.assertTrue (driver.getTitle (). matches ('Найти рейс: Mercury Tours: '),' Недействительные учетные данные ') System.out.println (' Успешный вход ')} @AfterMethod void ProgramTermination () {driver.quit ()} @DataProvider (name =' testdata ') public Object [] [] TestDa taFeed () {ReadExcelFile config = new ReadExcelFile ('C: UsersVardhanworkspaceSeleniumLoginCredentials.xlsx') int rows = config.getRowCount (0) Object [] [] credentials = new Object [rows] [2] for (int i = 0i

Если вы заметили сверху, у нас есть метод под названием «TestDataFeed ()». В этом методе я создал экземпляр объекта другого класса с именем «ReadExcelFile». Создавая экземпляр этого объекта, я указал путь к моему файлу Excel, содержащему данные. Далее я определил цикл for для извлечения текста из книги Excel.

Но для чтения данных с заданного номера листа, номера столбца и номера строки выполняется вызов класса «ReadExcelFile». Код моего «ReadExcelFile» приведен ниже.

пакет DataDriven import java.io.File import java.io.FileInputStream import org.apache.poi.xssf.usermodel.XSSFSheet import org.apache.poi.xssf.usermodel.XSSFWorkbook общедоступный класс ReadExcelFile {XSSFWorkbook wb XSSFSile лист (общедоступный лист ReadExcelFile) excelPath) {попробуйте {File src = new File (excelPath) FileInputStream fis = new FileInputStream (src) wb = new XSSFWorkbook (fis)} catch (Exception e) {System.out.println (e.getMessage ())}} общедоступный String getData (int sheetnumber, int row, int column) {sheet = wb.getSheetAt (sheetnumber) String data = sheet.getRow (row) .getCell (column) .getStringCellValue () return data} public int getRowCount (int sheetIndex) { int row = wb.getSheetAt (sheetIndex) .getLastRowNum () row = row + 1 return row}}

Сначала обратите внимание на библиотеки, которые я импортировал. Я импортировал Apache POI XSSF библиотеки, которые используются для чтения / записи данных в файлы Excel. Здесь я создал конструктор (объект того же метода) для передачи значений: номер листа, номер строки и номер столбца. Чтобы лучше понять эту структуру, я прошу вас просмотреть видео ниже, где я объяснил это структурированным образом.

Фреймворк, управляемый данными в Selenium WebDriver | Учебное пособие по Selenium

Теперь перейдем к фреймворку, то есть фреймворку на основе ключевых слов.

Основа на основе ключевых слов

Фреймворк на основе ключевых слов - это метод, в котором все операции и инструкции, которые необходимо выполнить, написаны отдельно от фактического тестового примера. Сходство со структурой Data Driven состоит в том, что выполняемые операции снова сохраняются во внешнем файле, таком как лист Excel.

Операции, о которых я говорю, - это не что иное, как методы, которые необходимо выполнить как часть тестового примера. Преимущество фреймворка на основе ключевых слов заключается в том, что вы можете легко контролировать функции, которые хотите протестировать. Вы можете указать методы, которые проверяют функциональность приложения в файле Excel. Таким образом, будут проверяться только те имена методов, которые указаны в excel.

Например, для входа в веб-приложение мы можем написать несколько методов в основном тестовом примере, в котором каждый тестовый пример будет проверять определенную функциональность. Для создания экземпляра драйвера браузера может быть один метод, для поиска полей имени пользователя и пароля могут быть методы, для перехода на веб-страницу может быть другой метод и т. Д.

Взгляните на приведенный ниже код, чтобы понять, как выглядит фреймворк. Закомментированные строки в приведенном ниже коде служат объяснением, если вы не поняли.

package KeywordDriven import org.openqa.selenium.chrome.ChromeDriver import org.testng.Assert import org.testng.annotations.Test import java.util.concurrent.TimeUnit import org.openqa.selenium.By import org.openqa.selenium.Web общедоступный класс Действия {общедоступный статический драйвер WebDriver public static void openBrowser () {System.setProperty ('webdriver.chrome.driver', 'C: UsersVardhanDownloadschromedriver.exe') driver = new ChromeDriver ()} public static void navigate () {driver .manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS) driver.get ('http://newtours.demoaut.com')} public static void input_Username () {driver.findElement (By.name (' userName ')). sendKeys (' mercury ')} public static void input_Password () {driver.findElement (By.name (' password ')). sendKeys (' mercury ')} public static void click_Login () {driver.findElement (By.name ('login')). ​​Click ()} @Test public static void verify_login () {String pageTitle = driver.getTitle () Assert.assertEquals (pageTitle, 'Find a Flight: Mercury Tours : ')} public static void closeBrowser () {driver.quit ()}}

Как видите, различные функции, которые необходимо протестировать, представлены в отдельных методах, ожидающих вызова. Теперь эти методы будут вызываться из другого класса в зависимости от наличия имени метода в файле Excel. Точно так же, чтобы прочитать файл Excel и отправить обратно результаты, я написал еще один класс. Оба они показаны ниже.

Это файл класса, вызывающий методы.

package KeywordDriven общедоступный класс DriverScript {public static void main (String [] args) вызывает исключение {// Объявление пути к файлу Excel с именем файла Excel String sPath = 'C: UsersVardhanworkspaceSelenium Frameworks DemodataEngine.xlsx' // Здесь мы передаем путь Excel и SheetName в качестве аргументов для подключения к файлу Excel ReadExcelData.setExcelFile (sPath, 'Sheet1') // Жестко закодированные значения используются для строк и столбцов Excel на данный момент // Жестко закодированные значения используются для строк Excel и столбцы на данный момент // В следующих главах мы заменим эти жестко закодированные значения на varibales // Это цикл для чтения значений столбца 3 (ключевое слово действия) строка за строкой для (int iRow = 1iRow<=7iRow++) { String sActions = ReadExcelData.getCellData(iRow, 1) //Comparing the value of Excel cell with all the keywords in the 'Actions' class if(sActions.equals('openBrowser')) { //This will execute if the excel cell value is 'openBrowser' //Action Keyword is called here to perform action Actions.openBrowser() } else if(sActions.equals('navigate')) { Actions.navigate() } else if(sActions.equals('input_Username')) { Actions.input_Username() } else if(sActions.equals('input_Password')) { Actions.input_Password() } else if(sActions.equals('click_Login')) { Actions.click_Login() } else if(sActions.equals('verify_Login')) { Actions.verify_login() } else if(sActions.equals('closeBrowser')) { Actions.closeBrowser() } } } } 

И вот файл класса, который читает значения Excel.

пакет KeywordDriven import java.io.FileInputStream import org.apache.poi.xssf.usermodel.XSSFSheet import org.apache.poi.xssf.usermodel.XSSFWorkbook import org.apache.poi.xssf.usermodel.XSSFCell public class ReadExcelData XSSFSheet ExcelWSheet private static XSSFWorkbook ExcelWBook private static XSSFCell Cell // Этот метод предназначен для установки пути к файлу и открытия файла Excel // Передача пути Excel и SheetName в качестве аргументов для этого метода public static void setExcelFile (String Path, String SheetName) throws Исключение {FileInputStream ExcelFile = new FileInputStream (Path) ExcelWBook = new XSSFWorkbook (ExcelFile) ExcelWSheet = ExcelWBook.getSheet (SheetName)} // Этот метод заключается в чтении тестовых данных из ячейки Excel // Здесь мы передаем параметры / аргументы as Row Num и Col Num общедоступная статическая строка getCellData (int RowNum, int ColNum) выдает исключение {Cell = ExcelWSheet.getRow (RowNum) .getCell (ColNum) String CellData = Cell.getStringCellValue () return CellData}}

Теперь давайте перейдем к заключительной части этого блога о фреймворке Selenium, где я покажу вам, как создать гибридный фреймворк.

Гибридная структура

Гибридный фреймворк - это метод, в котором мы можем наилучшим образом использовать как фреймворк Selenium, управляемый данными, так и управляемый ключевыми словами. Используя примеры, показанные выше в этом блоге, мы можем создать гибридную структуру, сохранив методы для выполнения в файле Excel (подход, основанный на ключевых словах) и передав эти имена методов в Класс отражения Java (подход, основанный на данных) вместо создания Если еще цикл в классе «DriverScript».

Взгляните на измененный класс DriverScript в приведенном ниже фрагменте кода.Здесь вместо использования нескольких циклов If / Else для чтения имен методов из файла Excel используется подход, основанный на данных.

package HybridFramework import java.lang.reflect.Method public class DriverScriptJava {// Это объект класса, объявленный как 'public static' // Чтобы его можно было использовать вне области действия метода main [] public static Действия actionKeywords public static String sActions // Это объект класса отражения, объявленный как 'public static' // Чтобы его можно было использовать вне области действия метода main [] public static Method [] public static void main (String [] args) выдает исключение {// Объявление пути к файлу Excel с именем файла Excel String sPath = 'C: UsersVardhanworkspaceSelenium Frameworks DemodataEngine.xlsx' // Здесь мы передаем путь Excel и SheetName для соединения с файлом Excel // Этот метод был создан ранее ReadExcelData.setExcelFile (sPath, 'Sheet1') // Жестко закодированные значения используются для строк и столбцов Excel на данный момент // Позже мы будем использовать это жестко закодированное значение гораздо более эффективно // Это цикл для чтения значения строки столбца (Action Keyword) by row // Это означает, что этот цикл выполнит все шаги, упомянутые для тестового примера в листе Test Steps for (int iRow = 1iRow<=7iRow++) { sActions = ReadExcelData.getCellData(iRow, 1) //A new separate method is created with the name 'execute_Actions' //You will find this method below of the this test //So this statement is doing nothing but calling that piece of code to execute execute_Actions() } } //This method contains the code to perform some action //As it is completely different set of logic, which revolves around the action only, it makes sense to keep it separate from the main driver script //This is to execute test step (Action) private static void execute_Actions() throws Exception { //Here we are instantiating a new object of class 'Actions' actionKeywords = new Actions() //This will load all the methods of the class 'Actions' in it. //It will be like array of method, use the break point here and do the watch method = actionKeywords.getClass().getMethods() //This is a loop which will run for the number of actions in the Action Keyword class //method variable contain all the method and method.length returns the total number of methods for(int i = 0i

Чтобы лучше понять эту концепцию фреймворков, управляемых данными, ключевыми словами и гибридными технологиями, я прошу вас посмотреть видео ниже.

как сделать кучу в java

Selenium Framework с использованием Java | Selenium Tutorial | Selenium Обучение онлайн

Я надеюсь, что этот блог был вам полезен и дал вам четкое представление о том, что такое фреймворк Selenium, как он полезен и как построить структуру кода с использованием этих трех фреймворков Selenium. Следите за обновлениями блогов из этой серии.

Если вы хотите изучить Selenium и построить карьеру в области тестирования, ознакомьтесь с нашим интерактивным онлайн-сайтом. Здесь вам предоставляется круглосуточная поддержка, которая поможет вам на протяжении всего периода обучения. Концепции, связанные с «Selenium Framework», подробно рассматриваются в курсе Edureka.

Есть вопрос к нам? Пожалуйста, отметьте это в разделе комментариев, и мы свяжемся с вами.