Skip to main content

How to handle JS Alerts in Playwright?

 What are JS Alerts ?

An alert box is often used if you want to make sure information comes through to the user.

JavaScript has three kind of popup boxes: 

  • Alert box, 
  • Confirm box, and 
  • Prompt box. 

alert(), confirm(), prompt() dialogs

By default, dialogs are auto-dismissed by Playwright, so you don't have to handle them. However, you can register a dialog handler before the action that triggers the dialog to either Dialog.accept() or Dialog.dismiss() it.

page.onDialog(dialog -> System.out.println(dialog.message()));

Note : 
If there is no listener for Page.onDialog(handler), all dialogs are automatically dismissed.

For Prompt alert we need handle explicitly write page listener onDialog methods
 page.onDialog(dialog -> {
            System.out.println(dialog.message());
            //dialog.accept("Accepting with Entered data");
            dialog.type();          
            dialog.dismiss();
            //dialog.accept("Accepting with Entered data");
        });

Example web sites : 
https://www.lambdatest.com/selenium-playground/javascript-alert-box-demo
https://www.lambdatest.com/selenium-playground/javascript-alert-box-demo

Sample Program as below 
package com.example;

import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserType;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;

public class Alerts2Example {

public static void main(String[] args) {
Playwright playwright = Playwright.create() ;
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions()
.setHeadless(false)
.setChannel("chrome"));
Page page = browser.newPage();
// page.navigate("https://web-scraping.dev/product/1?variant=orange-small");
// page.locator("//button[contains(@class,'btn btn-secondary')]").click();
// page.locator(".cart-icon").click();
// page.locator("//button[normalize-space(text())='Clear']").click();
page.navigate("https://www.lambdatest.com/selenium-playground/javascript-alert-box-demo");
// page.locator("(//button[contains(@class,'btn btn-dark')])[1]").click();
page.onDialog(dialog -> {
System.out.println(dialog.message());
//dialog.accept("Accepting with Entered data");
dialog.type();
dialog.dismiss();
//dialog.accept("Accepting with Entered data");
});
page.locator("(//button[contains(@class,'btn btn-dark')])[2]").click();
// page.locator("(//button[contains(@class,'btn btn-dark')])[3]").click();

}
}

Comments

Popular posts from this blog

Step-by-Step: Launch Browser, Context, and Page in Playwright and Run Test and Configuration (JavaScript)

πŸŽ₯ Setup Browser, Context, Page & Run Config Test Scripts with package.json & playwright.config.js Step-by-Step: Launch Browser, Context, and Page in Playwright and Run Test and Configuration (JavaScript) 1. Install Playwright You can install Playwright using the following command: npm init playwright@latest 2. Create a Basic Test Script Understand the core Playwright architecture: Element Description browser Controls the browser instance (like Chrome, Firefox, etc.) context Acts like a separate browser profile (cookies, localStorage are isolated) page A single browser tab where interaction happens 3. Run the Test npx playwright test example.spec.js Ways to Run TypeScript Tests Way Command Notes 🟒 Via npx npx playwright test Uses built-in TypeScript support 🟒 With s...

Playwright Test Structure in Details -Session-02

πŸŽ₯ Playwright: test.only, Hooks & Grouping with test.describe Explained Let’s go step-by-step , showing how to build from a single test , to using beforeEach / afterEach , and then organizing things with test.describe . ✅ Step 1: Basic Single Test with test.only import { test, expect } from '@playwright/test' ; test. only ( 'πŸš€ Basic test - check title' , async ({ page }) => { await page. goto ( 'https://example.com' ); await expect (page). toHaveTitle ( /Example Domain/ ); }); test.only ensures only this test runs — great for debugging. ✅ Step 2: Add beforeEach and afterEach import { test, expect } from '@playwright/test' ; test. beforeEach ( async ({ page }) => { console . log ( 'πŸ”„ Setting up before each test' ); await page. goto ( 'https://example.com' ); }); test. afterEach ( async ({ page }, testInfo) => { console . log ( `πŸ“¦ Finished test: ${testInfo.title} `); }); test. only ( ...

Playwright Locators in JavaScript (Complete Guide)

🎯 Playwright Locators in JavaScript (Complete Guide) This guide explains each Playwright locator with: ✅ What it is πŸ• When to use ⚙️ How to use it 🎯 Benefits πŸ§ͺ Code Examples πŸ”Ή 1. Locator by ID ✅ What: Selects an element with a unique id . πŸ• When: Element has a unique id . ⚙️ How: page.locator('#username') 🎯 Benefit: Fast and reliable. <input id="username" /> await page.locator('#username').fill('John'); πŸ”Ή 2. Locator by Class ✅ What: Selects by class . πŸ• When: Repeated or styled elements. ⚙️ How: page.locator('.password') 🎯 Benefit: Useful for shared styling. <input class="password" /> await page.locator('.password').fill('12345'); πŸ”Ή 3. Locator by Text ✅ What: Matches visible element text. πŸ• When: For buttons, links, etc. ⚙️ How: page.getByText('Login') 🎯 Benefit: Human-readable. <button>Login...