Как да използвам Selenium IDE със скриптове & Команди (Утвърждаване, Проверка)

Съдържание:

Anonim

Ние ще използваме уебсайта на Mercury Tours като нашето уеб приложение, което се тества. Това е онлайн система за резервация на полети, която съдържа всички елементи, от които се нуждаем за този урок. Неговият URL адрес е http://demo.guru99.com/test/newtours/ и това ще бъде нашият основен URL адрес.

Създайте скрипт чрез запис

Нека сега създадем първия си тестов скрипт в Selenium IDE, използвайки най-разпространения метод - чрез запис. След това ще изпълним нашия скрипт, използвайки функцията за възпроизвеждане.

Етап 1

  • Стартирайте Firefox и Selenium IDE.
  • Въведете стойността за нашия основен URL адрес: http://demo.guru99.com/test/newtours/.
  • Включете бутона Запис (ако все още не е включен по подразбиране).
Стъпка 2

В Firefox отидете на http://demo.guru99.com/test/newtours/. Firefox трябва да ви отведе до страницата, подобна на показаната по-долу.

Стъпка 3
  • Щракнете с десния бутон върху всяко празно място в страницата, като върху логото на Mercury Tours в горния ляв ъгъл. Това ще отвори контекстното меню на Selenium IDE. Забележка: Не щракайте върху хипервръзки обекти или изображения
  • Изберете опцията „Показване на наличните команди“.
  • След това изберете „assertTitle точно: Добре дошли: Mercury Tours.“ Това е команда, която гарантира, че заглавието на страницата е правилно.
Стъпка 4
  • В текстовото поле "Потребителско име" на Mercury Tours въведете невалидно потребителско име, "invalidUNN".
  • В текстовото поле "Парола" въведете невалидна парола, "invalidPWD".
Стъпка 5
  • Кликнете върху бутона "Вход". Firefox трябва да ви отведе до тази страница.
Стъпка 6

Изключете бутона за запис, за да спрете записа. Сега вашият скрипт трябва да изглежда като показания по-долу.

Стъпка 7

След като приключихме с нашия тестов скрипт, ще го запишем в тестов случай. В менюто File изберете "Save Test Case". Като алтернатива можете просто да натиснете Ctrl + S.

Стъпка 8
  • Изберете желаното от вас местоположение и след това кръстете тестовия случай като „Invalid_login“.
  • Щракнете върху бутона "Запазване".
Стъпка 9.

Забележете, че файлът е запазен като HTML.

Стъпка 10.

Върнете се в Selenium IDE и щракнете върху бутона Възпроизвеждане, за да изпълните целия скрипт. IDE на Selenium трябва да може да възпроизвежда всичко безупречно.

Въведение в командите на селен - селено

  • Командите на Selenese могат да имат максимум два параметъра: target и value.
  • Не се изискват параметри през цялото време. Зависи от това колко команди ще са необходими.

3 вида команди

Действия

Това са команди, които директно взаимодействат с елементите на страницата.

Пример: командата "щракване" е действие, защото вие директно взаимодействате с елемента, върху който кликвате.

Командата "type" също е действие, защото поставяте стойности в текстово поле и текстовото поле ви ги показва в замяна. Има двупосочно взаимодействие между вас и текстовото поле.

Аксесоари

Те са команди, които ви позволяват да съхранявате стойности в променлива.

Пример: командата "storeTitle" е достъп, тъй като само "чете" заглавието на страницата и я записва в променлива. Той не взаимодейства с нито един елемент на страницата.

Твърдения

Те са команди, които проверяват дали е изпълнено определено условие.

3 вида твърдения

  • Утвърждавайте . Когато команда „assert“ не успее, тестът се спира незабавно.
  • Проверете . Когато команда „проверка“ не успее, Selenium IDE регистрира тази грешка и продължава с изпълнението на теста.
  • Изчакайте . Преди да преминете към следващата команда, командите "waitFor" първо ще изчакат дадено условие да стане истина.
    • Ако условието стане вярно в рамките на периода на изчакване, стъпката преминава.
    • Ако условието не стане вярно, стъпката се проваля. Неизправността се регистрира и изпълнението на теста преминава към следващата команда.
    • По подразбиране стойността на времето за изчакване е зададена на 30 секунди. Можете да промените това в диалоговия прозорец Selenium IDE Options под раздела General.

