Poikkeuskäsittely sisään Selenium Verkkoajuri (tyypit)
⚡ Älykäs yhteenveto
Poikkeuskäsittely Selenium WebDriver estää epäonnistuneen pysäytyskomennonping kokonainen koeajo. Java try-catch, useita catch-blokkeja, throw, throws ja lopuksi jokainen antaa skriptille erilaisen tavan toipua.
Mikä on poikkeus?
Poikkeus on virhe, joka tapahtuu ohjelman suorituksen aikana. Ohjelman suorituksen aikana ohjelmointikieli luo poikkeuksen, joka on käsiteltävä, muuten ohjelma kaatuu.
Poikkeus osoittaa, että vaikka tapahtuma voi tapahtua, tämäntyyppinen tapahtuma tapahtuu harvoin. Kun metodi ei pysty käsittelemään poikkeusta, se heitetään kutsujafunktiolle. Java, joka ajaa eniten Selenium sviiteissä jokainen WebDriver-poikkeus on tarkistamaton, joten kääntäjä ei koskaan pakota sinua nappaamaan sitä – käsittelemätön virhe ilmenee vasta suorituksen aikana.
Poikkeustyypit Selenium web-ajuri
WebDriverException on hierarkian perusluokka, ja jokainen sen alla oleva poikkeus periytyy siitä. Taulukossa luetellaan kaikki 41 poikkeusta, joihin saatat törmätä, sekä ehto, joka aiheuttaa kunkin poikkeustyypin.
| # | Poikkeus | Kun se tapahtuu |
|---|---|---|
| 1 | ElementNotVisibleException | DOM-elementin olemassa olevalla elementillä on piilotettu ominaisuusjoukko. |
| 2 | Elementtiä ei valittava poikkeus | Elementti on DOM:ssa, mutta sitä ei voida valita, joten vuorovaikutus sen kanssa on mahdotonta. |
| 3 | NoSuchElementException | Elementtiä ei löytynyt haulla paikannin toimitukseen. |
| 4 | NoSuchFrameException | runko Vaihdettavaa kohdetta ei ole olemassa. |
| 5 | NoAlertPresentException | Vaihto johonkin hälytys toimii, kun hälytystä ei näytetä. |
| 6 | NoSuchWindowException | Vaihdettavaa ikkunakohdetta ei ole olemassa. |
| 7 | StaleElementReferenceException | Verkkoelementti on irrotettu nykyisestä DOM. |
| 8 | Istuntoa ei löytynyt -poikkeus | WebDriver toimii sen jälkeen, kun suljet selaimen. |
| 9 | TimeoutException | Komentoa ei suoritettu loppuun ajoissa – esimerkiksi etsittyä elementtiä ei löytynyt odotusajasta. |
| 10 | WebDriverException | Muiden WebDriver-poikkeusten perusluokka; syntyy myös silloin, kun WebDriver toimii heti selaimen sulkemisen jälkeen. |
| 11 | YhteysSuljettuPoikkeus | Kuljettajassa on katkos. |
| 12 | ElementClickInterceptedException | Tapahtumia vastaanottava elementti peittää napsautukselle pyydetyn elementin. |
| 13 | ElementNotInteractiveException | Elementti on läsnä DOMissa, mutta sen kanssa on mahdotonta olla vuorovaikutuksessa. |
| 14 | Virhe vastauksessaPoikkeus | Jokin epäonnistui vuorovaikutuksessa kohteen kanssa Firefox laajennus tai etäohjainpalvelin. |
| 15 | Virheenkäsittelijä.Tuntematonpalvelinpoikkeus | Käytetään paikkamerkkinä, kun palvelin palauttaa virheen ilman pinoa trace. |
| 16 | ImeActivationFailedException | IME-moottorin aktivointi epäonnistui. |
| 17 | ImeNotAvailableException | IME-tuki ei ole käytettävissä. |
| 18 | Epävarma varmennepoikkeus | Navigointi sai käyttäjäagentin painamaan todistusvaroitus, minkä virheellinen tai vanhentunut TLS-varmenne voi aiheuttaa. |
| 19 | Virheellinen argumenttipoikkeus | Argumentti ei kuulu odotettuun tyyppiin. |
| 20 | Virheellinen evästeverkkotunnuksen poikkeus | A pikkuleipä lisätään eri verkkotunnuksen alle nykyisen sijaan URL. |
| 21 | Virheellisten koordinaattien poikkeus | Yhdistetty vuorovaikutusoperaatio ei ole kelvollinen. |
| 22 | InvalidElementStateException | Komentoa ei voida suorittaa loppuun, koska elementti on virheellinen. |
| 23 | InvalidSessionIdException | Annettu istuntotunnus ei ole aktiivisten istuntojen joukossa, joten sitä ei ole olemassa tai se on passiivinen. |
| 24 | Virheellinen vaihtoTargetPoikkeus | Kehystä tai ikkunakohdetta, johon vaihdetaan, ei ole olemassa. |
| 25 | JavascriptPoikkeus | Suorituksen aikana tapahtui virhe JavaKäyttäjän antama skripti. |
| 26 | JsonException | Istuntoa pyydetään, kun istuntoa ei ole luotu. |
| 27 | NoSuchAttributeException | Elementin attribuuttia ei löytynyt. |
| 28 | LiikkuaTargetRajojen ulkopuolella oleva poikkeus | ActionChains move()-metodille annettu kohde ei ole kelvollinen — esimerkiksi "out of the document". |
| 29 | NoSuchContextException | ContextAware, joka suorittaa mobiililaitteiden testausta, ei löydä pyydettyä kontekstia. |
| 30 | Ei tällaista evästepoikkeusta | Annettua polkunimeä vastaavaa evästettä ei löytynyt parhaillaan selattavan asiakirjan evästeistä. |
| 31 | Ei löytynyt -poikkeusta | WebDriverException-poikkeuksen alaluokka, joka syntyy, kun DOM-elementtiä ei ole olemassa. |
| 32 | RemoteDriverServerException | Palvelin ei vastaa, koska kuvatut ominaisuudet eivät ole oikein. |
| 33 | ScreenshotException | Näyttöä ei voi kaapata. |
| 34 | SessionNotCreatedException | Uutta istuntoa ei voitu luoda onnistuneesti. |
| 35 | UnableToSetCookieException | Kuljettaja ei pysty asettamaan evästettä. |
| 36 | Odottamaton tunnisteen nimen poikkeus | Tukiluokka ei saanut odotettua verkkoelementtiä. |
| 37 | Käsittelemätön hälytyspoikkeus | Hälytys on olemassa, mutta WebDriver ei pysty suorittamaan hälytystoimintoa. |
| 38 | Odottamaton hälytys nykyinen poikkeus | Odottamaton hälytys tulee näkyviin. |
| 39 | Tuntemattoman menetelmän poikkeus | Pyydetty komento vastaa tunnettua URL mutta ei menetelmää kyseiseen tarkoitukseen URL. |
| 40 | SaavuttamatonSelainPoikkeus | Selainta ei voi avata, tai se kaatui jostain syystä. |
| 41 | Ei-tuettu komentopoikkeus | Etä-WebDriver ei lähetä odotettuja kelvollisia komentoja. |
Kolme hallitsevaa päivittäistä virheenkorjausta: NoSuchElementException tarkoittaa väärää XPath tai elementtiä, jota ei ole renderöity, TimeoutException tarkoittaa, että odotusaika on liian lyhyt AJAX vastaus, ja StaleElementReferenceException seuraa dynaaminen renderöidä uudelleen.
Kuinka käsitellä poikkeuksia Selenium
Tässä ovat vakiorakenteet poikkeusten käsittelyyn Selenium WebDriver. Jokainen on yksinkertainen Java, joten se toimii missä tahansa WebDriver-skripti ilman ylimääräisiä kirjastoja.
Vaihe 1) Yritä kiinni
Tämä metodi voi havaita poikkeuksia käyttämällä avainsanojen try ja catch yhdistelmää. try-komento merkitsee lohkon alun ja catch sijoitetaan try-lohkon loppuun, jossa se ratkaisee poikkeuksen.
try { // Code } catch (Exception e) { // Code for Handling exception }
Vaihe 2) Useita kiinnityslohkoja
Poikkeuksia on erityyppisiä, ja yksi koodilohko voi aiheuttaa useamman kuin yhden. Useiden catch-lohkojen avulla voit käsitellä jokaista tyyppiä erikseen omalla koodillaan. Voit käyttää useampaa kuin kahta catch-lohkoa, eikä lisättävien lohkojen lukumäärälle ole rajoitusta.
try { //Code } catch (ExceptionType1 e1) { //Code for Handling Exception 1 } catch (ExceptionType2 e2) { //Code for Handling Exception 2 }
Vaihe 3) Heitä
Kun haluat luoda poikkeuksen, throw-avainsana antaa sen käsiteltäväksi suorituksen aikana. Käytä throw-avainsanaa, kun välität poikkeuksen eteenpäin sen sijaan, että ratkaisisit sen nykyisessä metodissa.
public static void anyFunction() throws Exception{ try { // write your code here } catch (Exception b) { // Do whatever you want to perform // Throw the Exception back to the system throw(b); } }
Vaihe 4) Useita poikkeuksia
Voit mainita erilaisia poikkeuksia throws-lausekkeessa.
public static void anyFunction() throws ExceptionType1, ExceptionType2{ try { // write your code here } catch (ExceptionType1 e1) { // Code to handle exception 1 } catch (ExceptionType2 e2) { // Code to handle exception 2 }
Vaihe 5) Lopuksi
Avainsana finally luo lohkon try-lohkon alapuolelle. Se suoritetaan riippumatta siitä, tapahtuiko poikkeus, joten se on oikea paikka sulkea ajuri tai vapauttaa tiedostokahva.
try { //Code } catch (ExceptionType1 e1) { //Catch block } catch (ExceptionType2 e2) { //Catch block } catch (ExceptionType3 e3) { //Catch block } finally { //The finally block always executes. }
Poikkeustietojen näyttämismenetelmät
Kun poikkeus havaitaan, itse objekti sisältää diagnostiikkatiedot. Voit näyttää ne seuraavilla tavoilla:
| Menetelmä | Mitä se raportoi |
|---|---|
| printStackTrace() | Tulostaa pinon trace, poikkeuksen nimi ja muu hyödyllinen kuvaus. |
| toString () | Palauttaa tekstiviestin, jossa kuvataan poikkeuksen nimi ja kuvaus. |
| getMessage() | Näyttää poikkeuksen kuvauksen yksinään. |
Yhdistä nämä catch-lohkon sisältä otettuun kuvakaappaukseen, niin epäonnistunut suoritus näyttää sekä mikä hajosi että miltä sivu näytti.
