how handle alerts popups selenium webdriver selenium tutorial 16
Effektiva sätt att hantera Windows och webbaserade varningar / popup-fönster i Selen WebDriver:
bästa servrarna att spela på wow
I föregående handledning fokuserade vi vår diskussion på olika typer av väntetider som tillhandahålls av WebDriver . Vi diskuterade också olika typer av navigeringsalternativ som finns i WebDriver.
Gå vidare i Selen WebDriver-handledning , vi kommer att diskutera om olika typer av varningar tillgängliga när du testar webbapplikationer och deras hanteringsstrategier.
Det finns två typer av varningar som vi huvudsakligen skulle fokusera på :
- Windows-baserade varnings-popup-fönster
- Webbaserade popup-fönster för varningar
Eftersom vi vet att hantering av fönsterbaserade popup-fönster inte går över WebDrivers möjligheter, skulle vi därför utöva vissa verktyg från tredje part för att hantera fönster popup-fönster.
Hantering av pop up är en av de mest utmanande bitarna av arbete att automatisera när man testar webbapplikationer. På grund av mångfalden i olika pop-ups komplicerar situationen ännu mer.
Vad är varningsruta / popup-ruta / bekräftelsesruta / fråga / autentiseringsruta?
Det är inget annat än en liten ruta som visas på skärmen för att ge dig någon form av information eller för att varna dig för en potentiellt skadlig åtgärd eller det kan till och med be dig om behörighet för operationen.
Exempel: Låt oss överväga ett verkligt exempel för bättre förståelse. Låt oss anta att vi laddade upp ett foto på någon av dessa populära sociala nätverkssajter. Senare vill jag radera det uppladdade fotografiet. Så för att ta bort, klickade jag på radera-knappen. Så snart jag klickar på raderingsknappen varnar mig systemet mot min åtgärd och uppmanar - Vill du verkligen ta bort filen? Så nu har vi ett alternativ att antingen acceptera den här varningen eller avvisa den.
Så före sessionen, låt oss se hur vi avvisar eller accepterar varningarna beroende på deras typ. Börjar med de webbaserade popup-fönstren.
Vad du kommer att lära dig:
Webbaserade popup-fönster
Låt oss se hur vi hanterar dem med hjälp av WebDriver.
Hantering av webbaserad popup-ruta
WebDriver erbjuder användarna ett mycket effektivt sätt att hantera dessa popup-fönster med hjälp av Alert-gränssnittet.
Det finns de fyra metoderna som vi skulle använda tillsammans med Alert-gränssnittet.
1) ogiltig uppsägning () - Metoden avvisa () klickar på knappen 'Avbryt' så snart popup-fönstret visas.
två) ogiltigt acceptera () - Acceptera () -metoden klickar på 'Ok' -knappen så snart popup-fönstret visas.
3) Sträng getText () - Metoden getText () returnerar texten som visas i varningsrutan.
4) void sendKeys (String stringToSend) - Metoden sendKeys () anger det angivna strängmönstret i varningsrutan.
Låt oss gå vidare och titta på det faktiska genomförandet.
Förklaring av applikation under test
Vi har utformat en webbsida för att inkludera några grundläggande typer av webbelement. Det här är samma applikation som vi introducerade när vi diskuterade Välj klass tidigare i denna serie.
- Hyperlänk : De två hyperlänkarna, 'Google' och 'abodeQA' har tillhandahållits som omdirigerar användaren till 'http://www.google.com/' respektive 'http://www.abodeqa.com/' på klicka på händelse.
- Falla ner : De tre hyperlänkarna har skapats för att välja färger, frukter och djur med ett värde som standard.
- Knapp : En 'prova' -knapp har skapats för att visa popup-rutan med knapparna OK och Avbryt vid klickhändelse.
(Klicka på bilden för att se förstorad)
Därefter är HTML-koden som används för att skapa ovan nämnda webbsida:
Testning Välj klassRöd Grön Gul Grå | Apple Orange Mango Lime | Välj Elephant Mouse Dog |
Klicka på knappen för att visa en bekräftelsesruta. Prova det fungerar myFunction () {bekräfta ('Tryck på en knapp!'); } |
Scenario ska automatiseras
- Starta webbläsaren och öppna webbsidan
- Klicka på knappen 'Prova'
- Acceptera varningen
- Klicka på “Prova det” igen
- Avvisa varningen
WebDriver-kod med Select Class
Observera att för skapande av skript skulle vi använda “Learning_Selenium” -projektet som skapades i den tidigare självstudien.
Steg 1 : Skapa en ny java-klass med namnet “DemoWebAlert” under projektet “Learning_Selenium”.
Steg 2 : Kopiera och klistra in koden nedan i klassen “DemoWebAlert.java”.
Nedan följer testskriptet som motsvarar ovan nämnda scenario.
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(); } }
Kodgenomgång
Importera uttalanden
Importera org.openqa.selenium.Alert - Importera detta paket innan skriptet skapas. Paketreferenserna till Alert-klassen som krävs för att hantera de webbaserade varningarna i WebDriver.
Objektskapande för varningsklass
Alert alert = driver.switchTo (). Alert ();
Vi skapar en referensvariabel för varningsklassen och hänvisar den till varningen.
spela in och spela upp testverktyg gratis
Byt till Alert
Driver.switchTo (). Alert ();
Ovanstående kommando används för att växla kontrollen till det nyligen skapade popup-fönstret.
Godkänn varningen
alert.accept ();
Ovanstående kommando accepterar varningen och klickar sedan på Ok-knappen.
Avvisa varningen
alert.dismiss ();
Ovanstående kommando stänger varningen och klickar på knappen Avbryt och operationen bör därför inte fortsätta.
Fönsterbaserade popup-fönster
Ibland under automatiseringen får vi några scenarier, där vi behöver hantera popup-fönster som genereras av fönster som en pop-up eller ett bläddringsfönster när vi laddar upp en fil.
Läs också = >> Hur man hanterar filöverföring i Selenium
Att hantera dessa popup-fönster har alltid varit lite knepigt eftersom vi vet att Selenium är ett automatiseringsprovningsverktyg som endast stöder testning av webbapplikationer, det betyder att det inte stöder Windows-baserade applikationer och fönstervarning är en av dem. Selen kan emellertid inte hjälpa situationen men tillsammans med någon tredje parts ingripande kan detta problem övervinnas.
Det finns flera tredjepartsverktyg tillgängliga för hantering av fönsterbaserade popup-fönster tillsammans med selen.
vad är skillnaden mellan vidarebefordran av port och utlösning av port
Så nu ska vi hantera en fönsterbaserad pop-up med Robot-klass.
Robotklass är ett java-baserat verktyg som efterliknar tangentbordet och musåtgärderna.
Innan vi går vidare, låt oss ta en stund att titta på applikationen som testas (AUT).
Förklaring av applikation under test
Som en applikation som testas använder vi “gmail.com”. Jag tror att ansökan inte kräver fler introduktioner.
Scenario ska automatiseras
- Starta webbläsaren och öppna programmet - “gmail.com”
- Ange giltigt användarnamn och lösenord
- Klicka på inloggningsknappen
- Klicka på komponerings-knappen
- Klicka på bifogningsikonen
- Välj de filer som ska laddas upp med fönsterbaserad popup.
WebDriver-kod med robotklass
Observera att för skapande av skript skulle vi använda “Learning_Selenium” -projektet som skapades i den tidigare självstudien.
Steg 1 : Skapa en ny java-klass med namnet “DemoWindowAlert” under projektet “Learning_Selenium”.
Steg 2 : Kopiera och klistra in koden nedan i klassen “DemoWindowAlert.java”.
Nedan följer testskriptet som motsvarar ovan nämnda scenario.
import java.awt.Robot;
importera java.awt.event.KeyEvent; importera org.junit.After; importera org.junit.Before; importera org.junit.Test; importera org.openqa.selenium.By; importera org.openqa.selenium.WebDriver; importera org.openqa.selenium.firefox.FirefoxDriver; offentlig klass DemoWindowAlert {WebDriver-drivrutin; @ Innan offentligt ogiltigt setUp () {drivrutin = ny FirefoxDriver (); driver.get ('https://gmail.com'); driver.manage (). fönster (). maximera (); } @Test offentligt ogiltigt testWindowAlert () kastar undantag {// ange en giltig e-postadressdriver.findElement (By.id ('Email')). SendKeys ('TestSelenium1607@gmail.com '); // ange en giltig lösenordsdrivrutin.findElement (By.id ('Passwd')). sendKeys ('TestSelenium'); // klicka på drivrutinen för inloggningsknappen.findElement (By.id ('signIn')). klicka (); Thread.sleep (30000); // klicka på drivknappen för komponera-knappen.findElement (By.xpath ('// div (@ class =' z0 ') // div (innehåller (text (),' COMPOSE '))')). klicka (); // klicka på ikonen för att bifoga filer driver.findElement (By.xpath ('// div (innehåller (@ kommando,' Filer ')) // div (innehåller (@ klass,' aaA '))')). klicka ( ); // skapa förekomst av robotklass (Ett java-baserat verktyg) Robot rb = ny robot (); // trycka på tangenter med hjälp av keyPress och keyRelease events 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); } @Efter offentligt ogiltigt tearDown () {driver.quit (); }} Kodgenomgång
Importera uttalanden
importera java.awt.Robot - Importera detta paket innan skriptet skapas. Paketreferenserna till robotklassen i java som krävs simulerar tangentbord och mushändelser.
importera java.awt.event.KeyEvent - Paketet tillåter användaren att använda tangenttryckningar och tangentrelaterade händelser på ett tangentbord.
Objektskapande för robotklass
Robot rb = ny robot ();
Vi skapar en referensvariabel för robotklassen och instanserar den.
KeyPress och KeyRelease-händelser
rb.keyPress (KeyEvent.VK_D);
rb.keyRelease (KeyEvent.VK_D);
Metoderna keyPress och keyRelease simulerar användaren att trycka på och släppa en viss tangent på tangentbordet.
Slutsats
I den här handledningen försökte vi göra dig bekant med WebDrivers Alert-klass som används för att hantera webbaserade popup-fönster. Vi informerade dig också om robotklassen som kan användas för att fylla i värdet i den fönsterbaserade varningen med hjälp av keyPress och keyRelease-händelser.
Artikelöversikt:
- Varningar är en liten ruta som visas på skärmen för att ge dig någon form av information eller för att varna dig för en potentiellt skadlig åtgärd eller så kan den till och med be dig om behörighet för operationen.
- Det finns populärt två typer av varningar -
- Windows-baserade pop-up-varningar
- Webbaserade pop-up-varningar
- Innan själva skriptet måste vi importera ett paket för att kunna skapa ett WebDriver-skript för att hantera en rullgardinsmeny och göra Select-klassen tillgänglig.
- WebDriver erbjuder användarna ett mycket effektivt sätt att hantera dessa popup-fönster med hjälp av Alert-gränssnittet.
- ogiltig uppsägning () - Den avfärda() metoden klickar på knappen ”Avbryt” så snart popup-fönstret visas.
- ogiltigt acceptera () - Den acceptera() metoden klickar på “Ok” -knappen så snart popup-fönstret visas.
- Sträng getText () - Den getText () metoden returnerar texten som visas i larmrutan.
- void sendKeys (String stringToSend) - Den sendKeys () metoden anger det angivna strängmönstret i varningsrutan.
- Hantera fönsterbaserade popup-fönster har alltid varit lite knepigt eftersom vi vet att Selen är ett automatiseringsprovningsverktyg som bara stöder testning av webbapplikationer, det betyder att det inte stöder Windows-baserade applikationer och fönstervarning är en av dem.
- Robotklass är ett java-baserat verktyg som emulerar tangentbordet och musåtgärderna och kan effektivt användas för att hantera fönsterbaserad pop-up med hjälp av tangentbordshändelser.
- Metoderna keyPress och keyRelease simulerar användaren att trycka på och släppa en viss tangent på tangentbordet.
Nästa handledning # 17 : I den kommande handledningen skulle vi diskutera om de olika andra vanliga WebDriver-kommandon . Vi skulle belysa ämnen som undantagshantering och iframe-hantering. Vi skulle också diskutera de get-kommandon som tillhandahålls i WebDriver.
Vi skulle förklara dessa ämnen med snabba exempel för att göra dem förståliga för läsarna att utöva dessa begrepp i deras dagliga skript.
Anmärkning för läsarna : Fram till dess, håll ögonen öppna och automatisera webbsidorna med webbaserade och fönsterbaserade popup-fönster med hjälp av WebDriver-verktyget - 'Alert class' och Java-verktyget - 'Robot Class'.
Skicka gärna dina frågor / kommentarer om detta eller andra tidigare självstudier i kommentarerna nedan.
Rekommenderad läsning
- Gurka Selen Tutorial: Gurka Java Selen WebDriver Integration
- Introduktion till Selen WebDriver - Selen Tutorial # 8
- Implementering av vårt första WebDriver Script - Selenium WebDriver Tutorial # 10
- WebDriver Hela installationen och installationen med Eclipse - Selen Tutorial # 9
- Kontrollera synligheten för webbelement med olika typer av WebDriver-kommandon - Selen Tutorial # 14
- GeckoDriver Selen Tutorial: Hur man använder GeckoDriver i Selen-projekt
- Integration av Jenkins med Selen WebDriver: Steg-för-steg-handledning
- Effektiv skriptning av selen och felsökning av scenarier - Selen-handledning # 27