✅ Selenium (Java) vs Playwright (JS/TS) Commands
1. Browser / Context / Page
| Action | Selenium (Java) | Playwright (JS/TS) |
|---|---|---|
| Launch browser | WebDriver driver = new ChromeDriver(); | const browser = await chromium.launch(); |
| Headless mode | new ChromeOptions().addArguments("--headless") | chromium.launch({ headless: true }) |
| New tab / page | driver.switchTo().newWindow(WindowType.TAB); | const page = await context.newPage(); |
| Navigate to URL | driver.get(url); | await page.goto(url); |
| Get URL | driver.getCurrentUrl(); | page.url(); |
| Get title | driver.getTitle(); | await page.title(); |
| Refresh | driver.navigate().refresh(); | await page.reload(); |
| Back | driver.navigate().back(); | await page.goBack(); |
| Forward | driver.navigate().forward(); | await page.goForward(); |
| Close tab | driver.close(); | await page.close(); |
| Quit browser | driver.quit(); | await browser.close(); |
2. Locating Elements
| Action | Selenium (Java) | Playwright (JS/TS) |
|---|---|---|
| CSS | driver.findElement(By.cssSelector("...")); | page.locator("...") |
| XPath | driver.findElement(By.xpath("...")); | page.locator("xpath=//...") |
| ID | driver.findElement(By.id("id")); | page.locator("#id") |
| Name | driver.findElement(By.name("name")); | page.locator("[name='x']") |
| Class | driver.findElement(By.className("cls")); | page.locator(".cls") |
| Many elements | driver.findElements(By.cssSelector("...")); | page.locator("...").all() |
3. Element Actions
| Action | Selenium (Java) | Playwright (JS/TS) |
|---|---|---|
| Click | element.click(); | await locator.click(); |
| Type text | element.sendKeys("text"); | await locator.fill("text"); |
| Clear | element.clear(); | await locator.clear(); |
| Get text | element.getText(); | await locator.innerText(); |
| Get attribute | element.getAttribute("href"); | await locator.getAttribute("href"); |
| Hover | new Actions(driver).moveToElement(el).perform(); | await locator.hover(); |
| Submit | element.submit(); | await locator.evaluate(el => el.submit()); |
4. Keyboard & Mouse
| Action | Selenium (Java) | Playwright (JS/TS) |
|---|---|---|
| Keyboard press | element.sendKeys(Keys.ENTER); | await page.keyboard.press("Enter"); |
| Mouse move | new Actions(driver).moveByOffset(x,y).perform(); | await page.mouse.move(x, y); |
| Mouse click | new Actions(driver).click().perform(); | await page.mouse.click(x, y); |
| Mouse down/up | clickAndHold() / release() | page.mouse.down() / page.mouse.up() |
5. Waits & Synchronization
| Action | Selenium (Java) | Playwright (JS/TS) |
|---|---|---|
| Implicit wait | driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); | ⚠️ Not recommended |
| Explicit wait | WebDriverWait wait = new WebDriverWait(driver, 10); | await locator.waitFor(); |
| Wait element visible | wait.until(ExpectedConditions.visibilityOf(el)); | await locator.waitFor({ state: 'visible' }); |
| Wait for navigation | wait.until(ExpectedConditions.urlContains("...")); | await page.waitForLoadState(); |
6. Frames & Windows
| Action | Selenium (Java) | Playwright (JS/TS) |
|---|---|---|
| Switch to frame | driver.switchTo().frame("name"); | page.frame({ name: "name" }) |
| Back to main | driver.switchTo().defaultContent(); | (auto-scoped, no switch needed) |
| Switch window | driver.switchTo().window(handle); | context.pages()[i] |
7. Cookies
| Action | Selenium (Java) | Playwright (JS/TS) |
|---|---|---|
| Get cookies | driver.manage().getCookies(); | await context.cookies(); |
| Add cookie | driver.manage().addCookie(new Cookie("k","v")); | await context.addCookies([{name:'k',value:'v'}]) |
| Delete cookie | driver.manage().deleteCookieNamed("k"); | await context.clearCookies(); |
8. JavaScript Execution
| Action | Selenium (Java) | Playwright (JS/TS) |
|---|---|---|
| Execute JS | ((JavascriptExecutor)driver).executeScript("..."); | await page.evaluate(() => {...}); |
| With arguments | executeScript("...", arg); | await page.evaluate(arg => {...}, arg); |
9. Screenshots
| Action | Selenium (Java) | Playwright (JS/TS) |
|---|---|---|
| Full page screenshot | File src = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); | await page.screenshot({ path: "a.png" }); |
| Element screenshot | element.getScreenshotAs(OutputType.FILE); | await locator.screenshot({ path: "a.png" }); |
10. Downloads & Uploads
| Action | Selenium (Java) | Playwright (JS/TS) |
|---|---|---|
| Upload file | element.sendKeys("/path/file.txt"); | await locator.setInputFiles("path/file.txt"); |
| Handle downloads | Manual (Chrome prefs) | const download = await page.waitForEvent("download"); |
11. Alerts / Dialogs
| Action | Selenium (Java) | Playwright (JS/TS) |
|---|---|---|
| Switch to alert | Alert a = driver.switchTo().alert(); | page.on('dialog', dialog => {...}) |
| Accept alert | a.accept(); | dialog.accept(); |
| Dismiss | a.dismiss(); | dialog.dismiss(); |
12. Network Controls
| Action | Selenium (Java) | Playwright (JS/TS) |
|---|---|---|
| Block request | ❌ Not supported | await page.route("**/*", route => route.abort()); |
| Modify request | ❌ Not supported | page.route("**/*", route => route.continue({ headers })) |
| Listen to requests | Limited | page.on("request", req => {...}) |
13. Assertions
| Action | Selenium (Java) | Playwright (JS/TS) |
|---|---|---|
| Assertions | Use TestNG/JUnit | ✔️ Built-in: await expect(locator).toBeVisible() |
| Expect text | JUnit/TestNG | await expect(locator).toHaveText("value") |
| Expect attribute | external | await expect(locator).toHaveAttribute("href", "...") |