Python version of the Playwright testing and automation library.
This version was also tested against the following stable channels:
This patch release includes the following bug fixes:
https://github.com/microsoft/playwright/pull/18010 - fix(generator): generate nice locators for arbitrary selectors https://github.com/microsoft/playwright/pull/17952 - fix: fix typo in treeitem role typing
This version was also tested against the following stable channels:
With these new APIs, inspired by Testing Library, writing locators is a joy:
page.get_by_text(text)
to locate by text content.page.get_by_role(role)
to locate by ARIA role, ARIA attributes and accessible name.page.get_by_label(label)
to locate a form control by associated label's text.page.get_by_placeholder(placeholder)
to locate an input by placeholder.page.get_by_alt_text(altText)
to locate an element, usually image, by its text alternative.page.get_by_title(title)
to locate an element by its title.page.get_by_label("User Name").fill("John")
page.get_by_label("Password").fill("secret-password")
page.get_by_role("button", name="Sign in").click()
expect(page.get_by_text("Welcome, John!")).to_be_visible()
All the same methods are also available on Locator, FrameLocator and Frame classes.
expect(locator).to_have_attribute(name, value)
with an empty value does not match missing attribute anymore. For example, the following snippet will succeed when button
does not have a disabled
attribute.
expect(page.get_by_role("button")).to_have_attribute("disabled", "")
This version was also tested against the following stable channels:
enabled
for method: LocatorAssertions.to_be_enabled
.method: LocatorAssertions.to_have_text
now pierces open shadow roots.editable
for method: LocatorAssertions.to_be_editable
.visible
for method: LocatorAssertions.to_be_visible
.max_redirects
for method: APIRequestContext.get
and others to limit redirect count.A bunch of Playwright APIs already support the wait_until: "domcontentloaded"
option.
For example:
page.goto("https://playwright.dev", wait_until="domcontentloaded")
Prior to 1.26, this would wait for all iframes to fire the DOMContentLoaded
event.
To align with web specification, the 'domcontentloaded'
value only waits for
the target frame to fire the 'DOMContentLoaded'
event. Use wait_until="load"
to wait for all iframes.
This version was also tested against the following stable channels:
mcr.microsoft.com/playwright/python:v1.25.0-jammy
.This version was also tested against the following stable channels:
Playwright now supports Debian 11 Bullseye on x86_64 for Chromium, Firefox and WebKit. Let us know if you encounter any issues!
Linux support looks like this:
Ubuntu 18.04 | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | |
---|---|---|---|---|
Chromium | â | â | â | â |
WebKit | â | â | â | â |
Firefox | â | â | â | â |
We rewrote our Getting Started docs to be more end-to-end testing focused. Check them out on playwright.dev.
This version was also tested against the following stable channels: