Popular Searches
Popular Course Categories
Popular Courses

JavaScript Alerts

Handling Browser Components

JavaScript Alerts in Selenium

JavaScript Alerts are browser-level dialog boxes generated by JavaScript that require a specific user action before the browser can continue interacting with the web page. In Selenium automation, JavaScript alerts cannot be handled like normal HTML WebElements because they are outside the regular DOM. Selenium provides the Alert interface through which testers can switch to, read, accept, dismiss, and enter text into JavaScript alert dialogs.

Handling alerts is an important part of Selenium WebDriver automation because real-world web applications may display confirmation messages, warnings, authentication prompts, delete confirmations, session notifications, and other JavaScript-based dialogs during test execution.

For structured Selenium learning and practical automation training, visit Selenium Training Course | Selenium Course Demo.


1. What is a JavaScript Alert?

A JavaScript alert is a browser dialog displayed by JavaScript to communicate information to the user or request an action. These dialogs temporarily interrupt normal interaction with the web page until the user responds.

For example:

alert("Record saved successfully");

When this JavaScript executes, the browser displays a dialog containing the message and an OK button.


2. Why JavaScript Alerts are Important in Selenium

Automated test scripts frequently encounter JavaScript dialogs while testing web applications. If Selenium encounters an unexpected alert and the script does not handle it correctly, subsequent browser interactions may fail.

  • Alerts can block interaction with the page.
  • The alert must usually be handled before interacting with the underlying page.
  • Alert text can be verified during testing.
  • Confirmation dialogs can be accepted or dismissed.
  • Prompt dialogs can require text input.
  • Unexpected alerts can cause test execution failures.


3. How JavaScript Alerts Work

A JavaScript alert is created by JavaScript running inside the web application.

Basic flow:

Web Page

   ↓

JavaScript Executes

   ↓

Browser Dialog Appears

   ↓

Selenium Detects Alert

   ↓

driver.switchTo().alert()

   ↓

Accept / Dismiss / Get Text / Send Keys

   ↓

Browser Continues


4. Types of JavaScript Dialogs

The three primary JavaScript dialog types commonly encountered in Selenium are:

Dialog TypeJavaScript MethodTypical ButtonsPurpose
Alertalert()OKDisplays information or warning
Confirmationconfirm()OK / CancelRequests user confirmation
Promptprompt()OK / CancelRequests text input


5. JavaScript alert()

The alert() method displays a simple message and normally provides an OK button.

<script>

alert("Welcome to the application");

</script>

In Selenium, the alert can be accepted using:

Alert alert = driver.switchTo().alert();

alert.accept();


6. JavaScript confirm()

The confirm() method displays a confirmation dialog. It normally provides OK and Cancel buttons.

<script>

confirm("Are you sure you want to delete this record?");

</script>

Clicking OK is equivalent to accepting the alert:

Alert alert = driver.switchTo().alert();

alert.accept();

Clicking Cancel is equivalent to dismissing it:

Alert alert = driver.switchTo().alert();

alert.dismiss();


7. JavaScript prompt()

The prompt() method displays a dialog that allows the user to enter text.

<script>

prompt("Enter your username");

</script>

Selenium can enter text into a prompt using sendKeys().

Alert alert = driver.switchTo().alert();

alert.sendKeys("Manish");

alert.accept();


8. Selenium Alert Interface

Selenium provides the Alert interface for interacting with JavaScript dialogs.

The most commonly used methods are:

MethodPurpose
accept()Clicks the OK button
dismiss()Clicks the Cancel button
getText()Retrieves alert message text
sendKeys()Enters text into a prompt


9. Switching to an Alert

Before interacting with a JavaScript alert, Selenium must switch the driver's focus to the alert.

Alert alert = driver.switchTo().alert();

Alternatively, the statement can be written directly:

driver.switchTo().alert().accept();


10. Accepting an Alert

The accept() method clicks the OK button of the JavaScript dialog.

driver.switchTo().alert().accept();

Typical use cases include:

  • Closing an information alert
  • Confirming deletion
  • Confirming submission
  • Accepting a warning
  • Confirming an action


11. Dismissing an Alert

The dismiss() method clicks the Cancel button when the dialog provides one.

driver.switchTo().alert().dismiss();

This is commonly used when testing negative or cancellation scenarios.


12. Getting Alert Text

The getText() method retrieves the text displayed inside the alert.

Alert alert = driver.switchTo().alert();

String message = alert.getText();

System.out.println(message);

