Aggiorna la pagina utilizzando Selenium Webdriver
⚡ Riepilogo intelligente
Aggiornamento di una pagina in Selenium WebDriver ricarica l'attuale URL in modo che ogni elemento venga renderizzato prima dell'esecuzione delle asserzioni e il framework offra cinque comandi distinti che ottengono lo stesso ricaricamento in modi diversi.

Durante l'automazione dei test di un'applicazione web, può sorgere la necessità di aggiornare la pagina più volte affinché tutti gli elementi web vengano caricati completamente. Al caricamento iniziale della pagina potrebbero essere caricati solo alcuni elementi web, mentre è necessario un secondo aggiornamento della pagina affinché vengano visualizzati tutti. Questo può essere fatto utilizzando il comando di aggiornamento fornito da Selenium WebDriver.
Come aggiornare la pagina in Selenium
L'operazione di aggiornamento del browser può essere eseguita utilizzando i seguenti metodi: Selenium. Discuteremo i modi indicati di seguito in dettaglio in tutto l'articolo.
- comando driver.navigate().refresh()
- Ottieni il metodo
- Comando Invia chiavi
- Metodo Navigazione
- driver.navigate().to() comando
1) driver.navigate().refresh() Comando
Questo è il metodo integrato per eseguire un'operazione di aggiornamento della pagina fornito da Selenium WebDriver. Questo comando è il più comunemente utilizzato nell'automazione dei test per eseguire un'operazione di aggiornamento della pagina. Il comando di aggiornamento può essere utilizzato in modo semplice, come descritto di seguito.
driver.get("https://demo.guru99.com/selenium/guru99home/");
driver.navigate().refresh();
L'interfaccia di navigazione viene utilizzata per eseguire diverse operazioni del browser, come la navigazione alla pagina precedente, alla pagina successiva, l'aggiornamento della pagina e la chiusura del browser. I metodi dell'interfaccia di navigazione sono accessibili tramite il comando driver.navigate(). Il metodo refresh dell'interfaccia di navigazione non accetta argomenti e non restituisce alcun valore.
Esempio:
Scenario di prova:
- Apri il browser Chrome con la pagina web https://demo.guru99.com/selenium/guru99home/
- Una volta caricata correttamente la pagina, aggiorna la pagina web utilizzando il metodo driver.navigate().refresh().
- Chiudi il browser utilizzando il metodo driver.close()
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(); } }
⚠️ Nota sulla versione: Selenium Manager spedito con Selenium 4.6 e scarica automaticamente il driver del browser corrispondente, quindi la riga System.setProperty sopra riportata non è più necessaria nelle versioni attuali. new ChromeDriver() è sufficiente. La linea originale viene mantenuta perché è ancora corretta per il Selenium 3 stili di configurazione rispetto ai quali è stato scritto l'esempio.
Code Produzione:
Al caricamento iniziale della pagina, la home page demo viene visualizzata come mostrato di seguito.
Dopo l'aggiornamento della pagina, il video visualizzato è cambiato, confermando che il ricaricamento è effettivamente avvenuto.
Esistono molti altri modi per aggiornare una pagina.
Il metodo di aggiornamento non è l'unico modo per ricaricare la pagina. Le quattro tecniche seguenti producono lo stesso risultato ed è utile conoscerle, perché a volte un'applicazione bloccata o un browser ostinato possono impedirne il corretto funzionamento.
2) Metodo Get
Il metodo `get` può essere utilizzato in modo ricorsivo per aggiornare una pagina. Per fare ciò, è necessario passare un altro metodo come argomento al metodo `get`.
Esempio:
driver.get("https://www.guru99.com");
driver.get(driver.getCurrentUrl());
3) Metodo di navigazione
Questo metodo utilizza lo stesso concetto di ricorsione menzionato in precedenza. Il metodo getCurrentUrl() viene passato come argomento al metodo driver.navigate().to().
Esempio:
driver.get("https://www.guru99.com");
driver.navigate().to(driver.getCurrentUrl());
4) Metodo di invio dei tasti tramite il tasto F5
Questo è il secondo metodo più comunemente utilizzato per aggiornare una pagina SeleniumIl metodo sendKeys accetta il tasto di aggiornamento (F5) come argomento. Poiché sendKeys funziona solo sugli elementi web e non sul browser, è necessario prima identificare un elemento web valido sulla pagina web e quindi utilizzare il metodo sendKeys. Questo può essere fatto come mostrato di seguito.
Esempio:
driver.get("https://www.guru99.com"); driver.findElement(By.id("username")).sendKeys(Keys.F5);
Poiché la pressione del tasto viene inviata a un elemento anziché al browser, questo percorso dipende dall'elemento che detiene il focus. Se l'elemento locator corrisponde a un campo che non può ricevere il focus, il tasto viene ignorato e la pagina non si ricarica mai.
5) Metodo di invio tasti tramite ASCII Code
Questo metodo utilizza lo stesso concetto di cui sopra, ma invece di passare il tasto F5 come argomento, inviamo il punto di codice del tasto di aggiornamento come argomento. Ciò può essere realizzato come mostrato di seguito.
driver.get("https://www.guru99.com"); driver.findElement(By.id("username")).sendKeys("\uE035");
Il valore \uE035 è il punto di codice Unicode di WebDriver che il protocollo mappa a F5, quindi questo frammento e il precedente sono equivalenti.
Come aggiornare una pagina utilizzando JavaScriptExecutor
Ogni browser espone una funzione di ricaricamento agli script della pagina e Selenium può chiamarlo tramite il JavascriptInterfaccia dell'esecutore. Questa è la soluzione di ripiego usuale quando il comando di aggiornamento di WebDriver viene intercettato dall'applicazione o da un'estensione del browser.
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("location.reload();");
Due varianti meritano di essere ricordate:
- location.reload() Esegue un normale ricaricamento e può servire la pagina dalla cache.
- history.go(0) è un equivalente più vecchio che alcune suite legacy utilizzano ancora.
Il percorso dell'esecutore viene eseguito all'interno della pagina, quindi non attende autonomamente il nuovo documento. Seguitelo con un'attesa esplicita esattamente come fareste dopo driver.navigate().refresh() e ricordate che un ricaricamento guidato da script non cancellerà una finestra di dialogo a livello del browser. Se l'applicazione in fase di test carica il suo contenuto in modo asincrono, si applica la stessa attenzione di quando gestione delle chiamate AJAX in Selenium webdriver.
Come evitare StaleElementReferenceException dopo un aggiornamento
Un aggiornamento distrugge il DOM corrente e ne crea uno nuovo. Ogni WebElement catturato prima del ricaricamento ora punta a un nodo che non esiste più, quindi la successiva chiamata su di esso genera un'eccezione StaleElementReferenceException. Questo è l'errore più comune che si verifica dopo un aggiornamento di pagina.
Tre abitudini eliminano quasi tutti questi fallimenti:
- Individuare dopo, mai prima. Memorizza il localizzatore By anziché WebElement e richiama findElement una volta terminato il ricaricamento.
- Attendi un segnale reale. Attendere esplicitamente la visibilità di un elemento che esiste solo dopo il ricaricamento è molto più affidabile di un'attesa fissa.
- Aggiorna la pagina, poi rileggila. Non utilizzare mai un valore di testo o un attributo acquisito prima del ricaricamento in un'asserzione effettuata successivamente.
Lo schema seguente si applica a tutti e 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 prende una durata in Selenium 4, che rappresenta una modifica rispetto al costruttore in secondi interi utilizzato in Selenium 3. Tecniche più ampie per questi guasti sono trattate nella nostra guida a gestione delle eccezioni in Selenium.
Confronto di Selenium Metodi di aggiornamento della pagina
Tutti e sei i comandi ricaricano la pagina, ma differiscono per ciò da cui dipendono e per il modo in cui falliscono.
| Metodo | Dipende da | Ricarica tramite | Quando è la scelta giusta |
|---|---|---|---|
| driver.navigate().refresh() | Niente di più | Il comando di ricaricamento del browser | Quasi sempre — l'impostazione predefinita |
| driver.get(driver.getCurrentUrl()) | Una corrente leggibile URL | Una nuova navigazione | Quando vuoi anche eliminare la voce della cronologia |
| driver.navigate().to(driver.getCurrentUrl()) | Una corrente leggibile URL | Una nuova navigazione | Come sopra, scritto tramite l'interfaccia di navigazione |
| inviaTasti(Tasti.F5) | Un elemento focalizzabile | Una pressione di un tasto | Quando stai testando deliberatamente il percorso della tastiera |
| sendKeys(“\uE035”) | Un elemento focalizzabile | Una pressione di un tasto | Identico a F5, scritto come punto di codice |
| JavascriptEsecutore location.reload() | Scripting abilitato | Uno script di pagina | Quando il comando WebDriver è bloccato |
Inizia con il comando di aggiornamento e passa a un'altra riga solo quando fallisce per un motivo che comprendi. Lo stesso ordine di preferenza si applica quando ingrandire o ridimensionare la finestra del browser: preferisce la chiamata nativa di WebDriver e considera il percorso script come soluzione di ripiego.


