debugging selenium scripts with logs selenium tutorial 26
Сега се придвижваме към края на нашето най-изчерпателно Безплатни уроци за инструмент за тестване на селен . Уроците, които публикуваме сега, са част от предварителното обучение по Селен.
В предишния урок запазихме фокуса си върху Инструмент за непрекъсната интеграция, наречен Хъдсън . Това е безплатен инструмент и има много повече възможности за изграждане на проект за тестване, дистанционно изпълнение на тестовите класове и изпращане на известие по имейл до заинтересованите страни, което ги информира за състоянието на заявлението по отношение на преминали и неуспешни тестови случаи.
В настоящия урок бихме се насочили към някои усъвършенствани концепции, които биха помогнали пряко или косвено оптимизиране на рамката за автоматизация и носи повече видимост на потребителите.
По този начин в настоящия урок ще обсъдим функция за регистриране, нейния потенциал, възможности за отстраняване на грешки и още много.
Понякога регистрирането се счита за наложително за съществуващия механизъм за създаване на скриптове, но експертите го смятат за една от най-добрите практики, ако се използват в точна пропорция поради следните предимства:
Предимства на регистрирането в скриптове за селен:
- Дава пълно разбиране за изпълнението на тестови пакети
- Регистрационните съобщения могат да се съхраняват във външни файлове за проверка след изпълнение
- Дневниците са изключителен помощник при отстраняване на грешки при проблеми с изпълнението на програмата и откази
- Дневниците могат също да се преглеждат, за да се установи здравето на приложението от заинтересованите страни
Какво ще научите:
Log4j - Java-базиран API за регистриране
Преминавайки към техническите подробности относно регистрирането, нека обсъдим произхода на API, който бихме използвали в целия log4j урок за генериране на дневници. Log4j е резултат от съвместни усилия на хора от Secure Electronic Marketplace for Europe за разработване на помощна програма, която да ни помогне да генерираме регистрационни файлове и по този начин log4j е в центъра на вниманието през 1996 г. Log4j е инструмент с отворен код и лицензиран под IBM Public License.
Има три основни компонента, които съставляват изпълнението на log4j. Тези компоненти представляват подробности за нивото на регистрационния файл, форматите на регистрационното съобщение, в което ще бъдат изобразени, и техните механизми за запазване.
Съставни части на Log4j
- Дървачи
- Апепенси
- Оформления
# 1) Регистратори
Следните стъпки трябва да се направят, за да се приложат регистратори в проекта.
Етап 1 : Създаване на екземпляр на клас Logger
Стъпка 2 : Дефиниране на нивото на дневника
Клас дърводобив - Това е помощна програма, базирана на Java, която има всички генерични методи, които вече са внедрени, така че имаме възможност да използваме log4j.
Регистрационни нива - Нивата на дневниците са известни в народите като методи за печат. Те се използват за отпечатване на регистрационните съобщения. Има преди всичко пет вида нива на регистрационни файлове.
- грешка ()
- предупреждавам ()
- информация ()
- отстраняване на грешки ()
- log ()
По този начин, за да можем да генерираме регистрационни файлове, всичко, което трябва да направим, е да извикаме някой от методите за печат над екземпляра на регистратора. Ще го разгледаме по-широко по време на фазата на изпълнение.
# 2) Апендери
Сега, след като знаем как да генерираме тези дневници, следващото нещо, което трябва да изникне в съзнанието ни, е къде да взема да прегледам дневниците? Отговорът на този въпрос се крие в дефиницията на „Апендери“.
Аппендерите се използват последователно за определяне на източника / носителя на данни, където трябва да се генерират регистрационните файлове. Обхватът на източниците на данни се простира от различни външни носители като конзолата, GUI, текстови файлове и т.н.
# 3) Оформления
Понякога потребителят желае дадена информация да бъде предвидена или добавена към всеки оператор. Например, аз искам да отпечатам отметка за време заедно с моето извлечение. По този начин такива изисквания могат да бъдат изпълнени чрез „Оформления“.
Оформленията са помощна програма, която позволява на потребителя да избере желания формат, в който да се изобразяват дневниците. Апендерите и оформлението имат плътно съединение между тях. По този начин от нас се изисква да картографираме всеки от приложенията със специфично оформление.
Обърнете внимание, че потребителят се използва за определяне на множество добавки, всяка карта с различно оформление.
Сега, когато сме наясно с основите на log4j и неговите компоненти, ще насочим фокуса си към феномена за изпълнение.
Нека разберем целия процес на изпълнение стъпка по стъпка.
Инсталиране / настройка
За инсталацията и настройката ще обмислим проект „Learning_Selenium”, който вече сме създали в по-ранните сесии от тази поредица.
Етап 1 : Първата и основна стъпка е да изтеглите най-новия буркан за 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' />
Стойността на параметъра на файла е зададена на определено място, за да уведоми системата за създаване на очаквания лог файл на споменатото място. Също така посочваме името на регистрационния файл в рамките на параметъра стойност.
Оформление
Както беше обсъдено в ранните раздели на този урок, оформленията се използват за указване на механизма за изобразяване на лог оператори. Log4j предоставя различни модели на оформление. Потребителят се използва за определяне на желания модел в стойността на параметъра ConversionPattern.
Резултатът от горното оформление трябва да бъде нещо като:
01-07-2014 12:56:32 ИНФОРМАЦИЯ (GmailLogin): Примерно съобщение в дневника
В изхода по-горе:
- Първо поле - Дата на изпълнение
- Второ поле - Точно време в hh: mm: ss, при което е изпълнена тестовата стъпка
- Трето поле - Едно от нивото на регистрационния файл
- Четвърто поле - Име на тестовия клас
- Петото поле - Дневник съобщение
Стъпка 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); } } }
Забележка : Регистрационните файлове могат да бъдат внедрени на ниво клас също вместо на ниво Test Suite. Всичко, което трябва да направите, е да направите необходимите промени в тестовия клас, а не в тестовия пакет.
Стъпка 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 INFO (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. С тази рамка можем да генерираме нашите персонализирани дневници.
Щракнете тук за да изтеглите log4j jar от хранилището на Maven.
Можем да генерираме регистрационни файлове по 2 начина:
- Използване на файл log4j.properties
- Използване на файл log4j.xml
Тези файлове ще съдържат конфигурацията за вида на регистрационните файлове, които искате да генерирате. Можете да използвате всеки един от тях. Ако искате да използвате и двете, тогава log4j.xml ще получи по-голям приоритет. Предпочитаният начин за генериране на регистрационни файлове е използването на файла със свойства, така че тук ще проучим повече за генерирането само чрез файла със свойства.
Внедряване на log4j
Изтеглете файла log4j jar от горния път и го добавете в пътя за изграждане на вашия проект. Създайте файл log4j.properties и добавете файла със свойства успоредно на вашата изходна папка, когато използвате самостоятелно java приложение.
Файлът Log4j.properties е конфигурационен файл, който съхранява стойности в двойката ключ-стойност.
Съдържа 3 основни компонента:
- Дървачи: Записва информация за регистриране.
- Апепенси : Публикувайте информация за регистриране в различно предпочитано местоназначение като конзоли, файлове, сокети, дневници на NT събития и др.
- Оформления : Форматирайте информацията за регистриране в различни стилове като HTML, XML оформление и др.
Синтаксис на файла log4j.properties
# 1) Дефинирайте главния регистратор с ниво на регистрация INFO и добавка X (добавката може да бъде всякакви конзоли, файлове, сокети, дневници на NT събития).
log4j.rootLogger = INFO, X
# две) Задайте приложението с име X да бъде File Appender.
log4j.appender.X = org.apache.log4j.FileAppender
# 3) Определете оформлението на X добавката.
кой е най-добрият шпионски софтуер за мобилни телефони
log4j.appender.X.layout = org.apache.log4j.PatternLayout log4j.appender.X.layout.conversionPattern = %m%n
log4j.properties Пример
Създайте файл log4j.properties, позовавайки се на горния синтаксис:
# инициализирайте root регистратора с ниво 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
# FILE на приложението се дефинира като 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
Различни нива на сеч
- ДЕБУГ
- ИНФОРМАЦИЯ
- ПРЕДУПРЕЖДЕНИЕ
- ГРЕШКА
- ФАТАЛНО
Всяко ниво има свой приоритет. Да предположим, че ако използваме ниво “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: Инициализирайте файла Configurator на свойствата и предайте аргумента като името на файла с свойства log4j.
PropertyConfigurator.configure (“log4j.properties”);
Пълен код за генериране на регистрационен файл:
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 за генериране на регистрационни файлове.
Следващ урок # 27 : В предстоящия урок ще обсъдим някои по-напреднали теми, свързани с ефективен скрипт и за отстраняване на неизправности при сценарии където потребителят трябва да обработва събития с мишка и клавиатура. Освен това бихме обсъдили и как да съхраняваме повече от един уеб елемент в списък.
Препоръчително четене
- Уроци за задълбочено затъмнение за начинаещи
- Въведение в Selenium WebDriver - Урок № 8 за селен
- Ефективни сценарии за скриптове и отстраняване на неизправности при селен - Урок №27 за селен
- Урок за краставици селен: Интеграция на краставица Java Selenium WebDriver
- 30+ най-добри урока за селен: Научете селен с реални примери
- Как да намерим елементи в браузърите Chrome и IE за изграждане на скриптове за селен - Урок № 7 за селен
- Внедряване на нашия първи скрипт за WebDriver - Урок № 10 за Selenium WebDriver
- Цялата настройка и инсталиране на WebDriver с Eclipse - Урок № 9 за селен