Skip to content

Playwright Vs Selenium

Feature Selenium Playwright
Lazy locator resolution No Yes
Retries easy hard
Frames Switch to frame and use webdriver obj No Switch needed, use frame obj
---

Lazy locator resolution

#selenium
search_box = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "search2"))
)
#refresh the browser manually
search_box.send_keys("test12") # we get exception StaleElementReferenceException, because search_box points to an element that no longer exists in the new DOM.


#playwright
editbox = page.locator("#search2")
#refresh the browser manually
editbox.fill("test") #it works. locator() does not store a fixed DOM element. It re-queries the DOM every time you perform an action