how handle alerts popups selenium webdriver selenium tutorial 16
Effektive måter å håndtere Windows og nettbaserte varsler / popup-vinduer i Selenium WebDriver:
hvordan åpne en binær fil
I forrige veiledning fokuserte vi diskusjonen vår på forskjellige typer ventetider levert av WebDriver . Vi diskuterte også om forskjellige typer navigasjonsalternativer som er tilgjengelige i WebDriver.
Gå videre i Selenium WebDriver Tutorials , vil vi diskutere om forskjellige typer varsler tilgjengelig når du tester nettapplikasjoner og deres håndteringsstrategier.
Det er to typer varsler som vi hovedsakelig vil fokusere på :
- Windows-baserte popup-vinduer
- Nettbaserte popup-vinduer
Ettersom vi vet at håndtering av Windows-baserte popup-vinduer er utenfor WebDrivers muligheter, vil vi derfor utøve noen tredjepartsverktøy for å håndtere popup-vinduer.
Håndtering av pop-up er en av de mest utfordrende delene av arbeidet å automatisere mens du tester nettapplikasjoner. På grunn av mangfoldet i typer popup-vinduer kompliserer situasjonen enda mer.
Hva er varselboks / popup-boks / bekreftelsesboks / spørsmål / godkjenningsboks?
Det er ingenting annet enn en liten boks som vises på skjermen for å gi deg noen form for informasjon eller for å advare deg om en potensielt skadelig operasjon, eller det kan til og med be deg om tillatelser for operasjonen.
Eksempel: La oss vurdere et eksempel fra virkeligheten for bedre forståelse; La oss anta at vi lastet opp et fotografi på et av disse populære sosiale nettverkssidene. Senere vil jeg slette det opplastede fotografiet. Så for å slette, klikket jeg på slett-knappen. Så snart jeg klikker på sletteknappen, advarer systemet meg mot min handling, og spør - Vil du virkelig slette filen? Så nå har vi et alternativ å enten godta dette varselet eller avvise det.
Så i forkant av økten, la oss se hvordan vi avviser eller godtar varslene avhengig av typen. Starter med de nettbaserte popup-vinduene.
Hva du vil lære:
Nettbaserte popup-vinduer
La oss se hvordan vi håndterer dem ved hjelp av WebDriver.
Håndtering av nettbasert popup-rute
WebDriver tilbyr brukerne en veldig effektiv måte å håndtere disse popup-vinduene på ved hjelp av alarmgrensesnitt.
Det er de fire metodene vi vil bruke sammen med alarmgrensesnittet.
1) ugyldig avskjed () - Avvisningsmetoden () klikker på 'Avbryt' -knappen så snart popup-vinduet vises.
to) ugyldig godta () - Accept () -metoden klikker på 'Ok' -knappen så snart popup-vinduet vises.
3) String getText () - GetText () -metoden returnerer teksten som vises i varselboksen.
4) ugyldig sendKeys (String stringToSend) - SendKeys () -metoden angir det angitte strengemønsteret i varselboksen.
La oss gå videre og se på den faktiske implementeringen.
Forklaring på applikasjon under test
Vi har designet en webside på en måte som inkluderer noen få grunnleggende typer webelementer. Dette er den samme applikasjonen vi introduserte mens vi diskuterte Select-klassen tidligere i denne serien.
- Hyperkobling : De to hyperkoblingene, 'Google' og 'abodeQA' er gitt som omdirigerer brukeren til henholdsvis 'http://www.google.com/' og 'http://www.abodeqa.com/' klikk hendelse.
- Fall ned : De tre hyperkoblingene er opprettet for å velge farger, frukt og dyr med verdien satt til standard.
- Knapp : En “prøv det” -knapp er opprettet for å vise popup-boksen med OK- og Avbryt-knappene ved klikkhendelsen.
(Klikk på bildet for å se forstørret)
Etterfølgende er HTML-koden som brukes til å opprette ovennevnte webside:
Testing Velg klasseRød Grønn Gul Grå | Apple Orange Mango Lime | Velg Elephant Mouse Dog |
Klikk på knappen for å vise en bekreftelsesboks. Prøv det fungerer myFunction () {bekreft ('Trykk på en knapp!'); } |
Scenario skal automatiseres
- Start nettleseren og åpne nettsiden
- Klikk på “Prøv det” -knappen
- Godta varselet
- Klikk på “Prøv det” -knappen igjen
- Avvis varselet
WebDriver-kode ved hjelp av Select Class
Vær oppmerksom på at vi for å lage skript bruker “Learning_Selenium” -prosjektet som ble opprettet i den tidligere opplæringen.
Trinn 1 : Lag en ny java-klasse kalt “DemoWebAlert” under “Learning_Selenium” -prosjektet.
Steg 2 : Kopier og lim inn koden nedenfor i klassen “DemoWebAlert.java”.
Nedenfor er testskriptet som tilsvarer ovennevnte 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(); } }
Gjennomgang av kode
Importer uttalelser
Importer org.openqa.selenium.Alert - Importer denne pakken før skriptopprettelsen Pakkens referanser til Alert-klassen som kreves for å håndtere de nettbaserte varslene i WebDriver.
Objektoppretting for varslingsklasse
Alert alert = driver.switchTo (). Alert ();
Vi oppretter en referansevariabel for Alert-klasse og henviser den til varselet.
hvordan du legger til verdier i en matrise
Bytt til varsel
Driver.switchTo (). Varsel ();
Ovennevnte kommando brukes til å bytte kontrollen til det nylig genererte popup-vinduet.
Godta varselet
alert.accept ();
Ovennevnte kommando godtar varselet og klikker på OK-knappen.
Avvis varselet
alert.dismiss ();
Ovennevnte kommando lukker varselet og klikker på Avbryt-knappen, og operasjonen bør derfor ikke fortsette.
Vindusbaserte popup-vinduer
Noen ganger mens vi automatiserer, får vi noen scenarier, der vi trenger å håndtere popup-vinduer generert av vinduer som et utskriftsvindu eller et nettleservindu mens vi laster opp en fil.
Les også = >> Hvordan håndtere filopplasting i Selenium
Det har alltid vært litt vanskelig å håndtere disse popup-vinduene, ettersom vi vet at Selenium er et verktøy for automatiseringstesting som bare støtter testing av webapplikasjoner, det vil si at det ikke støtter Windows-baserte applikasjoner og vindusvarsling er en av dem. Selen kan imidlertid ikke hjelpe situasjonen, men sammen med noen tredjepartsintervensjon kan dette problemet overvinnes.
Det er flere tredjepartsverktøy tilgjengelig for håndtering av vindusbaserte popup-vinduer sammen med selen.
hva er forskjellen mellom port forwarding og port triggering
Så nå skal vi håndtere en vindusbasert pop-up ved hjelp av Robot-klasse.
Robotklasse er et java-basert verktøy som etterligner tastatur- og mushandlingene.
Før vi går videre, la oss ta et øyeblikk av å se på applikasjonen under test (AUT).
Forklaring på applikasjon under test
Som en applikasjon som testes, bruker vi “gmail.com”. Jeg tror at applikasjonen ikke krever flere introduksjoner.
Scenario skal automatiseres
- Start nettleseren og åpne applikasjonen - “gmail.com”
- Skriv inn gyldig brukernavn og passord
- Klikk på påloggingsknappen
- Klikk på skriveknappen
- Klikk på vedleggsikonet
- Velg filene som skal lastes opp med vindubasert popup.
WebDriver-kode ved bruk av robotklasse
Vær oppmerksom på at vi for å lage skript bruker “Learning_Selenium” -prosjektet som ble opprettet i den tidligere opplæringen.
Trinn 1 : Opprett en ny java-klasse kalt “DemoWindowAlert” under “Learning_Selenium” -prosjektet.
Steg 2 : Kopier og lim inn koden nedenfor i klassen “DemoWindowAlert.java”.
Nedenfor er testskriptet som tilsvarer ovennevnte scenario.
import java.awt.Robot;
importere java.awt.event.KeyEvent; import org.junit.After; import org.junit.Before; import org.junit.Test; importer org.openqa.selenium.By; importer org.openqa.selenium.WebDriver; importer org.openqa.selenium.firefox.FirefoxDriver; offentlig klasse DemoWindowAlert {WebDriver driver; @Før offentlig ugyldig setUp () {driver = ny FirefoxDriver (); driver.get ('https://gmail.com'); driver.manage (). vindu (). maksimere (); } @ Test offentlig ugyldig testWindowAlert () kaster Unntak {// skriv inn en gyldig e-postadressedriver.findElement (By.id ('Email')). SendKeys ('TestSelenium1607@gmail.com '); // skriv inn en gyldig passorddriver.findElement (By.id ('Passwd')). sendKeys ('TestSelenium'); // klikk på påloggingsknappdriver.findElement (By.id ('signIn')). klikk (); Tråd. Søvn (30000); // klikk på komponentknappdriver.findElement (By.xpath ('// div (@ class =' z0 ') // div (inneholder (tekst (),' COMPOSE '))')). klikk (); // klikk på ikonet for vedleggfiler driver.findElement (By.xpath ('// div (inneholder (@ kommando,' Filer ')) // div (inneholder (@ klasse,' aaA '))')). klikk ( ); // oppretter forekomst av robotklasse (Et java-basert verktøy) Robot rb = ny robot (); // trykke på tastene ved hjelp av keyPress og 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 offentlig ugyldighet tearDown () {driver.quit (); }} Gjennomgang av kode
Importer uttalelser
importer java.awt.Robot - Importer denne pakken før manusopprettingen Pakkens referanser til Robot-klassen i java som kreves simulerer tastatur- og mushendelser.
importer java.awt.event.KeyEvent - Pakken lar brukeren bruke keyPress og keyRelease hendelser på et tastatur.
Objektoppretting for robotklasse
Robot rb = ny robot ();
Vi lager en referansevariabel for Robot-klassen og instantierer den.
KeyPress og KeyRelease-hendelser
rb.keyPress (KeyEvent.VK_D);
rb.keyRelease (KeyEvent.VK_D);
KeyPress- og keyRelease-metodene simulerer at brukeren trykker og slipper en bestemt tast på henholdsvis tastaturet.
Konklusjon
I denne veiledningen prøvde vi å gjøre deg kjent med WebDrivers Alert-klasse som brukes til å håndtere nettbaserte popup-vinduer. Vi orienterte deg også om Robot-klassen som kan brukes til å fylle ut verdien i det vindusbaserte varselet ved hjelp av keyPress og keyRelease hendelser.
Artikkelsammendrag:
- Varsler er en liten rute som vises på skjermen for å gi deg noen form for informasjon eller for å advare deg om en potensielt skadelig operasjon, eller det kan til og med be deg om tillatelser for operasjonen.
- Det er populært to typer varsler -
- Windows-baserte popup-vinduer
- Nettbaserte popup-varsler
- Før selve skriptingen, må vi importere en pakke for å kunne lage et WebDriver-skript for å håndtere en rullegardin og gjøre Select-klassen tilgjengelig.
- WebDriver tilbyr brukerne en veldig effektiv måte å håndtere disse popup-vinduene på ved hjelp av alarmgrensesnitt.
- ugyldig avskjed () - Den avskjedige() metoden klikker på “Avbryt” -knappen så snart popup-vinduet vises.
- ugyldig godta () - Den aksepterer() metoden klikker på “Ok” -knappen så snart popup-vinduet vises.
- String getText () - Den getText () metoden returnerer teksten som vises i varselboksen.
- ugyldig sendKeys (String stringToSend) - Den sendKeys () metoden angir det angitte strengemønsteret i varselboksen.
- Håndtering av vindusbaserte popup-vinduer har alltid vært litt vanskelig, ettersom vi vet at Selenium er et verktøy for automatiseringstesting som bare støtter nettapplikasjonstesting, det vil si at det ikke støtter Windows-baserte applikasjoner, og vindusvarsling er en av dem.
- Robotklasse er et java-basert verktøy som etterligner tastatur- og mushandlingene og effektivt kan brukes til å håndtere vindusbasert pop-up ved hjelp av tastaturhendelser.
- KeyPress- og keyRelease-metodene simulerer at brukeren trykker og slipper en bestemt tast på henholdsvis tastaturet.
Neste opplæring # 17 : I den kommende opplæringen vil vi diskutere om de forskjellige andre ofte brukte WebDriver-kommandoer . Vi vil kaste lys over emner som unntakshåndtering og iframe-håndtering. Vi vil også diskutere om få kommandoer gitt i WebDriver.
Vi vil forklare disse emnene med raske eksempler for å gjøre dem forståelige for leserne å utøve disse konseptene i deres daglige skript.
Merknad for leserne : Inntil da, hold deg oppdatert og automatiser websidene som har nettbaserte og vindusbaserte popup-vinduer ved hjelp av WebDriver-verktøyet - 'Alert class' og Java utility - 'Robot Class'.
Legg gjerne inn spørsmål / kommentarer om dette eller andre tidligere opplæringsprogrammer i kommentarene nedenfor.
Anbefalt lesing
- Agurk Selen Tutorial: Agurk Java Selen WebDriver Integration
- Introduksjon til Selenium WebDriver - Selenium Tutorial # 8
- Implementering av vårt første WebDriver Script - Selenium WebDriver Tutorial # 10
- WebDriver Hele installasjonen og installasjonen med Eclipse - Selenium Tutorial # 9
- Kontroller synligheten til nettelementer ved hjelp av forskjellige typer WebDriver-kommandoer - Selenium-veiledning nr. 14
- GeckoDriver Selenium Tutorial: Hvordan bruke GeckoDriver i Selenium-prosjekter
- Integrasjon av Jenkins med Selenium WebDriver: trinnvis veiledning
- Effektiv Selen Scripting og feilsøking av scenarier - Selenium Tutorial # 27