This is useful when the expected alert message is part of the test requirement.


13. Verifying Alert Text

Alert text can be verified using Java assertions.

Alert alert = driver.switchTo().alert();

 

String actualMessage = alert.getText();

String expectedMessage = "Record deleted successfully";

 

Assert.assertEquals(actualMessage, expectedMessage);

 

alert.accept();


14. Sending Text to a Prompt

A prompt allows the user to enter information. Selenium uses the sendKeys() method to provide that input.

Alert alert = driver.switchTo().alert();

 

alert.sendKeys("Test User");

alert.accept();


15. Complete Alert Handling Example

import java.time.Duration;

import org.openqa.selenium.Alert;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

 

public class AlertExample {

    public static void main(String[] args) {

        WebDriver driver = new ChromeDriver();

 

        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));

        driver.manage().window().maximize();

 

        driver.get("https://example.com");

 

        driver.findElement(By.id("alertButton")).click();

 

        Alert alert = driver.switchTo().alert();

 

        System.out.println("Alert Message: " + alert.getText());

 

        alert.accept();

 

        driver.quit();

    }

}


16. Alert Handling Methods Summary

OperationSelenium Code
Switch to alertdriver.switchTo().alert()
Acceptalert.accept()
Dismissalert.dismiss()
Read textalert.getText()
Enter prompt textalert.sendKeys("text")


17. Alert vs HTML Modal

One of the most important concepts in Selenium is understanding the difference between a JavaScript alert and an HTML modal dialog.

JavaScript AlertHTML Modal
Browser-managed dialogPart of the web page DOM
Handled using Alert interfaceHandled using WebElement locators
Use switchTo().alert()Use findElement()
Not normally inspected as a normal DOM elementCan usually be inspected in DevTools
Can block page interactionUsually behaves like page content


18. JavaScript Alert vs Browser Popup

Not every popup displayed by a website is a JavaScript alert.

Popup TypeTypical Selenium Handling
JavaScript Alertdriver.switchTo().alert()
HTML ModalWebElement locators
New Browser WindowWindow handles
New Browser TabWindow handles
Authentication DialogDepends on browser/application implementation


19. Why switchTo().alert() is Required

Selenium normally interacts with elements in the current browsing context. A JavaScript alert is a separate browser-level dialog. Therefore, Selenium must change its current interaction target to the alert.

driver.switchTo().alert();

After switching, Selenium can perform alert-specific operations.


20. What Happens if an Alert is Not Handled?

If an alert is open and the test tries to interact with the underlying page, Selenium may fail because the alert is blocking normal browser interaction.

For example:

driver.findElement(By.id("submit")).click();

 

driver.switchTo().alert().accept();

The sequence is incorrect when the alert appears before the submit interaction can continue. The alert should be handled at the point where it appears.


21. Correct Alert Handling Flow

Perform Action

      ↓

Alert Appears

      ↓

Switch to Alert

      ↓

Read Alert Text if Required

      ↓

Accept or Dismiss

      ↓

Continue Test


22. Alert Handling with Explicit Wait

Alerts may not appear immediately after an action. In such cases, an explicit wait can wait for the alert to become available.

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

 

driver.findElement(By.id("deleteButton")).click();

 

Alert alert = wait.until(ExpectedConditions.alertIsPresent());

 

System.out.println(alert.getText());

 

alert.accept();

alertIsPresent() is useful when the alert appears asynchronously.


23. Why Explicit Wait is Useful for Alerts

  • The alert may appear after a small delay.
  • The page may perform an asynchronous operation before showing the dialog.
  • A fixed sleep may wait too long or too little.
  • An explicit wait can stop as soon as the alert is available.
  • It makes synchronization more targeted.


24. Thread.sleep() with Alerts

A fixed delay can technically be used, but it is generally less desirable for reliable automation.

Thread.sleep(3000);

 

driver.switchTo().alert().accept();

The problem is that the alert may appear before three seconds or after three seconds. An explicit wait is usually more appropriate for dynamic timing.


25. AlertNotPresent Scenario

If Selenium tries to switch to an alert when no alert is currently present, an exception can occur.

driver.switchTo().alert();

When no alert exists, Selenium may throw NoAlertPresentException.


26. Handling NoAlertPresentException

The exception can be handled when the alert is optional or when the test needs controlled recovery.

try {

    Alert alert = driver.switchTo().alert();

    System.out.println(alert.getText());

    alert.accept();

} catch (NoAlertPresentException e) {

    System.out.println("No alert was displayed.");

}

However, exceptions should not simply be swallowed. If an alert was required by the test, the test should normally fail or report the missing alert rather than silently continuing.


27. Optional Alert Handling

Sometimes an application displays an alert only under certain conditions. In such situations, the test can wait briefly for an alert and then continue if it does not appear.

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));

 

try {

    Alert alert = wait.until(ExpectedConditions.alertIsPresent());

    System.out.println(alert.getText());

    alert.accept();

} catch (TimeoutException e) {

    System.out.println("Optional alert did not appear.");

}


28. Alert Text Validation

Validation should compare the actual message with the expected business requirement.

Alert alert = driver.switchTo().alert();

 

String actual = alert.getText();

 

Assert.assertEquals(

    actual,

    "Are you sure you want to delete this record?"

);

 

alert.dismiss();


29. Testing Confirmation Dialogs

Confirmation dialogs are commonly used for destructive operations such as deleting a record.

driver.findElement(By.id("deleteButton")).click();

 

Alert alert = driver.switchTo().alert();

 

Assert.assertEquals(

    alert.getText(),

    "Are you sure you want to delete this record?"

);

 

alert.accept();


30. Testing Cancel Operation

Negative testing should also verify what happens when the user chooses Cancel.

driver.findElement(By.id("deleteButton")).click();

 

Alert alert = driver.switchTo().alert();

 

alert.dismiss();

The test can then verify that the record was not deleted.


31. Testing Prompt Dialogs

A prompt should be tested by entering valid, invalid, empty, boundary, and special-character values when those scenarios are part of the application's requirements.

driver.findElement(By.id("promptButton")).click();

 

Alert alert = driver.switchTo().alert();

 

alert.sendKeys("Automation Tester");

alert.accept();


32. Prompt Testing with Verification

driver.findElement(By.id("promptButton")).click();

 

Alert alert = driver.switchTo().alert();

 

String message = alert.getText();

System.out.println("Prompt Message: " + message);

 

alert.sendKeys("Selenium User");

alert.accept();

 

String result = driver.findElement(By.id("result")).getText();

 

Assert.assertEquals(result, "Selenium User");


33. Handling an Alert After Clicking a Button

A common Selenium scenario is clicking a button that triggers a JavaScript alert.

driver.findElement(By.id("showAlert")).click();

 

Alert alert = driver.switchTo().alert();

 

System.out.println(alert.getText());

 

alert.accept();


34. Handling an Alert After Form Submission

driver.findElement(By.id("username")).sendKeys("testuser");

driver.findElement(By.id("password")).sendKeys("password123");

driver.findElement(By.id("login")).click();

 

Alert alert = driver.switchTo().alert();

 

String message = alert.getText();

 

System.out.println("Alert: " + message);

 

alert.accept();


35. Alert Handling with TestNG

import org.testng.Assert;

import org.testng.annotations.Test;

 

@Test

public void verifyAlert() {

    driver.findElement(By.id("alertButton")).click();

 

    Alert alert = driver.switchTo().alert();

 

    String actualMessage = alert.getText();

 

    Assert.assertEquals(

        actualMessage,

        "Operation completed successfully"

    );

 

    alert.accept();

}


36. Alert Handling in Page Object Model

Alert-related operations can be encapsulated inside page classes when the alert belongs logically to a page action.

public void deleteRecord() {

    deleteButton.click();

}

 

public String getAlertMessage() {

    return driver.switchTo().alert().getText();

}

 

public void acceptAlert() {

    driver.switchTo().alert().accept();

}

 

public void dismissAlert() {

    driver.switchTo().alert().dismiss();

}


37. Creating an Alert Utility

A reusable alert utility can reduce duplicate code across automation tests.

public class AlertHelper {

 

    private WebDriver driver;

 

    public AlertHelper(WebDriver driver) {

        this.driver = driver;

    }

 

    public void acceptAlert() {

        driver.switchTo().alert().accept();

    }

 

    public void dismissAlert() {

        driver.switchTo().alert().dismiss();

    }

 

    public String getAlertText() {

        return driver.switchTo().alert().getText();

    }

 

    public void enterText(String text) {

        driver.switchTo().alert().sendKeys(text);

    }

}


38. Alert Utility Usage

AlertHelper alertHelper = new AlertHelper(driver);

 

driver.findElement(By.id("deleteButton")).click();

 

String message = alertHelper.getAlertText();

 

System.out.println(message);

 

