how handle alerts popups selenium webdriver selenium tutorial 16
Ефективни начини за обработка на Windows и уеб-базирани сигнали / изскачащи прозорци в Selenium WebDriver:
как да пиша скриптове за тестове за автоматизация
В предишния урок фокусирахме дискусията си върху различни видове чакания, предоставени от WebDriver . Обсъдихме и различни видове опции за навигация, налични в WebDriver.
Придвижване напред в Уроци за селен WebDriver , ще обсъдим за налични различни видове сигнали при тестване на уеб приложения и техните стратегии за обработка.
Има два вида сигнали, върху които бихме се фокусирали основно :
- Windows-базирани изскачащи прозорци
- Уеб базирани изскачащи прозорци
Тъй като знаем, че обработката на изскачащи прозорци, базирани на прозорци, е извън възможностите на WebDriver, затова бихме упражнили някои помощни програми на трети страни за обработка на изскачащи прозорци.
Обработката на изскачащи прозорци е една от най-предизвикателните задачи за автоматизиране при тестване на уеб приложения. Благодарение на разнообразието от видове изскачащи прозорци усложнява ситуацията още повече.
Какво представлява полето за предупреждение / изскачащото поле / полето за потвърждение / подканата / полето за удостоверяване?
Това не е нищо друго освен малка кутия, която се появява на дисплея, за да ви даде някаква информация или да ви предупреди за потенциално увреждаща операция или дори може да ви поиска разрешенията за операцията.
Пример: Нека разгледаме пример от реалния живот за по-добро разбиране; Нека приемем, че сме качили снимка на някой от тези популярни сайтове за социални мрежи. По-късно искам да изтрия качената снимка. Така че, за да изтрия, щракнах върху бутона за изтриване. Веднага щом щракна върху бутона за изтриване, системата ме предупреждава срещу действието ми, подканвайки - Наистина ли искате да изтриете файла? Така че сега имаме възможност или да приемем този сигнал, или да го отхвърлим.
Така че преди сесията, нека видим как отхвърляме или приемаме сигналите в зависимост от техните типове. Започвайки с уеб-базирани изскачащи прозорци.
Какво ще научите:
Уеб базирани изскачащи прозорци
Нека видим как се справяме с тях с помощта на WebDriver.
Работа с уеб базиран изскачащ прозорец
WebDriver предлага на потребителите много ефективен начин да се справят с тези изскачащи прозорци, използвайки интерфейс за предупреждение.
Има четирите метода, които бихме използвали заедно с интерфейса за предупреждение.
1) невалидно отхвърляне () - Методът dismiss () щраква върху бутона „Отказ“ веднага щом се появи изскачащият прозорец.
две) void accept () - Методът accept () щраква върху бутона „Ok“ веднага щом се появи изскачащият прозорец.
3) String getText () - Методът getText () връща текста, показан в полето за предупреждение.
4) void sendKeys (String stringToSend) - Методът sendKeys () въвежда посочения модел на низ в полето за предупреждение.
Нека продължим напред и да разгледаме действителното изпълнение.
Обяснение на заявлението в тест
Ние създадохме уеб страница по начин, който да включва няколко основни типа уеб елементи. Това е същото приложение, което въведохме при обсъждането на Select class по-рано в тази поредица.
- Хипервръзка : Предоставени са двете хипервръзки, а именно „Google“ и „abodeQA“, които пренасочват потребителя към „http://www.google.com/“ и „http://www.abodeqa.com/“ съответно на щракнете събитие.
- Падащо меню : Трите хипервръзки са създадени за избор на цветове, плодове и животни със стойност, зададена по подразбиране.
- Бутон : Създаден е бутон „опитайте“, за да се покаже изскачащото поле с бутони ОК и Отказ при събитие при щракване.
(Щракнете върху изображението, за да видите увеличено)
Следва HTML кодът, използван за създаване на гореспоменатата уеб страница:
Тестване Изберете класЧервено Зелено Жълто Сиво | Apple Orange Mango Lime | Изберете куче мишка слон |
Щракнете върху бутона, за да се покаже поле за потвърждение. Изпробвайте функцията myFunction () {потвърди ('Натиснете бутон!'); } |
Сценарий, който да бъде автоматизиран
- Стартирайте уеб браузъра и отворете уеб страницата
- Кликнете върху бутона „Опитайте“
- Приемете сигнала
- Щракнете отново върху бутона „Опитайте“
- Отхвърлете сигнала
Код на WebDriver с помощта на Select Class
Моля, обърнете внимание, че за създаването на скриптове ще използваме проекта „Learning_Selenium”, създаден в предишния урок.
Етап 1 : Създайте нов java клас, наречен „DemoWebAlert” в рамките на проекта „Learning_Selenium”.
Стъпка 2 : Копирайте и поставете кода по-долу в класа „DemoWebAlert.java“.
По-долу е тестовият скрипт, който е еквивалентен на гореспоменатия сценарий.
import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; /** * class description */ public class DemoWebAlert { WebDriver driver; /** * Constructor */ public DemoWebAlert() { } /** * Set up browser settings and open the application */ @Before public void setUp() { driver=new FirefoxDriver(); // Opened the application driver.get('file:///F:/Work/Selenium/Testing-Presentation/DemoWebPopup.htm'); driver.manage().window().maximize(); } /** * Test to check Select functionality * @throws InterruptedException */ @Test public void testWebAlert() throws InterruptedException { // clicking on try it button driver.findElement(By.xpath('//button(contains(text(),'Try it'))')).click(); Thread.sleep(5000); // accepting javascript alert Alert alert = driver.switchTo().alert(); alert.accept(); // clicking on try it button driver.findElement(By.xpath('//button(contains(text(),'Try it'))')).click(); Thread.sleep(5000); // accepting javascript alert driver.switchTo().alert().dismiss(); // clicking on try it button driver.findElement(By.xpath('//button(contains(text(),'Try it'))')).click(); Thread.sleep(5000); // accepting javascript alert System.out.println(driver.switchTo().alert().getText()); driver.switchTo().alert().accept(); } /** * Tear down the setup after test completes */ @After public void tearDown() { driver.quit(); } }
Разходка с код
Изявления за внос
Внос org.openqa.selenium.Alert - Импортирайте този пакет преди създаването на скрипта. Пакетът се позовава на класа Alert, който е необходим за обработка на уеб-базирани предупреждения в WebDriver.
Създаване на обект за клас Alert
Сигнал за предупреждение = driver.switchTo (). Alert ();
Създаваме референтна променлива за клас Alert и я препраща към предупреждението.
най-добрата безплатна програма за почистване на Windows 10
Превключете на Alert
Driver.switchTo (). Alert ();
Горната команда се използва за превключване на контрола към наскоро генерирания изскачащ прозорец.
Приемете сигнала
alert.accept ();
Горната команда приема предупреждението, като по този начин щраква върху бутона Ok.
Отхвърлете сигнала
alert.dismiss ();
Горната команда затваря предупреждението, като по този начин щраква върху бутона Отказ и следователно операцията не трябва да продължава.
Изскачащи прозорци
Понякога, докато автоматизираме, получаваме някои сценарии, при които трябва да обработваме изскачащи прозорци, генерирани от прозорци като изскачащ прозорец за печат или прозорец за сърфиране, докато качваме файл.
Прочетете също = >> Как да се справя с качването на файлове в Selenium
Работата с тези изскачащи прозорци винаги е била малко сложна, тъй като знаем, че Selenium е инструмент за тестване на автоматизация, който поддържа само тестване на уеб приложения, което означава, че не поддържа приложения, базирани на Windows, и предупреждението за прозорци е един от тях. Въпреки това Селенът сам по себе си не може да помогне на ситуацията, но заедно с намеса на трета страна, този проблем може да бъде преодолян.
Налични са няколко инструмента на трети страни за обработка на изскачащи прозорци, базирани на прозорец, заедно със селена.
как да направя java отворени jar файлове
Така че сега нека се справим с изскачащ прозорец, базиран на прозорец, като използваме клас Robot.
Robot class е помощна програма, базирана на java, която емулира действията на клавиатурата и мишката.
Преди да продължим напред, нека отделим малко време, за да разгледаме тестваното приложение (AUT).
Обяснение на заявлението в тест
Като тествано приложение бихме използвали „gmail.com“. Вярвам, че приложението не изисква повече въведения.
Сценарий, който да бъде автоматизиран
- Стартирайте уеб браузъра и отворете приложението - „gmail.com“
- Въведете валидно потребителско име и парола
- Кликнете върху бутона за вход
- Щракнете върху бутона за съставяне
- Щракнете върху иконата за прикачване
- Изберете файловете за качване с изскачащ прозорец, базиран на прозореца.
Код на WebDriver, използващ клас на робот
Моля, обърнете внимание, че за създаването на скриптове ще използваме проекта „Learning_Selenium”, създаден в предишния урок.
Етап 1 : Създайте нов клас на Java, наречен „DemoWindowAlert” в рамките на проекта „Learning_Selenium”.
Стъпка 2 : Копирайте и поставете долния код в класа “DemoWindowAlert.java”.
По-долу е тестовият скрипт, който е еквивалентен на гореспоменатия сценарий.
import java.awt.Robot;
импортиране на java.awt.event.KeyEvent; внос org.junit.After; внос org.junit.Преди; внос org.junit.Test; внос org.openqa.selenium.By; импортиране на org.openqa.selenium.WebDriver; импортиране на org.openqa.selenium.firefox.FirefoxDriver; публичен клас DemoWindowAlert {драйвер за WebDriver; @Before public void setUp () {драйвер = нов FirefoxDriver (); driver.get ('https://gmail.com'); driver.manage (). window (). maximize (); } @Test public void testWindowAlert () хвърля изключение {// въведете валиден имейл адрес driver.findElement (By.id ('Email')). SendKeys ('TestSelenium1607@gmail.com '); // въведете валиден драйвер за парола.findElement (By.id ('Passwd')). sendKeys ('TestSelenium'); // щракнете върху бутона за влизане driver.findElement (By.id ('signIn')). click (); Thread.sleep (30000); // кликнете върху бутона за съставяне на драйвер.findElement (By.xpath ('// div (@ class =' z0 ') // div (съдържа (текст (),' СЪСТАВЯ '))))). кликнете (); // кликнете върху иконата за прикачване на файлове driver.findElement (By.xpath ('// div (съдържа (@ команда,' Файлове ')) // div (съдържа (@ клас,' aaA '))')). кликнете ( ); // създаване на екземпляр на клас Robot (помощна програма, базирана на Java) Robot rb = new Robot (); // натискане на клавиши с помощта на keyPress и keyRelease събития rb.keyPress (KeyEvent.VK_D); rb.keyRelease (KeyEvent.VK_D); Thread.sleep (2000); rb.keyPress (KeyEvent.VK_SHIFT); rb.keyPress (KeyEvent.VK_SEMICOLON); rb.keyRelease (KeyEvent.VK_SEMICOLON); rb.keyRelease (KeyEvent.VK_SHIFT); rb.keyPress (KeyEvent.VK_BACK_SLASH); rb.keyRelease (KeyEvent.VK_BACK_SLASH); Thread.sleep (2000); rb.keyPress (KeyEvent.VK_P); rb.keyRelease (KeyEvent.VK_P); rb.keyPress (KeyEvent.VK_I); rb.keyRelease (KeyEvent.VK_I); rb.keyPress (KeyEvent.VK_C); rb.keyRelease (KeyEvent.VK_C); Thread.sleep (2000); rb.keyPress (KeyEvent.VK_ENTER); rb.keyRelease (KeyEvent.VK_ENTER); Thread.sleep (2000); } @After public void tearDown () {driver.quit (); }} Разходка с код
Изявления за внос
импортиране на java.awt.Robot - Импортирайте този пакет преди създаването на скрипта. Пакетът се позовава на класа Robot в Java, който е необходим, за да симулира събития от клавиатурата и мишката.
импортирайте java.awt.event.KeyEvent - Пакетът позволява на потребителя да използва събитията keyPress и keyRelease на клавиатура.
Създаване на обект за клас робот
Robot rb = нов робот ();
Създаваме референтна променлива за клас Robot и я създаваме.
KeyPress и KeyRelease Събития
rb.keyPress (KeyEvent.VK_D);
rb.keyRelease (KeyEvent.VK_D);
Методите keyPress и keyRelease симулират, че потребителят съответно натиска и освобождава определен клавиш на клавиатурата.
Заключение
В този урок се опитахме да ви запознаем с класа за предупреждение на WebDriver, който се използва за обработка на уеб-базирани изскачащи прозорци. Също така ви запознахме с класа Robot, който може да се използва за попълване на стойността в предупреждението, базирано на прозореца, с помощта на събития keyPress и keyRelease.
Резюме на статията:
- Сигналите са малко поле, което се появява на дисплея, за да ви даде някаква информация или да ви предупреди за потенциално увреждаща операция или дори може да ви поиска разрешенията за операцията.
- Популярно има два вида сигнали -
- Windows-базирани изскачащи прозорци
- Уеб базирани изскачащи прозорци
- Преди действителния скрипт, трябва да импортираме пакет, за да можем да създадем скрипт WebDriver за обработка на падащо меню и осигуряване на достъпност на класа Select.
- WebDriver предлага на потребителите много ефективен начин да се справят с тези изскачащи прозорци, използвайки интерфейс за предупреждение.
- невалидно отхвърляне () - The уволнение () метод щраква върху бутона „Отказ“ веднага щом се появи изскачащият прозорец.
- void accept () - The приемете () метод щраква върху бутона „Ok“ веднага щом се появи изскачащият прозорец.
- Струна getText () - The getText () метод връща текста, показан в полето за предупреждение.
- void sendKeys (String stringToSend) - The sendKeys () метод въвежда посочения модел на низ в полето за предупреждение.
- Обработка на изскачащи прозорци винаги са били малко сложни, тъй като знаем, че Selenium е инструмент за тестване на автоматизация, който поддържа само тестване на уеб приложения, което означава, че не поддържа приложения, базирани на Windows и предупреждението за прозорец е един от тях.
- Клас робот е помощна програма, базирана на Java, която емулира действията на клавиатурата и мишката и може ефективно да се използва за обработка на изскачащи прозорци, базирани на прозорец, с помощта на събития на клавиатурата.
- Методите keyPress и keyRelease симулират, че потребителят съответно натиска и освобождава определен клавиш на клавиатурата.
Следващ урок # 17 : В предстоящия урок ще обсъдим различните други често използвани команди WebDriver . Бихме хвърлили светлина върху теми като обработка на изключения и обработка на рамки. Бихме обсъдили и командите за получаване, предоставени в WebDriver.
Бихме обяснили тези теми с бързи примери, за да ги направим разбираеми за читателите да упражняват тези концепции в ежедневните си сценарии.
Бележка за читателите : Дотогава оставайте на линия и автоматизирайте уеб страниците с изскачащи прозорци, базирани на уеб и прозорци, като използвате помощната програма WebDriver - „Клас за предупреждение“ и помощната програма Java - „Клас на робота“.
Чувствайте се свободни да публикувате вашите запитвания / коментари за този или всеки друг предишен урок в коментари по-долу.
Препоръчително четене
- Урок за краставици селен: Интеграция на краставица Java Selenium WebDriver
- Въведение в Selenium WebDriver - Урок № 8 за селен
- Внедряване на нашия първи скрипт за WebDriver - Урок № 10 за Selenium WebDriver
- Цялата настройка и инсталиране на WebDriver с Eclipse - Урок № 9 за селен
- Проверете видимостта на уеб елементи, като използвате различни типове команди WebDriver - Урок № 14 за селен
- Урок за GeckoDriver селен: Как да използвам GeckoDriver в проекти за селен
- Интеграция на Jenkins с Selenium WebDriver: Урок стъпка по стъпка
- Ефективни сценарии за скриптове и отстраняване на неизправности в селен - Урок № 27 за селен