Oppdater siden ved å bruke Selenium Webdriver
⚡ Smart oppsummering
Oppdatere en side i Selenium WebDriver laster inn gjeldende URL slik at hvert element gjengis før påstander kjøres, og rammeverket tilbyr fem forskjellige kommandoer som oppnår samme omlasting på forskjellige måter.

Under testautomatisering av en nettbasert applikasjon må siden oppdateres flere ganger for at alle webelementene skal lastes inn fullstendig. Ved første sideinnlasting kan noen webelementer lastes inn, mens det kreves en andre sideoppdatering før alle vises. Dette kan gjøres ved hjelp av oppdateringskommandoen som leveres av Selenium WebDriver.
Slik oppdaterer du siden Selenium
Nettleseroppdatering kan utføres på følgende måter Selenium. Vi vil diskutere de nedenfor nevnte måtene i detalj gjennom artikkelen.
- driver.navigate().refresh()-kommandoen
- Get-metoden
- Send nøkler kommando
- Navigeringsmetode
- driver.navigate().to() kommando
1) driver.navigate().refresh() Kommando
Dette er den innebygde metoden for å utføre en sideoppdateringsoperasjon levert av Selenium WebDriver. Denne kommandoen er den mest brukte kommandoen i testautomatisering for å utføre en sideoppdateringsoperasjon. Oppdateringskommandoen kan brukes på en enkel måte som nevnt nedenfor.
driver.get("https://demo.guru99.com/selenium/guru99home/");
driver.navigate().refresh();
Navigasjon er et grensesnitt som brukes til å utføre forskjellige nettleseroperasjoner, som å navigere til forrige side, navigere til neste side, oppdatere siden og lukke nettleseren. Metoder i navigasjonsgrensesnittet kan nås ved hjelp av kommandoen driver.navigate(). Oppdateringsmetoden i navigasjonsgrensesnittet tar ingen argumenter og returnerer ingen verdi.
Eksempel:
Testscenario:
- Åpne Chrome-nettleseren med nettsiden https://demo.guru99.com/selenium/guru99home/
- Når siden er lastet inn, oppdaterer du nettsiden ved hjelp av driver.navigate().refresh()-metoden.
- Lukk nettleseren ved hjelp av driver.close()-metoden
Code
package Guru99Demo; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class RefreshDemo { public static void main(String args[]) throws InterruptedException { System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://demo.guru99.com/selenium/guru99home/"); driver.manage().window().maximize(); driver.navigate().refresh(); driver.close(); } }
⚠️ Versjonsmerknad: Selenium Leder sendt med Selenium 4.6 og laster ned den samsvarende nettleserdriveren automatisk, slik at System.setProperty-linjen ovenfor ikke lenger er nødvendig på en gjeldende versjon — new ChromeDriver() er nok. Den opprinnelige linjen beholdes fordi den fortsatt er korrekt for Selenium 3-stiloppsett eksemplet ble skrevet mot.
Code Utgang:
På den første siden lastes inn, gjengis demo-hjemmesiden som vist nedenfor.
Etter at siden ble oppdatert, har videoen på siden endret seg, noe som bekrefter at innlastingen faktisk skjedde.
Flere andre måter å oppdatere en side på
Oppdateringsmetoden er ikke den eneste måten å laste inn data på. De fire teknikkene nedenfor gir samme resultat og er verdt å vite, fordi et låst program eller en sta nettleser av og til blokkerer en av dem.
2) Get-metoden
get-metoden kan brukes rekursivt for å oppdatere en side. For å oppnå dette må vi sende en annen metode som et argument til get-metoden.
Eksempel:
driver.get("https://www.guru99.com");
driver.get(driver.getCurrentUrl());
3) Navigeringsmetoden
Denne metoden bruker samme rekursjonskonsept som nevnt ovenfor. Metoden getCurrentUrl() sendes som et argument til driver.navigate().to()-metoden.
Eksempel:
driver.get("https://www.guru99.com");
driver.navigate().to(driver.getCurrentUrl());
4) Send nøkkelmetode ved bruk av F5-tasten
Dette er den nest mest brukte metoden for å oppdatere en side på SeleniumDen tar oppdateringstasten (F5) som et argument til sendKeys-metoden. Siden sendKeys bare fungerer på webelementer i stedet for i nettleseren, må vi først identifisere et gyldig webelement på nettsiden og deretter bruke sendKeys-metoden. Dette kan gjøres som vist nedenfor.
Eksempel:
driver.get("https://www.guru99.com"); driver.findElement(By.id("username")).sendKeys(Keys.F5);
Fordi tastetrykket leveres til et element i stedet for nettleserens Chrome, avhenger denne ruten av elementet som holder fokus. Hvis locator samsvarer med et felt som ikke kan ta fokus, nøkkelen svelges og siden lastes aldri inn på nytt.
5) Send nøkkelmetode ved bruk av ASCII Code
Denne metoden bruker samme konsept som ovenfor, men i stedet for å sende F5-tasten som et argument, sender vi kodepunktet til oppdateringstasten som et argument. Dette kan gjøres som vist nedenfor.
driver.get("https://www.guru99.com"); driver.findElement(By.id("username")).sendKeys("\uE035");
Verdien \uE035 er WebDriver Unicode-kodepunktet som protokollen tilordner til F5, så dette kodestykket og det forrige er likeverdige.
Slik oppdaterer du en side ved hjelp av JavaScriptExecutor
Alle nettlesere eksponerer en innlastingsfunksjon for sideskript, og Selenium kan ringe det gjennom JavascriptUtførergrensesnitt. Dette er den vanlige reserveløsningen når WebDriver-oppdateringskommandoen blir fanget opp av programmet eller en nettleserutvidelse.
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("location.reload();");
To varianter er verdt å huske på:
- plassering.last inn på nytt() utfører en normal innlasting og kan betjene siden fra hurtigbufferen.
- historie.gå(0) er en eldre ekvivalent som noen eldre pakker fortsatt bruker.
Utførelsesruten kjører inne i siden, så den venter ikke på det nye dokumentet alene. Følg den med en eksplisitt venting akkurat som du ville gjort etter driver.navigate().refresh(), og husk at en skriptdrevet innlasting ikke vil tømme en dialogboks på nettlesernivå. Hvis applikasjonen som testes laster inn innholdet asynkront, gjelder samme forsiktighet som når håndtering av AJAX-kall i Selenium webdriver.
Slik unngår du StaleElementReferenceException etter en oppdatering
En oppdatering ødelegger den gjeldende DOM-en og bygger en ny. Hvert WebElement som fanges opp før innlastingen peker nå på en node som ikke lenger eksisterer, så det neste kallet mot den kaster StaleElementReferenceException. Dette er den vanligste feilen som følger en sideoppdatering.
Tre vaner fjerner nesten alle disse feilene:
- Finn etter, aldri før. Lagre By-lokatoren i stedet for WebElement, og kall findElement på nytt når innlastingen er fullført.
- Vent på et skikkelig signal. En eksplisitt venting på synligheten til et element som bare eksisterer etter omlasting er langt mer pålitelig enn en fast søvn.
- Oppdater, og les deretter på nytt. Aldri overfør en tekstverdi eller et attributt som er registrert før innlasting, til en påstand som er gjort etter den.
Mønsteret nedenfor gjelder alle tre:
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); driver.navigate().refresh(); WebElement search = wait.until( ExpectedConditions.visibilityOfElementLocated(By.id("username"))); search.sendKeys("guru99");
WebDriverWait tar en varighet på Selenium 4, som er en endring fra heltallssekunder-konstruktøren som brukes i Selenium 3. Mer omfattende teknikker for disse feilene er dekket i vår veiledning til unntakshåndtering i Selenium.
Sammenligning av Selenium Metoder for sideoppdatering
Alle seks kommandoene laster siden på nytt, men de er forskjellige i hva de er avhengige av og hvordan de feiler.
| Metode | Kommer an på | Laster på nytt via | Når det er det riktige valget |
|---|---|---|---|
| driver.navigate().refresh() | Ikke noe ekstra | Kommandoen for nettleserinnlasting | Nesten alltid – standardinnstillingen |
| driver.get(driver.getCurrentUrl()) | En lesbar strøm URL | En frisk navigasjon | Når du også vil slette historieoppføringen |
| driver.navigate().to(driver.getCurrentUrl()) | En lesbar strøm URL | En frisk navigasjon | Samme som ovenfor, skrevet via navigasjonsgrensesnittet |
| sendKeys(Keys.F5) | Et fokuserbart element | Et tastetrykk | Når du bevisst tester tastaturbanen |
| sendKeys(“\uE035”) | Et fokuserbart element | Et tastetrykk | Identisk med F5, skrevet som et kodepunkt |
| JavascriptUtførerlokasjon.reload() | Skripting aktivert | Et sideskript | Når WebDriver-kommandoen er blokkert |
Start med oppdater-kommandoen, og bruk bare en ny rad når den mislykkes av en grunn du forstår. Samme prioriterte rekkefølge gjelder når du maksimere eller endre størrelsen på nettleservinduet: foretrekker det innebygde WebDriver-kallet og behandler skriptruten som reserve.