alertHelper.acceptAlert();


39. Alert Handling Best Practices

  • Handle alerts immediately when they appear.
  • Use explicit waits when alert appearance is asynchronous.
  • Validate alert text when it is part of the requirement.
  • Use accept() for OK.
  • Use dismiss() for Cancel.
  • Use sendKeys() for prompt input.
  • Do not treat HTML modals as JavaScript alerts.
  • Avoid unnecessary Thread.sleep().
  • Use reusable alert helper methods in larger frameworks.
  • Report unexpected alerts clearly.


40. Common Mistake: Treating an Alert as a WebElement

Incorrect approach:

WebElement alert = driver.findElement(By.id("alert"));

A native JavaScript alert is not normally handled as a DOM WebElement. The correct approach is:

Alert alert = driver.switchTo().alert();


41. Common Mistake: Calling accept() Directly on WebDriver

The WebDriver object does not provide the accept() method directly.

Correct:

driver.switchTo().alert().accept();


42. Common Mistake: Using getText() on WebDriver

The alert text should be retrieved from the Alert object.

Alert alert = driver.switchTo().alert();

String message = alert.getText();


43. Common Mistake: Using sendKeys() on the Page

For a JavaScript prompt, the text should be sent to the alert object.

Alert alert = driver.switchTo().alert();

alert.sendKeys("Test Data");

alert.accept();


44. Common Mistake: Using Dismiss on a Simple Alert

A simple alert() normally has only an OK button. The normal operation is to accept it.

driver.switchTo().alert().accept();


45. Common Mistake: Not Waiting for Dynamic Alerts

If the alert is created asynchronously, immediately calling switchTo().alert() may execute before the alert exists.

Use:

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

 

Alert alert = wait.until(

    ExpectedConditions.alertIsPresent()

);

 

alert.accept();


46. Alert Handling and Synchronization

Alert handling and synchronization are closely related. A test must synchronize with the point at which the browser dialog becomes available.

Click Button

    ↓

Application Processing

    ↓

JavaScript Executes

    ↓

Alert Appears

    ↓

Wait for Alert

    ↓

Switch to Alert

    ↓

Validate / Accept / Dismiss

    ↓

Continue Test


47. Alert Handling in Dynamic Web Applications

Modern applications may trigger JavaScript dialogs after AJAX requests, asynchronous operations, validation checks, or API responses. Therefore, alert timing should not always be assumed to be immediate.

driver.findElement(By.id("processButton")).click();

 

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(15));

 

Alert alert = wait.until(ExpectedConditions.alertIsPresent());

 

String message = alert.getText();

 

System.out.println(message);

 

alert.accept();


48. Alert and Page State

After accepting or dismissing an alert, Selenium can normally continue interacting with the page.

Alert alert = driver.switchTo().alert();

 

alert.accept();

 

driver.findElement(By.id("nextButton")).click();


49. Handling Multiple Alerts

If multiple alerts appear sequentially, each alert must be handled before continuing to the next application action.

Alert alert = driver.switchTo().alert();

System.out.println(alert.getText());

alert.accept();

 

Alert secondAlert = driver.switchTo().alert();

System.out.println(secondAlert.getText());

secondAlert.accept();

In dynamic applications, explicit waits can be added before each alert when necessary.


50. Reusable Method for Accepting Alerts

public void acceptAlert(WebDriver driver) {

    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

    Alert alert = wait.until(ExpectedConditions.alertIsPresent());

    alert.accept();

}


51. Reusable Method for Reading Alert Text

public String getAlertText(WebDriver driver) {

    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

    Alert alert = wait.until(ExpectedConditions.alertIsPresent());

    return alert.getText();

}


52. Reusable Method for Prompt Input

public void enterAlertText(WebDriver driver, String text) {

    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

    Alert alert = wait.until(ExpectedConditions.alertIsPresent());

    alert.sendKeys(text);

    alert.accept();

}


53. Alert Handling in a Login Test

Some applications may display an alert when invalid login credentials are submitted.

driver.findElement(By.id("username")).sendKeys("wrongUser");

driver.findElement(By.id("password")).sendKeys("wrongPassword");

driver.findElement(By.id("loginButton")).click();

 

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

 

Alert alert = wait.until(ExpectedConditions.alertIsPresent());

 

String message = alert.getText();

 

Assert.assertEquals(message, "Invalid username or password");

 

alert.accept();


54. Alert Handling in a Delete Test

driver.findElement(By.id("deleteButton")).click();

 

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

 

Alert alert = wait.until(ExpectedConditions.alertIsPresent());

 

Assert.assertEquals(

    alert.getText(),

    "Are you sure you want to delete?"

);

 

alert.accept();

 

Assert.assertTrue(

    driver.findElement(By.id("successMessage")).isDisplayed()

);


55. Testing Both Accept and Dismiss

A complete confirmation-dialog test should consider both possible user decisions.

ScenarioActionExpected Result
Confirm deletionAcceptRecord is deleted
Cancel deletionDismissRecord remains


56. Alert Testing Checklist

  • Verify whether the dialog is a native JavaScript alert.
  • Identify whether it is an alert, confirm, or prompt.
  • Trigger the alert through the required application action.
  • Wait for the alert if necessary.
  • Switch to the alert.
  • Read and validate the message.
  • Accept or dismiss according to the test scenario.
  • Enter text when the dialog is a prompt.
  • Verify the resulting page state.
  • Handle unexpected alerts appropriately.


57. JavaScript Alerts vs Synchronization Problems

An alert-related failure can sometimes look like a synchronization problem. For example, the test may immediately call switchTo().alert() before the application has created the dialog.

Correct approach:

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

Alert alert = wait.until(ExpectedConditions.alertIsPresent());

alert.accept();


58. Alert Handling with Exception Reporting

try {

    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

 

    Alert alert = wait.until(ExpectedConditions.alertIsPresent());

 

    System.out.println("Alert: " + alert.getText());

 

    alert.accept();

 

} catch (TimeoutException e) {

    System.out.println("Expected alert did not appear.");

}


59. Native Alert and Browser Context

A JavaScript alert temporarily takes control of browser interaction. Selenium must interact with the alert before normal page interaction can continue.

Page Context

    ↓

JavaScript Alert

    ↓

Alert Context

    ↓

Accept / Dismiss / Input

    ↓

Page Context


60. Alert Handling in a Test Framework

In a framework, alert handling should ideally be centralized through utility methods instead of duplicating low-level alert code in every test.

Test Case

   ↓

Page Object

   ↓

Alert Utility

   ↓

WebDriver Alert API

   ↓

Browser Dialog


61. Recommended Alert Utility Design

Utility MethodPurpose
acceptAlert()Accept current alert
dismissAlert()Dismiss current alert
getAlertText()Read current alert message
enterAlertText()Enter prompt value
waitForAlert()Synchronize with alert appearance


62. Real-World Example: Delete Confirmation

Consider an employee management application. When the Delete button is clicked, a confirmation dialog appears.

Click Delete

     ↓

"Are you sure you want to delete?"

     ↓

      ┌───────────────┐

      │               │

     OK             Cancel

      │               │

      ↓               ↓

Delete Record    Keep Record

Selenium implementation:

driver.findElement(By.id("delete")).click();

 

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

 

Alert alert = wait.until(ExpectedConditions.alertIsPresent());

 

String message = alert.getText();

 

Assert.assertEquals(

    message,

    "Are you sure you want to delete?"

);

 

alert.accept();


63. Real-World Example: Invalid Login

Enter Username

      ↓

Enter Password

      ↓

Click Login

      ↓

Server Validation

      ↓

JavaScript Alert

      ↓

Read Error Message

      ↓

Accept Alert

      ↓

Verify Login Page


64. Real-World Example: Prompt-Based Input

Click Enter Name

      ↓

Prompt Appears

      ↓

Switch to Alert

      ↓

Enter Name

      ↓

Click OK

      ↓

Application Displays Name

      ↓

Verify Result


65. Difference Between accept() and dismiss()

MethodTypical Meaning
accept()Confirm or click OK
dismiss()Cancel or close the dialog


66. Difference Between getText() and sendKeys()

MethodPurpose
getText()Reads alert text
sendKeys()Enters text into a prompt


67. Complete Selenium Alert Example

import java.time.Duration;

 

import org.openqa.selenium.Alert;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.openqa.selenium.support.ui.ExpectedConditions;

import org.openqa.selenium.support.ui.WebDriverWait;

import org.testng.Assert;

 

public class JavaScriptAlertTest {

 