Утвърждаване срещу потвърждение

Общи команди

Команда Брой параметри Описание
отворен 0 - 2

Отваря страница с помощта на URL адрес.

click / clickAndWait 1

Кликвания върху определен елемент.

type / typeKeys 2

Въвежда поредица от символи.

verifyTitle / assertTitle 1

Сравнява действителното заглавие на страницата с очакваната стойност.

verifyTextPresent 1

Проверява дали в страницата е намерен определен текст.

verifyElementPresent 1

Проверява наличието на определен елемент.

verifyTable 2

Сравнява съдържанието на таблица с очакваните стойности.

waitForPageToLoad 1

Спира изпълнението, докато страницата не се зареди напълно.

waitForElementPresent 1

Спира изпълнението, докато посоченият елемент не стане наличен.

Създайте скрипт ръчно с Firebug

Сега ще пресъздадем същия тест ръчно, като напишем командите. Този път ще трябва да използваме Firebug.

Етап 1
  • Отворете Firefox и Selenium IDE.
  • Въведете основния URL адрес (http://demo.guru99.com/test/newtours/).
  • Бутонът за запис трябва да е изключен.
Стъпка 2: Щракнете върху най-горния празен ред в редактора.

Въведете "отворен" в текстовото поле Команда и натиснете Enter.

Стъпка 3
  • Придвижете се до Firefox до нашия основен URL и активирайте Firebug
  • В екрана на Selenium IDE Editor изберете втория ред (реда под командата "отвори") и създайте втората команда, като напишете "assertTitle" в полето за команди.
  • Чувствайте се свободни да използвате функцията за автоматично довършване.
Стъпка 4
  • В Firebug разгънете маркера , за да покажете маркера .</li> <li>Щракнете върху стойността на маркера <title> (който е "Добре дошли: Mercury Tours") и го поставете в полето Target в редактора.</li> </ul> </td> </tr> <tr> <td><strong>Стъпка 5</strong> <ul> <li>За да създадете третата команда, щракнете върху третия празен ред в редактора и въведете "type" в текстовото поле Command.</li> <li>В Firebug кликнете върху бутона „Проверка“.</li> </ul> </td> </tr> <tr> <td>Щракнете върху текстовото поле User Name. Забележете, че Firebug автоматично ви показва HTML кода за този елемент.</td> </tr> <tr> <td><strong>Стъпка 6</strong> <p>Забележете, че текстовото поле User Name няма ID, но има атрибут NAME. Следователно ние ще използваме неговото ИМЕ като локатор. Копирайте стойността на NAME и я поставете в полето Target в Selenium IDE.</p> <p>Все още в текстовото поле Target, префикс "userName" с "name =", показващ, че IDE на Selenium трябва да насочва към елемент, чийто атрибут NAME е "userName".</p> <p>Напишете "invalidUN" в текстовото поле Value на Selenium IDE. Сега вашият тестов скрипт трябва да изглежда като изображението по-долу. Приключихме с третата команда. Забележка: Вместо невалиден UN, можете да въведете всеки друг текстов низ. Но Selenium IDE е чувствителен към малки и големи букви и вие въвеждате стойности / атрибути точно както в приложението.</p> </td> </tr> <tr> <td><strong>Стъпка 7</strong> <ul> <li>За да създадете четвъртата команда, въведете "type" в текстовото поле Command.</li> <li>Отново използвайте бутона „Проверка“ на Firebug, за да получите локатора за текстовото поле „Парола“.</li> </ul> <ul> <li> <p>Поставете атрибута NAME ("парола") в полето Target и го добавете с префикс с "name ="</p> </li> <li> <p>Въведете "invalidPW" в полето Стойност в IDE на Selenium. Сега вашият тестов скрипт трябва да изглежда като изображението по-долу.</p> </li> </ul> </td> </tr> <tr> <td><strong>Стъпка 8</strong> <ul> <li>За петата команда въведете "clickAndWait" в текстовото поле Command в Selenium IDE.</li> <li>Използвайте бутона „Проверка“ на Firebug, за да получите локатора за бутона „Вход“.</li> </ul> <ul> <li>Поставете стойността на атрибута NAME ("login") в текстовото поле Target и го добавете с префикс с "name =".</li> <li>Сега вашият тестов скрипт трябва да изглежда като изображението по-долу.</li> </ul> </td> </tr> </tbody> </table> <p><strong>Стъпка 9:</strong> Запазете тестовия случай по същия начин, както направихме в предишния раздел.</p> <a id="menu-6"></a> <h2>Използване на бутона за намиране</h2> <p><strong>Бутонът Find в Selenium IDE се използва, за да се провери дали това, което сме поставили в текстовото поле Target, наистина е правилният елемент на UI.</strong></p> <p>Нека използваме тестовия случай Invalid_login, който създадохме в предишните раздели. Щракнете върху която и да е команда с Target запис, да речем, третата команда.</p> <p>Щракнете върху бутона Намери. Забележете, че текстовото поле User Name на страницата Mercury Tours се осветява за секунда.</p> <p>Това показва, че Selenium IDE е успял да открие и да осъществи правилен достъп до очаквания елемент. Ако бутонът Търсене намери различен елемент или изобщо няма елемент, тогава трябва да има нещо нередно във вашия скрипт.</p> <a id="menu-7"></a> <h2>Изпълнете командата</h2> <p><strong>Това ви позволява да изпълнявате всяка една команда, без да изпълнявате целия тестов случай</strong> . Просто кликнете върху реда, който искате да изпълните и след това кликнете върху „Действия> Изпълнение на тази команда“ от лентата с менюта или просто натиснете „X“ на клавиатурата.</p> <p><strong>Стъпка 1.</strong> Уверете се, че браузърът ви е на началната страница на Mercury Tours. Щракнете върху командата, която искате да изпълните. В този пример кликнете върху реда "type | userName | invalidUN".</p> <p><strong>Стъпка 2.</strong> Натиснете "X" на клавиатурата.</p> <p><strong>Стъпка 3.</strong> Наблюдавайте, че текстовото поле за потребителско име се попълва с текст "invalidUN"</p> <p><strong>Изпълнението на команди по този начин силно зависи от страницата, която Firefox показва в момента</strong> . Това означава, че ако опитате горния пример с показаната начална страница на Google вместо Mercury Tours, тогава вашата стъпка ще се провали, тъй като в началната страница на Google няма текстово поле с атрибут "userName".</p> <a id="menu-8"></a> <h2>Начална точка</h2> <p><strong>Началната точка е индикатор, който казва на Selenium IDE кои линии ще стартират изпълнението</strong> . <strong>Клавишът за бърз достъп е "S".</strong></p> <p>В горния пример възпроизвеждането ще започне на третия ред (въведете | парола | невалиден PW). <strong>Можете да имате само една начална точка в един тестов скрипт.</strong></p> <p>Началната точка е подобна на Execute Command по такъв начин, че те зависят от текущо показваната страница. Началната точка ще се провали, ако сте на грешната страница.</p> <a id="menu-9"></a> <h2>Точки на прекъсване</h2> <p>Точките на прекъсване са индикатори, които казват на Selenium IDE къде автоматично да постави на пауза теста. <strong>Клавишът за бърз достъп е "B".</strong></p> <p>Жълтото осветяване означава, че текущата стъпка е в очакване. Това доказва, че Selenium IDE е спрял изпълнението на тази стъпка. <strong>Можете да имате множество точки на прекъсване в един тестов случай.</strong></p> <a id="menu-10"></a> <h2>Стъпка</h2> <p>Тя ви позволява да изпълнявате следващи команди една по една след пауза на тестовия случай. Нека използваме сценария в предишния раздел „Точки на прекъсване“.</p> <table> <tbody> <tr> <td width="50%"> </td> <td> <p><strong>Преди да щракнете върху „Стъпка“.</strong></p> <p>Тестовият случай се прави на пауза на реда "clickAndWait | вход".</p> </td> </tr> <tr> <td width="50%"> </td> <td> <p><strong>След като щракнете върху „Стъпка“.</strong></p> <p>Редът "clickAndWait | login" се изпълнява и прави пауза до следващата команда (verifyTitle | Вход: Mercury Tours).</p> <p>Забележете, че следващият ред е на пауза, въпреки че там няма точка на прекъсване. Това е основната цел на функцията Step - тя изпълнява следващите команди една по една, за да ви даде повече време за проверка на резултата след всяка стъпка.</p> </td> </tr> </tbody> </table> <a id="menu-11"></a> <h2>Важни неща, които трябва да имате предвид при използване на други формати в изгледа на източника</h2> <p><strong>Selenium IDE работи добре само с HTML - други формати са все още в експериментален режим</strong> . Това е <strong>не е препоръчително</strong> да създадете или редактирате тестове с използването на други формати в Източник Вижте защото все още има много работа, която да го направи стабилен. По-долу са известните грешки от версия 1.9.1.</p> <ul> <li>Няма да можете да изпълнявате възпроизвеждане, нито да превключвате обратно към табличен изглед, освен ако не се върнете към HTML.</li> <li>Единственият начин за безопасно добавяне на команди към изходния код е чрез записването им.</li> <li>Когато модифицирате изходния код ръчно, всичко ще бъде загубено, когато преминете към друг формат.</li> <li>Въпреки че можете да запазите тестовия си случай, докато сте в изглед на източник, Selenium IDE няма да може да го отвори.</li> </ul> <p><strong>Препоръчителният начин за конвертиране на тестове на Selenese е използването на опцията „Експортиране на тестовия случай като ...“ в менюто File, а не чрез изгледа на източника.</strong></p> <a id="menu-12"></a> <h2>Обобщение</h2> <ul> <li>Тестовите скриптове могат да бъдат създадени или чрез запис или ръчно въвеждане на команди и параметри.</li> <li>Когато ръчно създавате скриптове, Firebug се използва за получаване на локатора.</li> <li>Бутонът Търсене се използва за проверка дали командата има достъп до правилния елемент.</li> <li>Изглед на таблица показва скрипт за тест в таблична форма, докато изгледът на източника го показва в HTML формат.</li> <li>Промяната на изгледа на източника в не-HTML формат все още е експериментална.</li> <li>Не използвайте изгледа на източника при създаване на тестове в други формати. Вместо това използвайте функциите за експортиране.</li> <li>Не се изискват параметри през цялото време. Зависи от командата.</li> <li>Има три вида команди:</li> <ul> <li>Действия - директно взаимодейства с елементите на страницата</li> <li>Аксесоари - "чете" свойство на елемент и го съхранява в променлива</li> <li>Утвърждения - сравнява действителна стойност с очаквана</li> </ul> <li>Твърденията имат три вида:</li> <ul> <li>Утвърждаване - при неуспех следващите стъпки вече не се изпълняват</li> <li>Проверка - при неуспех следващите стъпки все още се изпълняват.</li> <li>WaitFor - преминава, ако посоченото условие стане вярно в рамките на периода на изчакване; в противен случай ще се провали</li> </ul> <li>Най-често срещаните команди са:</li> <ul> <li>отворен</li> <li>click / clickAndWait</li> <li>type / typeKeys</li> <li>verifyTitle / assertTitle</li> <li>verifyTextPresent</li> <li>verifyElementPresent</li> <li>verifyTable</li> <li>waitForPageToLoad</li> <li>waitForElementPresent</li> </ul> </ul> </div> </article> <div id="container-5533149ee6411a5f99b370c693e87966"></div> </div> </div> </div> </div> </div> <aside class="col-lg-4 sidebar sidebar--right"> <div class="widget widget-popular-posts"> <h2 class="widget-title">Популярни Публикации</h2> <ul class="post-list-small"> <li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__img-holder"> <div class="thumb-container thumb-100"><a href="/8222745-flight-reservation-application-in-hp-uftqtp" title="Приложение за резервация на полет в HP UFT / QTP" rel="bookmark"><img src="https://cdn.css-code.org/8541603/flight_reservation_application_in_hp_uftqtp.png.webp" loading="lazy" alt="Приложение за резервация на полет в HP UFT / QTP" title="Приложение за резервация на полет в HP UFT / QTP" class="post-list-small__img--rounded" style="width:88px;height:88px" /></a></div> </div> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8222745-flight-reservation-application-in-hp-uftqtp" title="Приложение за резервация на полет в HP UFT / QTP" rel="bookmark">Приложение за резервация на полет в HP UFT / QTP 2025</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__img-holder"> <div class="thumb-container thumb-100"><a href="/8222746-30-best-mobile-app-development-tools-for-android-and-ios-2021" title="30 най-добри инструмента за разработка на мобилни приложения за Android & iOS (2021)" rel="bookmark"><img src="https://cdn.css-code.org/9070472/30_best_mobile_app_development_tools_for_android_ampamp_ios_2021.png.webp" loading="lazy" alt="30 най-добри инструмента за разработка на мобилни приложения за Android & iOS (2021)" title="30 най-добри инструмента за разработка на мобилни приложения за Android & iOS (2021)" class="post-list-small__img--rounded" style="width:88px;height:88px" /></a></div> </div> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8222746-30-best-mobile-app-development-tools-for-android-and-ios-2021" title="30 най-добри инструмента за разработка на мобилни приложения за Android & iOS (2021)" rel="bookmark">30 най-добри инструмента за разработка на мобилни приложения за Android & iOS (2021) 2025</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__img-holder"> <div class="thumb-container thumb-100"><a href="/8222747-how-to-record-and-playback-uftqtp-script" title="Как да записвате и възпроизвеждате UFT / QTP скрипт" rel="bookmark"><img src="https://cdn.css-code.org/5412049/how_to_record_and_playback_uftqtp_script.png.webp" loading="lazy" alt="Как да записвате и възпроизвеждате UFT / QTP скрипт" title="Как да записвате и възпроизвеждате UFT / QTP скрипт" class="post-list-small__img--rounded" style="width:88px;height:88px" /></a></div> </div> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8222747-how-to-record-and-playback-uftqtp-script" title="Как да записвате и възпроизвеждате UFT / QTP скрипт" rel="bookmark">Как да записвате и възпроизвеждате UFT / QTP скрипт 2025</a></h3> </div> </div> </li> </ul> </div> <div class="widget widget-popular-posts"> <h2 class="widget-title">Най-добрите мнения за месец</h2> <ul class="post-list-small"> <li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8222558-vugenvirtual-user-generator-script-example-in-loadrunner" title="Пример за скрипт на VuGen (Виртуален потребителски генератор) в LoadRunner" rel="bookmark">Пример за скрипт на VuGen (Виртуален потребителски генератор) в LoadRunner</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8222559-v-model-in-software-testing" title="V-модел при тестване на софтуер" rel="bookmark">V-модел при тестване на софтуер</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8222560-stlc-software-testing-life-cycle-phases-entry-exit-criteria" title="STLC (жизнен цикъл на тестване на софтуер) Фази, критерии за влизане, излизане" rel="bookmark">STLC (жизнен цикъл на тестване на софтуер) Фази, критерии за влизане, излизане</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8222561-manual-testing-tutorial-what-is-concepts-types-and-tool" title="Урок за ръчно тестване: Какво е, концепции, типове и усилватели; Инструмент" rel="bookmark">Урок за ръчно тестване: Какво е, концепции, типове и усилватели; Инструмент</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8222562-automation-testing-vs-manual-testing-whats-the-difference" title="Автоматизация Тестване Vs. Ръчно тестване: Каква е разликата?" rel="bookmark">Автоматизация Тестване Vs. Ръчно тестване: Каква е разликата?</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8222563-what-is-system-testing-types-and-definition-with-example" title="Какво е системно тестване? Видове & Определение с пример" rel="bookmark">Какво е системно тестване? Видове & Определение с пример</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8222564-sanity-testing-vs-smoke-testing-introduction-and-differences" title="Изпитване на разумността срещу изпитването на дим: Въведение и разлики" rel="bookmark">Изпитване на разумността срещу изпитването на дим: Въведение и разлики</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8222565-integration-testing-what-is-types-top-down-and-bottom-up-example" title="Интеграционно тестване: Какво е, типове, отгоре надолу & Пример отдолу нагоре" rel="bookmark">Интеграционно тестване: Какво е, типове, отгоре надолу & Пример отдолу нагоре</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8222566-what-is-test-analysis-test-basis-in-software-testing" title="Какво представлява тестовият анализ (тестова основа) при тестване на софтуер?" rel="bookmark">Какво представлява тестовият анализ (тестова основа) при тестване на софтуер?</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8222567-download-sample-test-case-template-example-excel-word-formats" title="Изтеглете примерен шаблон за тестови казуси: Пример Excel, Word формати" rel="bookmark">Изтеглете примерен шаблон за тестови казуси: Пример Excel, Word формати</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8222568-what-is-requirements-traceability-matrix-rtm-example-template" title="Какво представлява матрицата за проследяване на изискванията (RTM)? Примерен шаблон" rel="bookmark">Какво представлява матрицата за проследяване на изискванията (RTM)? Примерен шаблон</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8222570-software-testing-techniques-with-test-case-design-examples" title="Техники за тестване на софтуер с примери за проектиране на тестови случаи" rel="bookmark">Техники за тестване на софтуер с примери за проектиране на тестови случаи</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8222571-boundary-value-analysis-and-equivalence-partitioning-testing" title="Анализ на гранична стойност и тестване на разделяне на еквивалентност" rel="bookmark">Анализ на гранична стойност и тестване на разделяне на еквивалентност</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8222572-what-is-state-transition-testing-diagram-technique-example" title="Какво е тестване на държавния преход? Диаграма, техника, пример" rel="bookmark">Какво е тестване на държавния преход? Диаграма, техника, пример</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8222574-software-test-estimation-techniques-step-by-step-guide" title="Техники за оценка на софтуерни тестове: Ръководство стъпка по стъпка" rel="bookmark">Техники за оценка на софтуерни тестове: Ръководство стъпка по стъпка</a></h3> </div> </div> </li> </ul> </div> <div id="container-5533149ee6411a5f99b370c693e87966"></div> <div class="widget widget-popular-posts"> <h2 class="widget-title">Топ Статии</h2> <ul class="post-list-small"> <li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__img-holder"> <div class="thumb-container thumb-100"><a href="/8225117-distinct-in-postgresql-select-order-by-and-limit-examples" title="DISTINCT в PostgreSQL: Изберете - Подредете по & Ограничение (примери)" rel="bookmark"><img src="https://cdn.css-code.org/5801901/distinct_in_postgresql_select_order_by_ampamp_limit_examples.png.webp" loading="lazy" alt="DISTINCT в PostgreSQL: Изберете - Подредете по & Ограничение (примери)" title="DISTINCT в PostgreSQL: Изберете - Подредете по & Ограничение (примери)" class="post-list-small__img--rounded" style="width:88px;height:88px" /></a></div> </div> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8225117-distinct-in-postgresql-select-order-by-and-limit-examples" title="DISTINCT в PostgreSQL: Изберете - Подредете по & Ограничение (примери)" rel="bookmark">DISTINCT в PostgreSQL: Изберете - Подредете по & Ограничение (примери) 2025</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__img-holder"> <div class="thumb-container thumb-100"><a href="/8225118-create-user-in-postgresql-how-to-add-alt-and-delete-user" title="Създаване на потребител в PostgreSQL: Как да добавя, Alt & Да се ​​изтрие ли USER?" rel="bookmark"><img src="https://cdn.css-code.org/7902074/create_user_in_postgresql_how_to_add-_alt_ampamp_delete_user_.png.webp" loading="lazy" alt="Създаване на потребител в PostgreSQL: Как да добавя, Alt & Да се ​​изтрие ли USER?" title="Създаване на потребител в PostgreSQL: Как да добавя, Alt & Да се ​​изтрие ли USER?" class="post-list-small__img--rounded" style="width:88px;height:88px" /></a></div> </div> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8225118-create-user-in-postgresql-how-to-add-alt-and-delete-user" title="Създаване на потребител в PostgreSQL: Как да добавя, Alt & Да се ​​изтрие ли USER?" rel="bookmark">Създаване на потребител в PostgreSQL: Как да добавя, Alt & Да се ​​изтрие ли USER? 2025</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__img-holder"> <div class="thumb-container thumb-100"><a href="/8225119-postgresql-between-with-example" title="PostgreSQL МЕЖДУ с пример" rel="bookmark"><img src="https://cdn.css-code.org/2637749/postgresql_between_with_example.png.webp" loading="lazy" alt="PostgreSQL МЕЖДУ с пример" title="PostgreSQL МЕЖДУ с пример" class="post-list-small__img--rounded" style="width:88px;height:88px" /></a></div> </div> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8225119-postgresql-between-with-example" title="PostgreSQL МЕЖДУ с пример" rel="bookmark">PostgreSQL МЕЖДУ с пример 2025</a></h3> </div> </div> </li> </ul> </div> </aside> </div> </div> <footer class="footer footer--dark"> <div class="container"> <div class="footer__widgets"> <div class="row"> <div class="col-lg-4"> <div class="widget"> <h2 class="widget-title">Популярни Публикации</h2> <ul class="post-list-small"> <li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8222690-what-is-front-end-testing-tools-and-frameworks" title="Какво е тестване на предния край? Инструменти & Рамки" rel="bookmark">Какво е тестване на предния край? Инструменти & Рамки</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8222691-what-is-embedded-testing-in-software-testing" title="Какво е вградено тестване при тестване на софтуер?" rel="bookmark">Какво е вградено тестване при тестване на софтуер?</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8222692-what-is-domain-testing-in-software-testing-with-example" title="Какво е тестване на домейн при тестване на софтуер? (с пример)" rel="bookmark">Какво е тестване на домейн при тестване на софтуер? (с пример)</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8222693-design-verification-and-validation-process" title="Проверка на дизайна & Процес на валидиране" rel="bookmark">Проверка на дизайна & Процес на валидиране</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8222694-10-best-cross-browser-testing-tools-in-2021-freepaid" title="10 най-добри инструмента за тестване на различни браузъри през 2021 г. (безплатни / платени)" rel="bookmark">10 най-добри инструмента за тестване на различни браузъри през 2021 г. (безплатни / платени)</a></h3> </div> </div> </li> </ul> </div> </div> <div class="col-lg-4"> <div class="widget"> <h2 class="widget-title">Избор На Редактора</h2> <ul class="post-list-small"> <li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8003351-055-getting-static-mockup-into-version-control" title="# 055: Получаване на статичен макет в контрола на версиите - CSS-трикове" rel="bookmark"># 055: Получаване на статичен макет в контрола на версиите - CSS-трикове</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8003352-057-custom-header-for-the-gallery-part-1" title="# 057: Персонализиран хедър за галерията, част 1 - CSS-трикове" rel="bookmark"># 057: Персонализиран хедър за галерията, част 1 - CSS-трикове</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8003353-059-custom-header-for-the-forums-part-1" title="# 059: Персонализиран хедър за форумите, част 1 - CSS-трикове" rel="bookmark"># 059: Персонализиран хедър за форумите, част 1 - CSS-трикове</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8003354-058-custom-header-for-the-gallery-part-2-with-reverso-media-queries" title="# 058: Персонализиран заглавие за Галерията, Част 2 (с Reverso Media Queries) - CSS-трикове" rel="bookmark"># 058: Персонализиран заглавие за Галерията, Част 2 (с Reverso Media Queries) - CSS-трикове</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8003356-056-updating-versions-of-jquery-mid-stream" title="# 056: Актуализиране на версии на jQuery Mid-Stream - CSS-трикове" rel="bookmark"># 056: Актуализиране на версии на jQuery Mid-Stream - CSS-трикове</a></h3> </div> </div> </li> </ul> </div> </div> <div class="col-lg-4"> <div class="widget"> <h2 class="widget-title">Топ Статии</h2> <ul class="post-list-small"> <li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8003689-xhtml-1-0-strict-page-structure" title="Структура на страницата на XHTML 1.0 STRICT - CSS-трикове" rel="bookmark">Структура на страницата на XHTML 1.0 STRICT - CSS-трикове</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8003690-addclass-function" title="Функция addClass - CSS-трикове" rel="bookmark">Функция addClass - CSS-трикове</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8003691-1024768-bookmarklet" title="1024x768 отметка - CSS-трикове" rel="bookmark">1024x768 отметка - CSS-трикове</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8003692-addeventlistener-polyfill" title="AddEventListener Polyfill - CSS-трикове" rel="bookmark">AddEventListener Polyfill - CSS-трикове</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8003693-add-data-attribute-of-user-agent" title="Добавяне на атрибут на данни на потребителски агент - CSS-трикове" rel="bookmark">Добавяне на атрибут на данни на потребителски агент - CSS-трикове</a></h3> </div> </div> </li> </ul> </div> </div> </div> <p>© Copyright bg.css-code.org, 2025 Септември | <a href="https://bg.css-code.org/about-site" title="За сайта">За сайта</a> | <a href="https://bg.css-code.org/contacts" title="Контакти">Контакти</a> | <a href="https://bg.css-code.org/privacy-policy" title="Декларация за поверителност">Декларация за поверителност</a>. </p> </div> </div> </footer> <link href="https://css-code.org/template/css/style.min.css" rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'" /> </body> </html>