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

⚡ Умно обобщение

Съхранявайте команди в Selenium IDE запазва стойностите по време на изпълнение в именувани променливи, echo ги отпечатва в лога, а специално семейство команди обработва предупреждения, диалози за потвърждение и превключване между множество прозорци на браузъра.

  • 🔘 Създайте променлива: Командата store приема стойността в Target и името на променливата в „Стойност“.
  • ☑️ Прочетете го отново: Отворете името в ${ }, където и да е команда, която приема цел или стойност.
  • Печат за отстраняване на грешки: echo записва буквален низ или променлива директно в лога на IDE.
  • 🧪 Сигналите се приемат автоматично: IDE щраква върху OK вместо вас, така че използвайте storeAlert, за да запишете текста на съобщението.
  • 🛠️ Потвържденията изискват решение: Поставете chooseOkOnNextConfirmation преди командата, която отваря диалоговия прозорец.
  • 📊 Превключване на прозорци: selectWindow е насочен към заглавие на прозорец, а null целта връща към родителския прозорец.

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

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

⚠️ Бележка относно версиите: Снимките на екрана по-долу са от оригинала Firefox-плъгин Selenium IDE, а командите използват неговите имена с camelCase Selenese. Текущият Chrome, Firefox и разширението Edge запазва същото поведение, но записва повечето имена на команди с интервали. Картаping Таблицата се появява близо до края на тази статия и всяка оригинална команда и екранна снимка са запазени така, както са публикувани.

Selenium IDE променливи

Магазин

За да съхранявате променливи в Selenium IDE, ние използваме съхраняване на команда. Илюстрацията по-долу съхранява стойността „tutorial“ в променлива с име „myVariable“.

Selenium Команда за съхранение в IDE с урока за стойност, запазен в myVariable

За да получите достъп до променливата, просто я оградете в символ ${ … }. Например, за да въведете стойността на „myVariable“ в текстовото поле „userName“ на Mercury Обиколки, въведете ${myVariable} в полето Стойност.

Selenium Команда от тип IDE, използваща ${myVariable} в полето Value на текстовото поле userName

Команда за ехо в Selenium IDE

Съхранената променлива е невидима, докато нещо не я отпечата, и това е, което ехо командата прави това. Тя записва съобщение в панела с логове на IDE по време на възпроизвеждане, което го прави най-бързият начин да потвърдите, че командата за съхранение е уловила това, което сте очаквали, преди да изградите твърдения върху нея.

Командата приема една от следните форми:

  • Буквален низ. Поставете текста в Target поле, например Стъпката за вход е завършена, за да маркирате контролна точка в дълъг скрипт.
  • Променлива. Поставете ${myVariable} в Target поле и запаметената стойност се отпечатва вместо името.

Два навика правят echo много по-полезна, отколкото изглежда на пръв поглед. Изведете променлива веднага след командата store, която я създава, така че неуспехът е... tracкъм заснемането, а не към твърдението двадесет стъпки по-късно. И добавете пред всяко съобщение стъпката, към която принадлежи, защото панелът с лога показва всяка команда в един плосък списък. Обърнете внимание, че echo записва само в лога — никога не променя страницата и никога не се проваля на тест, така че е безопасно да го оставите в скрипта за постоянно.

StoreElementPresent

Тази команда съхранява или „true“, или „false“ в зависимост от наличието на посочения елемент. Скриптът по-долу съхранява булевата стойност „true“ в „var1“ и „false“ в „var2“. За да проверим, ще използваме командата echo, за да покажем стойностите на var1 и var2. Базата URL за илюстрацията по-долу беше зададено на Mercury Начална страница на Tours.

Selenium IDE storeElementPresent запазва true във var1 и false във var2, което се отразява в лога

StoreText

Тази команда се използва за съхраняване на вътрешния текст на елемент в променлива. Илюстрацията по-долу съхранява вътрешния текст на тага h1 на страницата за регистрация във Facebook в променлива с име „textVar“.

Selenium Командата storeText в IDE, която чете css=h1 в променливата textVar

Тъй като това е единственият елемент от този вид на страницата, е безопасно да използваме „css=h1“ като наша цел. Изображението по-долу показва това Selenium IDE успя да запише низа „Sign Up“ в променливата „textVar“, защото echo отпечата стойността му правилно.

Selenium Отпечатване на панела за логове на IDE Регистрация като стойност, съхранена в textVar

Сигнали, изскачащи прозорци и множество Windows

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

Сигнали Можете да използвате

assertAlert

assertNotAlert

извлича съобщението на предупреждението и го сравнява с низова стойност, която сте задали

assertAlertPresent

assertAlertNotPresent

потвърждава дали е налице предупреждение или не
storeAlert извлича предупредителното съобщение и го съхранява в променлива, която посочвате
storeAlertPresent връща TRUE, ако е налице предупреждение, FALSE в противен случай