    public static void main(String[] args) {

 

        WebDriver driver = new ChromeDriver();

 

        driver.manage().window().maximize();

 

        WebDriverWait wait =

            new WebDriverWait(driver, Duration.ofSeconds(10));

 

        driver.get("https://example.com");

 

        driver.findElement(By.id("deleteButton")).click();

 

        Alert alert =

            wait.until(ExpectedConditions.alertIsPresent());

 

        String actualMessage = alert.getText();

 

        System.out.println("Alert Message: " + actualMessage);

 

        Assert.assertEquals(

            actualMessage,

            "Are you sure you want to delete?"

        );

 

        alert.accept();

 

        driver.quit();

    }

}


68. Important Selenium Alert Exceptions

ExceptionPossible Cause
NoAlertPresentExceptionNo alert is available when Selenium tries to access one
TimeoutExceptionExpected alert did not appear within the wait timeout
WebDriverExceptionGeneral WebDriver-related failure


69. Handling NoAlertPresentException Correctly

The exception should be handled based on the test requirement. If the alert is mandatory, silently ignoring the exception can hide a real application or automation defect.

try {

    Alert alert = driver.switchTo().alert();

    alert.accept();

} catch (NoAlertPresentException e) {

    Assert.fail("Expected JavaScript alert was not displayed.");

}


70. Handling Alert Timeout Correctly

try {

    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

 

    Alert alert = wait.until(

        ExpectedConditions.alertIsPresent()

    );

 

    alert.accept();

 

} catch (TimeoutException e) {

    Assert.fail("Alert did not appear within expected time.");

}


71. Alert Validation Best Practice

When the alert message represents an important business requirement, validate it before accepting or dismissing the dialog.

Alert alert = driver.switchTo().alert();

 

String actualMessage = alert.getText();

 

Assert.assertEquals(

    actualMessage,

    "Payment completed successfully"

);

 

alert.accept();


72. Do Not Use Alerts as Locators

Alert dialogs do not use standard Selenium locators such as ID, Name, XPath, or CSS Selector in the same way normal DOM elements do.

Incorrect:

driver.findElement(By.xpath("//div[@class='alert']")).click();

For a native JavaScript alert, use:

driver.switchTo().alert().accept();


73. HTML Modal Example

An HTML modal is different from a JavaScript alert.

<div class="modal">

    <h2>Delete Record</h2>

    <p>Are you sure?</p>

    <button id="confirmDelete">Yes</button>

    <button id="cancelDelete">No</button>

</div>

This can normally be handled with WebElement methods:

driver.findElement(By.id("confirmDelete")).click();


74. How to Identify an Alert

When testing a web application, determine whether the dialog is:

  • A native JavaScript alert
  • A JavaScript confirmation dialog
  • A JavaScript prompt
  • An HTML/CSS modal
  • A new browser window
  • A new browser tab

The correct Selenium technique depends on the type of dialog.


75. Alert Handling Decision Table

Observed UITechnique
Native JavaScript alertswitchTo().alert()
Native confirmationalert.accept() / alert.dismiss()
Native promptalert.sendKeys()
HTML modalWebElement locator
New tab/windowWindow handles


76. Alert Handling and Page Object Model

In a maintainable Selenium framework, the test should focus on business behavior while page objects and utility classes handle implementation details.

Test:

    deleteEmployee()

    verifyConfirmation()

    confirmDeletion()

 

Page:

    clickDelete()

 

AlertHelper:

    waitForAlert()

    getAlertText()

    acceptAlert()


77. Alert Handling with Assertions

Alert alert = driver.switchTo().alert();

 

Assert.assertTrue(

    alert.getText().contains("successfully")

);

 

alert.accept();


78. Contains Validation for Dynamic Alert Text

If the alert contains dynamic information, exact text matching may not always be appropriate.

String message = alert.getText();

 

Assert.assertTrue(

    message.contains("successfully")

);

 

alert.accept();


79. Dynamic Alert Message Example

Suppose an application displays:

Record 1254 deleted successfully

The record number may change. A partial validation can be used when appropriate:

String message = alert.getText();

 

Assert.assertTrue(

    message.contains("deleted successfully")

);

 

alert.accept();


80. Alert Handling with Logging

Alert alert = driver.switchTo().alert();

 

String message = alert.getText();

 

System.out.println(

    "JavaScript Alert Message: " + message

);

 

alert.accept();

 

System.out.println(

    "JavaScript Alert Accepted"

);


81. Alert Handling in Regression Testing

JavaScript alert handling is particularly useful in regression suites because confirmation dialogs, validation alerts, and warning messages can appear across many workflows.

  • Login validation
  • Delete operations
  • Save operations
  • Logout confirmation
  • Payment workflows
  • Form validation
  • Session expiration
  • Administrative actions


