Come gestire avvisi e popup in Selenium?
โก Riepilogo intelligente
Avvisi e popup in Selenium sono JavaFinestre di dialogo e finestre secondarie degli script che bloccano il flusso di automazione. Questo articolo spiega come identificare avvisi semplici, di richiesta e di conferma, passare a essi con WebDriver e gestire piรน finestre utilizzando getWindowHandles().

Che cos'รจ un avviso in Selenium?
An Avviso in Selenium รจ un piccolo JavaFinestra di dialogo script che appare sullo schermo per fornire all'utente informazioni o notifiche. Puรฒ confermare un'azione specifica, richiedere l'autorizzazione per eseguire un'operazione o visualizzare un messaggio di avviso.
In questo tutorial imparerai come gestire i popup in Selenium e i diversi tipi di avvisi presenti nelle applicazioni web analisiVedremo anche come gestire un avviso in Selenium WebDriver e come accettarlo o rifiutarlo a seconda del tipo di avviso.
Tipi di avvisi in Selenium
JavaLo script espone tre finestre di dialogo di avviso che Selenium deve essere gestito in modo diverso.
1) Simple Alert
Il semplice avviso visualizza informazioni o un avviso sullo schermo. L'utente puรฒ confermarlo solo cliccando OK.
2) Prompt Alert
Il messaggio di avviso richiede all'utente di inserire un input. Selenium WebDriver puรฒ digitarlo utilizzando sendKeys("input...").
3) Confirmation Alert
L'avviso di conferma chiede all'utente di approvare o annullare un'operazione. Espone entrambi OK and Annulla pulsanti.
Come gestire un avviso in Selenium webdriver
Migliori Alert interfaccia in Selenium webdriver Vengono illustrati quattro metodi che coprono ogni interazione di avviso.
- annullare il licenziamento() โ clicca il Annulla pulsante.
driver.switchTo().alert().dismiss();
- non accettare() โ clicca il OK pulsante.
driver.switchTo().alert().accept();
- Stringa getText() โ cattura il messaggio di avviso.
driver.switchTo().alert().getText();
- void sendKeys(String stringToSend) โ digita il testo in un prompt di avviso.
driver.switchTo().alert().sendKeys("Text");
Eclipse autocomplete mostra i metodi di avviso disponibili dopo typing alert. sulla riga dell'editor. Passa dalla finestra principale all'avviso in qualsiasi momento utilizzando Selenium'S .passa a() metodo.
Esempio funzionante: Elimina la demo del cliente
Automatizziamo il seguente scenario. Useremo il Guru99 siti dimostrativi per illustrare Selenium gestione degli avvisi.
Passo 1) Avvia il browser e apri https://demo.guru99.com/test/delete_customer.php.
Passo 2) Inserisci un ID cliente qualsiasi.
Passo 3) Clicca su Invio pulsante.
Passo 4) Accetta o ignora l'avviso di conferma risultante.
Selenium Java Code: Maneggiare Confirmation Alert
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.Alert;
public class AlertDemo {
public static void main(String[] args) throws NoAlertPresentException, InterruptedException {
// Selenium 4 ships Selenium Manager, so an explicit driver path is no longer required.
WebDriver driver = new ChromeDriver();
// Open the Delete Customer demo page
driver.get("https://demo.guru99.com/test/delete_customer.php");
driver.findElement(By.name("cusid")).sendKeys("53920");
driver.findElement(By.name("submit")).submit();
// Switch to the confirmation alert
Alert alert = driver.switchTo().alert();
// Capture the alert message
String alertMessage = alert.getText();
System.out.println(alertMessage);
Thread.sleep(5000);
// Accept the alert
alert.accept();
driver.quit();
}
}
Produzione: Il browser apre la pagina Elimina cliente, inserisce l'ID cliente, accetta la notifica di conferma e rimuove il record dall'applicazione demo.
Come gestire i popup Windows in Selenium webdriver
Quando l'automazione deve funzionare su piรน finestre del browser, il test deve passare da una finestra all'altra e tornare alla finestra principale dopo ogni operazione. Selenium WebDriver mette a disposizione due metodi che rendono possibile tutto ciรฒ.
driver.getWindowHandles()
Restituisce un file Set<String> di ogni handle di finestra aperta. Itera sull'insieme per passare dalla finestra principale a qualsiasi finestra secondaria nell'applicazione.
driver.getWindowHandle()
Restituisce un file String con l'handle univoco della finestra corrente. Catturalo prima di aprire qualsiasi finestra secondaria in modo da poter tornare alla finestra principale in seguito.
Segui questi passaggi per dimostrare la gestione delle finestre rispetto a Guru99 demo popup.
Esempio pratico: commutazione delle finestre
Passo 1) Avvia il browser e apri https://demo.guru99.com/popup.php.
Passo 2) Clicca su Clicca qui collegamento. Si apre una nuova finestra secondaria.
Passo 3) La finestra secondaria chiede all'utente di inserire un indirizzo e-mail e di inviare il modulo.
Passo 4) Inserisci l'indirizzo email e invia.
Passo 5) La pagina visualizza le credenziali di accesso restituite dalla demo.
Dopo la visualizzazione delle credenziali:
- Chiudi la finestra del bambino.
- Riportare il focus sulla finestra principale.
Selenium Java Code: Gestisci piรน Windows
import java.util.Iterator;
import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class WindowHandle_Demo {
public static void main(String[] args) throws InterruptedException {
// Selenium 4 auto-resolves the browser driver via Selenium Manager
WebDriver driver = new FirefoxDriver();
driver.get("https://demo.guru99.com/popup.php");
driver.manage().window().maximize();
driver.findElement(By.xpath("//*[contains(@href,'popup.php')]")).click();
String mainWindow = driver.getWindowHandle();
// Capture every open window handle
Set<String> allWindows = driver.getWindowHandles();
Iterator<String> iterator = allWindows.iterator();
while (iterator.hasNext()) {
String childWindow = iterator.next();
if (!mainWindow.equalsIgnoreCase(childWindow)) {
// Switch to the child window
driver.switchTo().window(childWindow);
driver.findElement(By.name("emailid")).sendKeys("gaurav.3n@gmail.com");
driver.findElement(By.name("btnLogin")).click();
// Close the child window
driver.close();
}
}
// Return focus to the main window
driver.switchTo().window(mainWindow);
driver.quit();
}
}
Produzione: Il sito viene lanciato, il CLICCA QUI il link apre una scheda secondaria, Selenium inserisce l'indirizzo email e lo invia, chiude la finestra secondaria e torna alla finestra principale.
Conclusione
- Definiti i tre Selenium Tipi di avviso: semplice, a richiesta e di conferma, con una schermata per ciascuno.
- Gestione degli avvisi dimostrata con WebDriver
Alertinterfaccia utilizzando uno scenario funzionante di eliminazione cliente. - Gestisce piรน finestre del browser catturando gli handle con
getWindowHandle()andgetWindowHandles()e passando dall'uno all'altro.















