debugging selenium scripts with logs selenium tutorial 26
Зараз ми рухаємось до кінця нашого найповнішого Безкоштовні підручники для інструменту тестування селену . Підручники, які ми публікуємо зараз, є частиною попереднього навчання Селену.
У попередньому підручнику ми зосередили увагу на Інструмент безперервної інтеграції, який називається Гудзон . Це безкоштовний інструмент, який має набагато більше можливостей для побудови проекту тестування, дистанційного виконання тестових класів та надсилання зацікавленим сторонам електронного листа із повідомленням про стан заявки щодо пройдених та невдалих тестових випадків.
У поточному посібнику ми будемо рухатись до деяких передових концепцій, які прямо чи опосередковано допоможуть оптимізація рамки автоматизації і приносить більше видимості для користувачів.
Таким чином, у поточному посібнику ми обговоримо функція реєстрації, її потенціал, можливості налагодження і багато іншого.
Іноді реєстрація журналу вважається накладною витратою на існуючий механізм створення сценаріїв, але експерти вважають це однією з найкращих практик, якщо використовувати її в точній пропорції через наступні переваги:
Переваги реєстрації в сценаріях селену:
- Надає повне розуміння виконання тестових наборів
- Повідомлення журналу можна зберігати у зовнішніх файлах для перевірки після виконання
- Журнали є винятковим помічником при налагодженні проблем із виконанням програми та збоїв
- Журнали також можуть бути переглянуті для перевірки стану заявки зацікавленими сторонами
Що ви дізнаєтесь:
Інструменти Google для веб-майстрів перевірене посилання -
Log4j - API ведення журналу на основі Java
Переходячи до технічних деталей реєстрації, давайте обговоримо походження API, який ми використовували б у всьому log4j підручник для створення журналів. Log4j був результатом спільних зусиль людей з Secure Electronic Marketplace for Europe щодо розробки утиліти, яка допомогла б нам створювати журнали, і, отже, log4j потрапив у центр уваги в 1996 році. Log4j - це інструмент з відкритим кодом і ліцензований під IBM Public License.
Є три основні компоненти, що становлять реалізацію log4j. Ці компоненти представляють детальну інформацію про рівень журналу, формати повідомлення журналу, в якому вони будуть відображатися, та їх механізми збереження.
Складові Log4j
- Лісоруби
- Додатки
- Макети
# 1) Лісоруби
Для впровадження реєстраторів у проект потрібно виконати наступні кроки.
Крок 1 : Створення екземпляра класу Logger
Крок 2 : Визначення рівня журналу
Клас лісоруба - Це утиліта на основі Java, яка має усі загальні методи, які вже реалізовані, так що нам дозволено використовувати log4j.
Рівні журналу - Рівні журналу в народі відомі як методи друку. Вони використовуються для друку повідомлень журналу. Існує насамперед п’ять типів журналів.
- помилка ()
- попереджати ()
- інформація ()
- налагоджувати()
- log ()
Таким чином, щоб мати можливість генерувати журнали, все, що нам потрібно зробити, це викликати будь-який із методів друку над екземпляром реєстратора. Ми розглянемо його ширше на етапі впровадження.
No2) Додатки
Тепер, коли ми знаємо, як генерувати ці журнали, наступне, що повинно з’явитися в нашій свідомості, це те, де я можу переглянути журнали? Відповідь на це питання лежить у визначенні поняття «Апендики».
Додатки послідовно використовуються для вказівки джерела даних / середовища, де слід створювати журнали. Діапазон джерел даних поширюється на різні зовнішні носії, такі як консоль, графічний інтерфейс, текстові файли тощо.
# 3) Макети
Часом користувач бажає, щоб певна інформація була попередньо додана або додана до кожного оператора журналу. Наприклад, я хочу надрукувати позначку часу разом із моїм випискою журналу. Таким чином, такі вимоги можуть бути виконані за допомогою «Макетів».
Макети - це утиліта, яка дозволяє користувачеві вибрати бажаний формат, у якому відображатимуться журнали. Додатки та макет мають щільне зчеплення між собою. Таким чином, ми зобов’язані скласти карту кожного із додатків із певним макетом.
Зверніть увагу, що користувач має змогу визначати кілька додатків, кожна карта з чітким макетом.
Тепер, коли ми знаємо основи log4j та його компонентів, ми зосередимо свою увагу на явищі реалізації.
Давайте зрозуміємо весь процес впровадження поетапно.
Встановлення / налаштування
Для встановлення та налаштування ми розглядаємо проект “Learning_Selenium”, який ми вже створювали в попередніх сесіях цієї серії.
Крок 1 : Першим і найголовнішим кроком є завантаження останньої jar для API log4j. Банку можна легко знайти на офіційному веб-сайті розповсюдження - “ http://logging.apache.org/log4j/1.2/download.html '.
Крок 2 : Наступним кроком є налаштування шляху збірки та надання log4j.jar як зовнішньої бібліотеки.
Впровадження
Журналювання за допомогою log4j може бути реалізовано та налаштовано двома способами:
- Програмно за допомогою сценарію
- Вручну за допомогою файлів конфігурації
Обидва вищезазначені методи конфігурації мають як достоїнства, так і недоліки. У цьому підручнику ми розглянемо можливість налаштування log4j вручну за допомогою файлів конфігурації на основі його простоти та простоти. Файл конфігурації - це ще один файл XML для налаштування артефактів, пов'язаних з log4j.
Створення файлу log4j.xml
Крок 1 . Створіть файл log4j.xml. Скопіюйте та вставте наведений нижче код у файл конфігурації.
Покрокове керівництво файлом конфігурації
consoleAppender
Додаток консолі використовується для друку операторів журналу на консолі.
файл додаток
Додаток файлу використовується для друку операторів журналу у зовнішньому файлі. Користувач має змогу встановити значення ввімкнення та вимкнення для доданого тегу, яке повідомляло б систему про додавання та реєстрацію операторів до раніше створеного або перезапис раніше створених журналів та генерування нових журналів взагалі.
'append' value= 'false' /> Значення параметра параметра встановлюється в певному місці, щоб повідомити систему про створення передбачуваного файлу журналу у зазначеному місці. Ми також вказуємо ім'я файлу журналу в межах параметра value.
Макет
Як обговорювалося в ранніх розділах цього підручника, макети використовуються для вказівки механізму візуалізації для операторів журналу. Log4j надає різні шаблони макета. Користувач має змогу вказати бажаний шаблон у значенні параметра ConversionPattern.
Результатом роботи вищезазначеного макету має бути щось на зразок:
01-07-2014 12:56:32 INFO (GmailLogin): Зразок повідомлення журналу
У вихідних даних вище:
- Перше поле - Дата виконання
- Друге поле - Точний час у год: мм: сс, за який був виконаний крок тесту
- Третє поле - одне з рівня журналу
- Четверте поле - Назва тестового класу
- П'яте поле - Журнал повідомлень
Крок 2 . Як тільки ми закінчимо створювати файл log4j.XML, наступним кроком є розміщення файла log4j.XML у кореневій папці / базовій директорії проекту.
Реалізація програмного рівня
Крок 3 : Наступним кроком є використання будь-якого з конфігураторів для налаштування та синтаксичного аналізу файлу log4j.xml.
Синтаксис:
створити фальшиву електронну адресу за секунду
package com.logExample; import org.apache.log4j.xml.DOMConfigurator; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.RunWith; import org.junit.runner.notification.Failure; import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({ Demo.class }) public class TestSuite { /** * Setup method to set system property for log file name */ @BeforeClass public static void Setup() { // loading log4j.xml file DOMConfigurator.configure('log4j.xml'); } /** * @param args */ public static void main(String() args) { Result result = JUnitCore.runClasses(TestSuite.class); for (Failure failure : result.getFailures()) { System.out.println('
TEST NAME: ' + failure.getTestHeader()); System.out.println('
ERROR: ' + failure.getMessage() + '
'); System.out.println(failure.getTrace()); System.exit(1); } } } Примітка : Журнали можуть бути реалізовані на рівні класу також замість рівня набору тестів. Все, що вам потрібно зробити, це внести необхідні зміни в тестовий клас, а не в тестовий пакет.
Крок 4 : Наступним кроком є створення тестового класу “GmailLogin.java” за проектом. Впровадити функціональність входу в Gmail у класі.
Крок 5 : Наступним кроком є імпорт класу реєстратора, щоб мати можливість реалізувати оператори журналу.
Синтаксис:
імпорт org.apache.log4j.Logger;
Крок 6 : Наступним кроком у процесі є створення екземпляра об’єкта класу Logger.
Синтаксис:
// Ініціалізація об’єкта для журналу
статичний Журнали журнал Logger.getLogger (Демо. клас .getName ());
Крок 7 : Створена вище змінна журналу типу Logger буде використовуватися у всьому тестовому класі для створення операторів журналу. Зверніться до наступного коду для того ж.
Синтаксис:
@Test public void testGmailLogin() throws Exception{ // enter a valid email address driver.findElement(By.id('Email')).sendKeys('TestSelenium1607@gmail.com'); log.info('Entered a valid Email Address.'); // enter a invalid password driver.findElement(By.id('Passwd')).sendKeys('InvalidPassword'); log.info('Entered a invalid Password.'); // click on sign in button driver.findElement(By.id('signIn')).click(); log.info('Clicked on the Sign In Button.'); try{ //Verify the home page assertTrue('Verification Failed: User successfully landed on the Home Page.', driver.getTitle().equals('Gmail')); log.info('Verified that the user landed on the Home Page.'); } catch (Exception e) { log.error('Unsuccessfull Login.'); } } Результат у файлі журналу
01-07-2014 12:56:11 ІНФОРМАЦІЯ (GmailLogin): Завантажено файл до системи: FileExample.txt
01-07-2014 12:56:11 INFO (GmailLogin): Подання змін
01-07-2014 12:56:15 ПОМИЛКА (GmailLogin): Невдалий вхід.
ОНОВЛЕННЯ на березень 2020 року
Журнали
Журнал - це повідомлення, яке ми записуємо або генеруємо для кожної транзакції, яку робимо. Ми можемо проаналізувати журнали, щоб перевірити, що сталося правильно чи неправильно. Припустимо, якщо будь-яка система різко закриється, то, проаналізувавши журнали, ми зможемо з’ясувати першопричину несправності.
Таким чином журнали формуються в кожному циклі розробки. Таким же чином ми можемо також генерувати журнали в нашому коді Selenium для тестування до і після кожної умови тестування чи виписки, щоб перевірити, чи все працює належним чином.
log4j Framework
Для генерації цих журнальних файлів у коді Selenium ми використовуємо фреймворк log4j, наданий Apache. За допомогою цього фреймворку ми можемо створювати наші власні журнали.
Клацніть тут завантажити jar4 log з репозиторію Maven.
Ми можемо створювати журнали двома способами:
- Використання файлу log4j.properties
- Використання файлу log4j.xml
Ці файли будуть містити конфігурацію про те, який тип журналів ви хочете створити. Ви можете використовувати будь-який з них. Якщо ви хочете використовувати обидва варіанти, тоді log4j.xml отримає вищий пріоритет. Кращим способом створення журналів є використання файлу властивостей, тому тут ми розглянемо докладніше про створення лише за допомогою файлу властивостей.
Впровадження log4j
Завантажте файл jar4j jar з наведеного вище шляху та додайте його до шляху збірки проекту. Створіть файл log4j.properties і додайте файл властивостей паралельно вихідній папці, коли ви використовуєте автономну програму Java.

Файл Log4j.properties - це файл конфігурації, який зберігає значення в парі ключ-значення.
Він містить 3 основні компоненти:
- Лісоруби: Захоплює інформацію про реєстрацію.
- Додатки : Публікуйте інформацію про журнали в іншому бажаному місці призначення, як консолі, файли, сокети, журнали подій NT тощо.
- Макети : Форматування інформації про реєстрацію в різних стилях, таких як HTML, XML-макет тощо.
Синтаксис файлу log4j.properties
# 1) Визначте кореневий реєстратор за допомогою рівня реєстрації INFO та додатка X (додаток може бути будь-якими консолями, файлами, сокетами, журналами подій NT).
log4j.rootLogger = INFO, X# два) Встановіть додаток із назвою X як Файл.
log4j.appender.X = org.apache.log4j.FileAppender# 3) Визначте макет для X-додатка.
log4j.appender.X.layout = org.apache.log4j.PatternLayout log4j.appender.X.layout.conversionPattern = %m%nlog4j.properties Приклад
Створіть файл log4j.properties, посилаючись на наведений синтаксис:
# ініціалізувати кореневий реєстратор рівнем INFO та надрукувати його в консолі за допомогою stdout та fout.
log4j.rootLogger=INFO,stdout,fout# додати ConsoleAppender до журналу stdout для запису на консоль.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender# використовуйте простий шаблон розмітки формату повідомлення, визначений як% m% n, який друкує журнальні повідомлення в новому рядку.
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%m%n# додайте FileAppender до файлу реєстратора.
log4j.appender.fout=org.apache.log4j.FileAppender# Файл додатка визначається як org.apache.log4j.FileAppender. Він пише у файл із назвою SoftwareTestingHelp.
log4j.appender.fout.File=SoftwareTestingHelp.log# використовуйте більш детальний шаблон повідомлення.
log4j.appender.fout.layout=org.apache.log4j.PatternLayout log4j.appender.fout.layout.ConversionPattern=%p %d{ISO8601} %r %c (%t) %m%nРізні рівні лісозаготівлі
- НАЛАГОДЖУВАТИ
- ІНФОРМАЦІЯ
- ПОПЕРЕДЖЕННЯ
- ПОМИЛКА
- FATAL
Кожен рівень має свій пріоритет. Припустимо, якщо ми використовуємо рівень “DEBUG”, тоді він буде реєструвати всі повідомлення рівня, такі як INFO >> WARN >> ERROR >> FATAL.
Припустимо, якщо ми використовуємо рівень “ПОМИЛКА”, тоді він буде ігнорувати DEBUG >> INFO >> WARN і буде реєструвати лише ERROR >> FATAL.
На всіх цих рівнях нам потрібно визначити у нашому файлі властивостей. Журнали створюватимуться залежно від нашої конфігурації.
Реалізація журналів для того самого прикладу, згаданого вище:
Крок 1: Створіть об'єкт для класу Logger.
final static Logger logger = Logger.getLogger(Frame.class);Вищевказаний метод допомагає отримати об'єкт реєстратора. Цей метод буде приймати як аргумент або клас, або ім'я класу. Використовуючи цей об'єкт реєстратора, ви можете створювати власні журнали.
У цьому прикладі ми згадали фреймворк apache log4j, якщо ви використовуєте фреймворк TestNG, то вам потрібно використовувати клас журналу TestNG.


Тут ми спробували сформувати журнал, не реалізуючи файл властивостей.

Жодні журнали не створюються ні в консолі, ні в будь-якому створеному файлі журналу. У консолі з’являється помилка, оскільки файл журналу не реалізовано належним чином. Для його реалізації нам потрібно використовувати клас PropertyConfigurator. Виконайте крок 2.
Крок 2: Ініціалізуйте файл конфігуратора властивостей і передайте аргумент як ім'я файлу властивостей log4j.
PropertyConfigurator.configure (“log4j.properties”);
Повний код для створення файлів журналів:
найкраще програмне забезпечення для очищення ПК 2015
package com.wordpress.pages; import java.util.List; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.junit.Assert; import org.junit.Test; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class Frame { static WebDriver driver; final static Logger logger = Logger.getLogger(Frame.class); @Test public void Test(){ PropertyConfigurator.configure('log4j.properties.txt'); System.setProperty('webdriver.chrome.driver', 'D:\New folder\exe\chromedriver.exe'); logger.debug('Debug this path for chrome path issue'); driver = new ChromeDriver(); logger.info('Chrome driver is up and running'); driver.get('http://www.dwuser.com/education/content/the-magical-iframe-tag-an-introduction/'); logger.warn('Url is not loaded properly'); //identifying the frame using locator or say using webelement driver.switchTo().frame(driver.findElement(By.xpath('//div(@id='eduFooterWrap')//iframe(1)'))); logger.error('Frame is not available'); driver.findElement(By.xpath('//input(@name='name')')).sendKeys('SoftwareTestingHelp.com'); logger.fatal('Message not entered'); } } 
Файл властивостей:

Висновок
У поточному посібнику ми зосередилися на технічні наслідки при впровадженні журналювання у фреймворк. Ми використали утиліту log4j для реалізації журналювання. Ми обговорили основні компоненти, які складають log4j, з точки зору юзабіліті. За допомогою додатків та макетів користувач може вибрати бажаний формат / шаблон журналу та джерело даних / розташування.
У цьому посібнику ми досліджуємо, чому журнали використовуються в нашому тесті та охоплюють фреймворк log4j, а також реалізацію фреймворку log4j у Selenium для створення журналів.
Наступний підручник No27 : У наступному підручнику ми обговоримо деякі більш просунуті теми, пов’язані з ефективний сценарій та усунення несправностей де користувач повинен обробляти події миші та клавіатури. Більше того, ми також обговоримо, як зберігати більше одного веб-елемента у списку.
Рекомендована література
- Поглиблені підручники Eclipse для початківців
- Вступ до Selenium WebDriver - Підручник з селену №8
- Ефективні сценарії сценаріїв та усунення несправностей селену - Підручник селену No27
- Підручник з огірка селену: інтеграція огірка Java Selenium WebDriver
- 30+ найкращих підручників із селену: вивчіть селен на реальних прикладах
- Як знайти елементи в браузерах Chrome та IE для побудови сценаріїв селену - Підручник з селену No7
- Впровадження нашого першого сценарію WebDriver - Підручник № 10 для Selenium WebDriver
- Повне налаштування та встановлення WebDriver за допомогою Eclipse - Підручник селену № 9