82. Alert Handling in Data-Driven Testing

Alert messages and prompt values can also be tested using data-driven approaches.

String[] testInputs = {

    "User1",

    "User2",

    "User3"

};

 

for (String input : testInputs) {

 

    driver.findElement(By.id("promptButton")).click();

 

    Alert alert = driver.switchTo().alert();

 

    alert.sendKeys(input);

    alert.accept();

 

    System.out.println("Tested Input: " + input);

}


83. Alert Handling with Multiple Test Scenarios

ScenarioExpected Action
Information alertRead and accept
Delete confirmationRead and accept
Cancel deletionRead and dismiss
Prompt inputEnter text and accept
Unexpected alertCapture and report appropriately


84. Common Reasons Alert Tests Fail

  • Alert has not appeared yet.
  • Test tries to interact with the page while an alert is open.
  • Incorrect dialog type is assumed.
  • HTML modal is mistaken for JavaScript alert.
  • Expected alert text is incorrect.
  • Prompt input is not supplied.
  • Alert is already closed.
  • Test uses unnecessary fixed delays.
  • Application behavior differs across environments.


85. How to Make Alert Tests Stable

  1. Trigger the alert using a deterministic application action.
  2. Use alertIsPresent() when timing is dynamic.
  3. Validate important alert messages.
  4. Handle the alert before continuing page interaction.
  5. Separate alert utilities from test logic.
  6. Avoid unnecessary fixed sleeps.
  7. Capture screenshots or logs when failures occur.
  8. Keep alert handling close to the action that triggers the alert.


86. Alert Handling Best Practices for Frameworks

  • Create reusable alert methods.
  • Use explicit waits for dynamic alert appearance.
  • Use meaningful exception messages.
  • Log alert text when troubleshooting.
  • Do not silently ignore mandatory alerts.
  • Keep test assertions close to business requirements.
  • Distinguish native dialogs from HTML modals.
  • Keep page objects focused on page behavior.


87. Mini Project: Employee Delete Automation

Build a Selenium automation test for an employee management application.

Requirements:

  1. Open the employee application.
  2. Search for an employee.
  3. Click Delete.
  4. Wait for the JavaScript confirmation.
  5. Read the alert message.
  6. Verify the expected message.
  7. Accept the alert.
  8. Verify that the employee is removed.

driver.findElement(By.id("deleteEmployee")).click();

 

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

 

Alert alert = wait.until(

    ExpectedConditions.alertIsPresent()

);

 

String message = alert.getText();

 

Assert.assertEquals(

    message,

    "Are you sure you want to delete?"

);

 

alert.accept();

 

Assert.assertTrue(

    driver.findElement(By.id("deleteSuccess")).isDisplayed()

);


88. Mini Project: Cancel Employee Deletion

driver.findElement(By.id("deleteEmployee")).click();

 

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

 

Alert alert = wait.until(

    ExpectedConditions.alertIsPresent()

);

 

alert.dismiss();

 

Assert.assertTrue(

    driver.findElement(By.id("employeeRecord")).isDisplayed()

);


89. Mini Project: Prompt-Based Registration

driver.findElement(By.id("enterName")).click();

 

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

 

Alert alert = wait.until(

    ExpectedConditions.alertIsPresent()

);

 

Assert.assertEquals(

    alert.getText(),

    "Enter your name"

);

 

alert.sendKeys("Automation Tester");

alert.accept();

 

String result =

    driver.findElement(By.id("displayName")).getText();

 

Assert.assertEquals(

    result,

    "Automation Tester"

);


90. Interview Question: What is a JavaScript Alert?

A JavaScript alert is a browser dialog created by JavaScript that temporarily interrupts normal page interaction. Selenium handles it through the Alert interface rather than treating it as a normal WebElement.


91. Interview Question: How do you handle alerts in Selenium?

Alert alert = driver.switchTo().alert();

alert.accept();

The Alert interface provides methods for accepting, dismissing, reading text, and entering prompt values.


92. Interview Question: How do you get alert text?

String message = driver.switchTo().alert().getText();


93. Interview Question: How do you accept an alert?

driver.switchTo().alert().accept();


94. Interview Question: How do you dismiss a confirmation box?

driver.switchTo().alert().dismiss();


95. Interview Question: How do you enter text into a JavaScript prompt?

Alert alert = driver.switchTo().alert();

alert.sendKeys("Test Data");

alert.accept();


96. Interview Question: What exception occurs if there is no alert?

