A mirror of the playwright-ui5 custom selector engine, to streamline its use in python.
This package:
- mirrors the relevant distribution files
css.js
andxpath.js
- reads file contents and exports it in a manner can be passed straight into the playwright api
- also provides the raw data if needed
uv:
uv add playwright-ui5-select
pip:
pip install playwright-ui5-select
Given a Playwright
instance, register one or both selector engines with .selectors.register()
.
from playwright_ui5_select import css, xpath
# name can be changed here from "ui5_css" to whatever you like
playwright.selectors.register("ui5_css", css)
playwright.selectors.register("ui5_xpath", xpath)
You can use the fixture supplied by playwright-python
to register your selectors with the session-scoped Playwright
instance:
# in conftest.py
@fixture(scope="session", autouse=True)
def _(playwright: Playwright):
playwright.selectors.register("ui5_css", css)
The registered selector will now be available.
def test_basic(page: Page):
page.goto("https://ui5.sap.com")
page.click("ui5_css=sap.m.Button[text='Get Started with UI5']")
See the full api here.
The package also exports *_raw
variables for you to consume as you see fit:
from playwright_ui5_select import css_raw, xpath_raw
print(css_raw)
print(xpath_raw)
These do not include the extra IIFE code that returns the default exports as an expression.
You can also access the raw files directly with importlib.resources
at import/ui5
:
from importlib.resources import files
import playwright_ui5_select
data = files(playwright_ui5_select).joinpath("import").joinpath("ui5")
csspath = data.joinpath("css.js")
print("csspath", csspath)
print("css", csspath.read_text())