verifyAlert

verifyNotAlert

извлича съобщението на предупреждението и проверява дали то е равно на зададената от вас низова стойност

verifyAlertPresent

verifyAlertNotPresent

проверява дали е налице предупреждение или не

Запомнете тези две неща, когато работите с предупреждения:

  • Selenium IDE автоматично щраква върху бутона OK в прозореца за предупреждение, така че няма да можете да видите действителното предупреждение.
  • Selenium IDE не може да обработва предупреждения, които се задействат във функцията onload() на страницата. То обработва само предупреждения, генерирани след като страницата е напълно заредена.

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

Стъпка 1) In Selenium IDE, задайте базата URL към http://jsbin.com. Пълният URL е http://jsbin.com/usidix. Тези jsbin фрагменти датират от Firefox-плъгин ера и може вече да не разрешава проблема; всяка страница с бутон, който повдига предупреждение, възпроизвежда същия резултат.

Стъпка 2) Създайте скрипта, както е показано по-долу. Командата click е насочена към бутона Go!, storeAlert записва съобщението в alertMessage, а echo го отпечатва.

Selenium IDE скрипт с команди click, storeAlert и echo срещу демонстрационната страница за jsbin alert

Стъпка 3) Изпълнете скрипта и не очаквайте да видите действителното предупреждение. Панелът с лог файлове по-долу показва заснетото съобщение, въпреки че диалоговият прозорец никога не е бил видим.

Selenium IDE лог, показващ текста на предупреждението, извлечен от storeAlert след възпроизвеждане

потвърждения

Потвържденията са изскачащи прозорци, които ви дават бутони „OK“ и „ОТКАЗ“, за разлика от известията, които ви дават само бутон „OK“. Командите, които можете да използвате при обработката на потвърждения, са идентични с командите за известия.

  • assertConfirmation / assertNotConfirmation
  • assertConfirmationPresent / assertConfirmationNotPresent
  • storeConfirmation
  • storeConfirmationPresent
  • verifyConfirmation / verifyNotConfirmation
  • провериПотвърждениетоНалично / провериПотвърждениетоНеНалично

Освен това, тези команди казват Selenium кой бутон да изберете, OK или CANCEL.

  • изберетеOkOnNextConfirmation / изберетеOkOnNextConfirmationAndWait
  • изберете CancelOnNextConfirmation

Поставете тези команди преди командата, която задейства полето за потвърждение, така че Selenium IDE знае предварително коя опция да избере. Отново, няма да видите действителния прозорец за потвърждение по време на изпълнението на скрипта.

Нека тестваме уеб страница с бутон, който е кодиран да съобщава дали потребителят е натиснал OK или CANCEL.

Стъпка 1) In Selenium IDE, задайте базата URL към http://jsbin.com. Пълният URL е http://jsbin.com/enifaf.

Стъпка 2) Създайте скрипта, както е показано по-долу. Този път първо ще натиснем бутона OK.

Selenium IDE скрипт, поставящ chooseOkOnNextConfirmation преди щракването, което отваря диалоговия прозорец

Стъпка 3) Изпълнете скрипта и обърнете внимание, че не виждате самото потвърждение, но уеб страницата все още показва кой бутон е бил натиснат. Selenium Натиснато е IDE.

Тестова страница, която отчита, че е натиснат бутонът OK в диалоговия прозорец за потвърждение

Стъпка 4) Заменете командата chooseOkOnNextConfirmation с chooseCancelOnNextConfirmation и изпълнете скрипта отново. Страницата вече отчита обратния избор.

Selenium IDE скриптът е редактиран, за да използва chooseCancelOnNextConfirmation вместо chooseOkOnNextConfirmation

Многократни Windows

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

Използваме командата selectWindow, за да превключваме между прозорците.

Ще използваме връзката http://jsbin.com/ocinaj/1, чието заглавие е „Първи прозорец“. Хиперлинкът „тук“ на тази страница отваря Facebook в нов прозорец, след което даваме инструкции Selenium IDE да направи следното:

  • Прехвърлете контрола от родителския прозорец към новостартирания прозорец на Facebook, като използвате командата selectWindow, като заглавието на прозореца е локатор.
  • Проверете заглавието на новия прозорец.
  • Изберете отново оригиналния прозорец, като използвате командата selectWindow с „null“ като цел.
  • Проверете заглавието на текущо избрания прозорец.

Горният план се превежда в показаната тук последователност от четири стъпки.

Диаграма на превключването от родителския прозорец към новия прозорец и обратно

Стъпка 1) Задайте основата URL към http://jsbin.com.

Стъпка 2) Създайте скрипта, както е показано по-долу.