NoAlertPresentException can occur when Selenium attempts to access an alert that is not currently present.


97. Interview Question: How do you wait for an alert?

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

 

Alert alert = wait.until(

    ExpectedConditions.alertIsPresent()

);

 

alert.accept();


98. Interview Question: Can Selenium inspect a JavaScript alert using XPath?

A native JavaScript alert is not handled as a normal DOM element, so XPath is not the standard technique for interacting with it. Selenium's Alert interface should be used.


99. Interview Question: Difference Between Alert and HTML Popup

A JavaScript alert is a browser-managed dialog handled using driver.switchTo().alert(). An HTML popup or modal is part of the web page DOM and is normally handled using standard WebElement locators.


100. Interview Question: Difference Between accept() and dismiss()

accept() is generally used for OK or confirmation, while dismiss() is generally used for Cancel or rejection.


101. Interview Question: Which Selenium Interface Handles Alerts?

Selenium Java provides the Alert interface for interacting with JavaScript dialogs.


102. Interview Question: Can You Send Keys to Every Alert?

No. sendKeys() is intended for prompt dialogs that accept text input. A simple alert normally does not provide an input field.


103. Interview Question: Why Should Explicit Wait Be Used for Dynamic Alerts?

An alert may not appear immediately after the triggering action. ExpectedConditions.alertIsPresent() allows Selenium to wait for the alert instead of relying on an arbitrary fixed delay.


104. Interview Question: What Happens After Accepting an Alert?

After the alert is accepted, the browser closes the dialog and Selenium can generally continue interacting with the page.


105. Interview Question: How Do You Test Both OK and Cancel?

Create separate test scenarios. In one scenario call accept() and verify the confirmation behavior. In another scenario call dismiss() and verify that the operation is cancelled.


106. Quick Revision Table

RequirementCode
Switch to alertdriver.switchTo().alert()
Acceptalert.accept()
Dismissalert.dismiss()
Read messagealert.getText()
Enter prompt valuealert.sendKeys("value")
Wait for alertExpectedConditions.alertIsPresent()
No alert exceptionNoAlertPresentException


107. Alert Handling Cheat Sheet

// Switch

Alert alert = driver.switchTo().alert();

 

// Read

String text = alert.getText();

 

// Accept

alert.accept();

 

// Dismiss

alert.dismiss();

 

// Enter prompt text

alert.sendKeys("Test Data");

 

// Wait for alert

Alert alert = new WebDriverWait(driver, Duration.ofSeconds(10))

        .until(ExpectedConditions.alertIsPresent());


108. Practical Learning Sequence

  1. Understand JavaScript alert().
  2. Understand confirm().
  3. Understand prompt().
  4. Learn the Selenium Alert interface.
  5. Practice accept().
  6. Practice dismiss().
  7. Practice getText().
  8. Practice sendKeys().
  9. Practice explicit waits.
  10. Differentiate JavaScript alerts from HTML modals.
  11. Create reusable alert utilities.
  12. Integrate alert handling with Page Object Model and TestNG.


109. Common Mistakes Checklist

  • Do not use findElement() for a native JavaScript alert.
  • Do not call alert methods without switching to the alert.
  • Do not use sendKeys() on a simple alert expecting an input field.
  • Do not use dismiss() when the test requires confirmation.
  • Do not ignore mandatory alert failures.
  • Do not assume every popup is a JavaScript alert.
  • Do not depend unnecessarily on Thread.sleep().
  • Do not forget to validate important alert messages.


110. Final Summary

JavaScript Alerts are an important Selenium WebDriver concept used for automating browser dialogs generated by JavaScript. Selenium provides the Alert interface to interact with these dialogs. The primary operations are switching to the alert, reading its message, accepting it, dismissing it, and entering text into a prompt.

The most important commands are driver.switchTo().alert(), accept(), dismiss(), getText(), and sendKeys(). For dynamically appearing alerts, WebDriverWait with ExpectedConditions.alertIsPresent() provides a more reliable synchronization approach.

Always distinguish native JavaScript alerts from HTML/CSS modals, browser windows, and tabs because each requires a different Selenium handling technique. Proper alert handling makes Selenium automation more stable, maintainable, and suitable for real-world testing scenarios.


111. Selenium Training Resources

For structured Selenium automation learning, practical projects, Java-based Selenium training, and advanced browser interaction concepts, explore the JustAcademy Selenium Training Course.

To request a course demo, visit the JustAcademy Selenium Course Demo Registration.

whatsapp