{"id":473,"date":"2025-11-21T10:55:50","date_gmt":"2025-11-21T10:55:50","guid":{"rendered":"https:\/\/thetestdata.com\/blog\/?p=473"},"modified":"2025-11-21T10:57:08","modified_gmt":"2025-11-21T10:57:08","slug":"selenium-vs-playwright-cheat-sheet-commands-methods-explained","status":"publish","type":"post","link":"https:\/\/thetestdata.com\/blog\/selenium-vs-playwright-cheat-sheet-commands-methods-explained\/","title":{"rendered":"Selenium vs Playwright Cheat Sheet: Commands &amp; Methods Explained"},"content":{"rendered":"\n<p>\u2705 Selenium (Java) vs Playwright (JS\/TS) Commands<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>1. Browser \/ Context \/ Page<\/strong><\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Action<\/th><th>Selenium (Java)<\/th><th>Playwright (JS\/TS)<\/th><\/tr><\/thead><tbody><tr><td>Launch browser<\/td><td><code>WebDriver driver = new ChromeDriver();<\/code><\/td><td><code>const browser = await chromium.launch();<\/code><\/td><\/tr><tr><td>Headless mode<\/td><td><code>new ChromeOptions().addArguments(\"--headless\")<\/code><\/td><td><code>chromium.launch({ headless: true })<\/code><\/td><\/tr><tr><td>New tab \/ page<\/td><td><code>driver.switchTo().newWindow(WindowType.TAB);<\/code><\/td><td><code>const page = await context.newPage();<\/code><\/td><\/tr><tr><td>Navigate to URL<\/td><td><code>driver.get(url);<\/code><\/td><td><code>await page.goto(url);<\/code><\/td><\/tr><tr><td>Get URL<\/td><td><code>driver.getCurrentUrl();<\/code><\/td><td><code>page.url();<\/code><\/td><\/tr><tr><td>Get title<\/td><td><code>driver.getTitle();<\/code><\/td><td><code>await page.title();<\/code><\/td><\/tr><tr><td>Refresh<\/td><td><code>driver.navigate().refresh();<\/code><\/td><td><code>await page.reload();<\/code><\/td><\/tr><tr><td>Back<\/td><td><code>driver.navigate().back();<\/code><\/td><td><code>await page.goBack();<\/code><\/td><\/tr><tr><td>Forward<\/td><td><code>driver.navigate().forward();<\/code><\/td><td><code>await page.goForward();<\/code><\/td><\/tr><tr><td>Close tab<\/td><td><code>driver.close();<\/code><\/td><td><code>await page.close();<\/code><\/td><\/tr><tr><td>Quit browser<\/td><td><code>driver.quit();<\/code><\/td><td><code>await browser.close();<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>2. Locating Elements<\/strong><\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Action<\/th><th>Selenium (Java)<\/th><th>Playwright (JS\/TS)<\/th><\/tr><\/thead><tbody><tr><td>CSS<\/td><td><code>driver.findElement(By.cssSelector(\"...\"));<\/code><\/td><td><code>page.locator(\"...\")<\/code><\/td><\/tr><tr><td>XPath<\/td><td><code>driver.findElement(By.xpath(\"...\"));<\/code><\/td><td><code>page.locator(\"xpath=\/\/...\")<\/code><\/td><\/tr><tr><td>ID<\/td><td><code>driver.findElement(By.id(\"id\"));<\/code><\/td><td><code>page.locator(\"#id\")<\/code><\/td><\/tr><tr><td>Name<\/td><td><code>driver.findElement(By.name(\"name\"));<\/code><\/td><td><code>page.locator(\"[name='x']\")<\/code><\/td><\/tr><tr><td>Class<\/td><td><code>driver.findElement(By.className(\"cls\"));<\/code><\/td><td><code>page.locator(\".cls\")<\/code><\/td><\/tr><tr><td>Many elements<\/td><td><code>driver.findElements(By.cssSelector(\"...\"));<\/code><\/td><td><code>page.locator(\"...\").all()<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>3. Element Actions<\/strong><\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Action<\/th><th>Selenium (Java)<\/th><th>Playwright (JS\/TS)<\/th><\/tr><\/thead><tbody><tr><td>Click<\/td><td><code>element.click();<\/code><\/td><td><code>await locator.click();<\/code><\/td><\/tr><tr><td>Type text<\/td><td><code>element.sendKeys(\"text\");<\/code><\/td><td><code>await locator.fill(\"text\");<\/code><\/td><\/tr><tr><td>Clear<\/td><td><code>element.clear();<\/code><\/td><td><code>await locator.clear();<\/code><\/td><\/tr><tr><td>Get text<\/td><td><code>element.getText();<\/code><\/td><td><code>await locator.innerText();<\/code><\/td><\/tr><tr><td>Get attribute<\/td><td><code>element.getAttribute(\"href\");<\/code><\/td><td><code>await locator.getAttribute(\"href\");<\/code><\/td><\/tr><tr><td>Hover<\/td><td><code>new Actions(driver).moveToElement(el).perform();<\/code><\/td><td><code>await locator.hover();<\/code><\/td><\/tr><tr><td>Submit<\/td><td><code>element.submit();<\/code><\/td><td><code>await locator.evaluate(el =&gt; el.submit());<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>4. Keyboard &amp; Mouse<\/strong><\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Action<\/th><th>Selenium (Java)<\/th><th>Playwright (JS\/TS)<\/th><\/tr><\/thead><tbody><tr><td>Keyboard press<\/td><td><code>element.sendKeys(Keys.ENTER);<\/code><\/td><td><code>await page.keyboard.press(\"Enter\");<\/code><\/td><\/tr><tr><td>Mouse move<\/td><td><code>new Actions(driver).moveByOffset(x,y).perform();<\/code><\/td><td><code>await page.mouse.move(x, y);<\/code><\/td><\/tr><tr><td>Mouse click<\/td><td><code>new Actions(driver).click().perform();<\/code><\/td><td><code>await page.mouse.click(x, y);<\/code><\/td><\/tr><tr><td>Mouse down\/up<\/td><td><code>clickAndHold()<\/code> \/ <code>release()<\/code><\/td><td><code>page.mouse.down()<\/code> \/ <code>page.mouse.up()<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>5. Waits &amp; Synchronization<\/strong><\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Action<\/th><th>Selenium (Java)<\/th><th>Playwright (JS\/TS)<\/th><\/tr><\/thead><tbody><tr><td>Implicit wait<\/td><td><code>driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);<\/code><\/td><td>\u26a0\ufe0f <em>Not recommended<\/em><\/td><\/tr><tr><td>Explicit wait<\/td><td><code>WebDriverWait wait = new WebDriverWait(driver, 10);<\/code><\/td><td><code>await locator.waitFor();<\/code><\/td><\/tr><tr><td>Wait element visible<\/td><td><code>wait.until(ExpectedConditions.visibilityOf(el));<\/code><\/td><td><code>await locator.waitFor({ state: 'visible' });<\/code><\/td><\/tr><tr><td>Wait for navigation<\/td><td><code>wait.until(ExpectedConditions.urlContains(\"...\"));<\/code><\/td><td><code>await page.waitForLoadState();<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>6. Frames &amp; Windows<\/strong><\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Action<\/th><th>Selenium (Java)<\/th><th>Playwright (JS\/TS)<\/th><\/tr><\/thead><tbody><tr><td>Switch to frame<\/td><td><code>driver.switchTo().frame(\"name\");<\/code><\/td><td><code>page.frame({ name: \"name\" })<\/code><\/td><\/tr><tr><td>Back to main<\/td><td><code>driver.switchTo().defaultContent();<\/code><\/td><td><em>(auto-scoped, no switch needed)<\/em><\/td><\/tr><tr><td>Switch window<\/td><td><code>driver.switchTo().window(handle);<\/code><\/td><td><code>context.pages()[i]<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>7. Cookies<\/strong><\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Action<\/th><th>Selenium (Java)<\/th><th>Playwright (JS\/TS)<\/th><\/tr><\/thead><tbody><tr><td>Get cookies<\/td><td><code>driver.manage().getCookies();<\/code><\/td><td><code>await context.cookies();<\/code><\/td><\/tr><tr><td>Add cookie<\/td><td><code>driver.manage().addCookie(new Cookie(\"k\",\"v\"));<\/code><\/td><td><code>await context.addCookies([{name:'k',value:'v'}])<\/code><\/td><\/tr><tr><td>Delete cookie<\/td><td><code>driver.manage().deleteCookieNamed(\"k\");<\/code><\/td><td><code>await context.clearCookies();<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>8. JavaScript Execution<\/strong><\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Action<\/th><th>Selenium (Java)<\/th><th>Playwright (JS\/TS)<\/th><\/tr><\/thead><tbody><tr><td>Execute JS<\/td><td><code>((JavascriptExecutor)driver).executeScript(\"...\");<\/code><\/td><td><code>await page.evaluate(() =&gt; {...});<\/code><\/td><\/tr><tr><td>With arguments<\/td><td><code>executeScript(\"...\", arg);<\/code><\/td><td><code>await page.evaluate(arg =&gt; {...}, arg);<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>9. Screenshots<\/strong><\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Action<\/th><th>Selenium (Java)<\/th><th>Playwright (JS\/TS)<\/th><\/tr><\/thead><tbody><tr><td>Full page screenshot<\/td><td><code>File src = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);<\/code><\/td><td><code>await page.screenshot({ path: \"a.png\" });<\/code><\/td><\/tr><tr><td>Element screenshot<\/td><td><code>element.getScreenshotAs(OutputType.FILE);<\/code><\/td><td><code>await locator.screenshot({ path: \"a.png\" });<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>10. Downloads &amp; Uploads<\/strong><\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Action<\/th><th>Selenium (Java)<\/th><th>Playwright (JS\/TS)<\/th><\/tr><\/thead><tbody><tr><td>Upload file<\/td><td><code>element.sendKeys(\"\/path\/file.txt\");<\/code><\/td><td><code>await locator.setInputFiles(\"path\/file.txt\");<\/code><\/td><\/tr><tr><td>Handle downloads<\/td><td>Manual (Chrome prefs)<\/td><td><code>const download = await page.waitForEvent(\"download\");<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>11. Alerts \/ Dialogs<\/strong><\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Action<\/th><th>Selenium (Java)<\/th><th>Playwright (JS\/TS)<\/th><\/tr><\/thead><tbody><tr><td>Switch to alert<\/td><td><code>Alert a = driver.switchTo().alert();<\/code><\/td><td><code>page.on('dialog', dialog =&gt; {...})<\/code><\/td><\/tr><tr><td>Accept alert<\/td><td><code>a.accept();<\/code><\/td><td><code>dialog.accept();<\/code><\/td><\/tr><tr><td>Dismiss<\/td><td><code>a.dismiss();<\/code><\/td><td><code>dialog.dismiss();<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>12. Network Controls<\/strong><\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Action<\/th><th>Selenium (Java)<\/th><th>Playwright (JS\/TS)<\/th><\/tr><\/thead><tbody><tr><td>Block request<\/td><td>\u274c Not supported<\/td><td><code>await page.route(\"**\/*\", route =&gt; route.abort());<\/code><\/td><\/tr><tr><td>Modify request<\/td><td>\u274c Not supported<\/td><td><code>page.route(\"**\/*\", route =&gt; route.continue({ headers }))<\/code><\/td><\/tr><tr><td>Listen to requests<\/td><td>Limited<\/td><td><code>page.on(\"request\", req =&gt; {...})<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>13. Assertions<\/strong><\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Action<\/th><th>Selenium (Java)<\/th><th>Playwright (JS\/TS)<\/th><\/tr><\/thead><tbody><tr><td>Assertions<\/td><td>Use TestNG\/JUnit<\/td><td>\u2714\ufe0f Built-in: <code>await expect(locator).toBeVisible()<\/code><\/td><\/tr><tr><td>Expect text<\/td><td>JUnit\/TestNG<\/td><td><code>await expect(locator).toHaveText(\"value\")<\/code><\/td><\/tr><tr><td>Expect attribute<\/td><td>external<\/td><td><code>await expect(locator).toHaveAttribute(\"href\", \"...\")<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\u2705 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(&#8220;&#8211;headless&#8221;) 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 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"site-container-style":"default","site-container-layout":"default","site-sidebar-layout":"default","disable-article-header":"default","disable-site-header":"default","disable-site-footer":"default","disable-content-area-spacing":"default","footnotes":""},"categories":[20],"tags":[],"class_list":["post-473","post","type-post","status-publish","format-standard","hentry","category-playwright"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/thetestdata.com\/blog\/wp-json\/wp\/v2\/posts\/473","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thetestdata.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thetestdata.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thetestdata.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thetestdata.com\/blog\/wp-json\/wp\/v2\/comments?post=473"}],"version-history":[{"count":1,"href":"https:\/\/thetestdata.com\/blog\/wp-json\/wp\/v2\/posts\/473\/revisions"}],"predecessor-version":[{"id":474,"href":"https:\/\/thetestdata.com\/blog\/wp-json\/wp\/v2\/posts\/473\/revisions\/474"}],"wp:attachment":[{"href":"https:\/\/thetestdata.com\/blog\/wp-json\/wp\/v2\/media?parent=473"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thetestdata.com\/blog\/wp-json\/wp\/v2\/categories?post=473"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thetestdata.com\/blog\/wp-json\/wp\/v2\/tags?post=473"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}