Selenium IDE скрипт, използващ selectWindow, pause и verifyTitle за преместване между два прозореца

Нуждаем се от командата pause, за да изчакаме зареждането на новостартирания прозорец, преди да можем да прочетем заглавието му.

Стъпка 3) Изпълнете скрипта. Забележете, че тестов случай премина, което означава, че успяхме да превключваме между прозорците и да проверим успешно техните заглавия.

Резултат от преминаване на зелено Selenium IDE след проверка на заглавията на двата прозореца

Винаги помнете, че задаването на целта selectWindow на „null“ автоматично избира родителския прозорец — в този случай прозорецът, където се намира елементът „link=here“.

Забележка: Facebook промени заглавието на страницата си, откакто беше създаден този урок. Променете съответно очакваното заглавие в скрипта.

Модерен дизайн Selenium IDE еквиваленти на тези команди

- Firefox-plugin IDE беше пенсиониран, когато Firefox преместен към архитектурата на WebExtensions и текущия Chrome, Firefox и разширението Edge преименува повечето команди на Selenese във форма с интервали. Поведението е непроменено, така че таблицата по-долу е всичко, от което се нуждаете, за да прочетете горните скриптове спрямо текуща инсталация.

Стара команда в този урок АКТУАЛНО Selenium IDE команда
съхраняване на съхраняване на
ехо ехо
магазинТекст текст за съхранение
storeElementPresent запаметяване на наличността на елемент (или утвърждаване на наличността на елемент)
assertAlert / verifyAlert потвърждаване на предупреждение / проверка на предупреждение
изберетеОКНаСледващПотвърждение изберете ОК при следващото потвърждение
изберете CancelOnNextConfirmation изберете „Отказ“ при следващото потвърждение
selectWindow (заглавие като цел) изберете прозорец с handle=${handle}

Струва си да се отбележат две разлики. Подканите, които не са разгледани в старата статия, вече имат свои собствени команди: отговор на следващия въпрос планира отговора преди да се появи диалоговият прозорец и отговор на webdriver при видима подкана въвежда в подканата, която вече е отворена. И превключването между прозорци вече не зависи от заглавието на страницата. Изпълнете дръжка на витрина на магазина първо да се улови дръжка, след това да се подаде дръжка=${вашатаДръжка} за да изберете прозорец. Тази промяна премахва описания в горната бележка режим на неуспех, при който сайтът просто преименува страницата си и скриптът спира да намира прозореца. Официалният Selenium Сайт на проекта IDE изброява пълния текущ набор от команди.

Въпроси и Отговори

Да. ${myVariable} и ${myvariable} се отнасят до две различни променливи и позоваването на такава, която никога не е била съхранявана, води до празен низ, вместо да повдига грешка. Спазвайте една конвенция за именуване в целия пакет, за да избегнете „тихи“ празни полета.

Да. Синтаксисът на ${ } е разширен във всеки Target или поле „Стойност“, така че работи в отворена команда, XPath или CSS селектор. Ето как записан скрипт се превръща в такъв, управляван от данни, заснети по-рано по време на изпълнението.

Selenese няма математически оператори. Използвайте командата execute script с малък JavaСкриптов израз, който чете променливата и връща резултата, след което съхранява върнатата стойност. Не забравяйте, че всяка съхранена стойност пристига като низ, така че първо я конвертирайте.

Третирайте ги като локални за един тест. Разчитането на стойност, зададена от по-ранен тест, прави зависим от реда на пакета и трудно за отстраняване на грешки, така че съхранявайте това, от което се нуждае тестът, вътре в този тест или го прочетете от файл с данни в началото.

Подканата се нуждае от текст, не само от избор на бутон. Изпълнете отговора при следващата подкана с отговора в полето Стойност преди командата, която я отваря, или използвайте отговора на webdriver при видима подкана, когато диалоговият прозорец вече е на екрана.

Инструментите за машинно обучение могат да предложат последователност от команди от описание на сценарий на разбираем език и да предложат по-стабилни локатори от тези, които генерира записващо устройство. Поправката на локатори с помощта на изкуствен интелект също помага, тъй като преименуваният елемент е обичайната причина съхранената стойност да се връща празна.

Да. Експортирайте теста в Java or Python, след което оставете Copilot да рефакторира плоския списък с команди в обекти на страници и многократно използваеми чакащи елементи. Проверете обработката на предупрежденията ръчно, тъй като генерираният код често предполага видим диалогов прозорец, който IDE вече е отхвърлил.

Изборът въз основа на заглавие става двусмислен и може да бъде избран грешен прозорец. Точно затова текущата IDE предпочита манипулатори: заснемането на такъв с манипулатор на прозореца за съхранение веднага след отварянето му, след което превключването се осъществява с handle=${yourHandle}.

Обобщете тази публикация с: