Best Python code snippet using playwright-python
test_frames.py
Source:test_frames.py
...45 await frame1.frame_element()46 except Error as e:47 error = e48 assert error.message == "Frame has been detached."49async def test_evaluate_throw_for_detached_frames(page, server, utils):50 frame1 = await utils.attach_frame(page, "frame1", server.EMPTY_PAGE)51 await utils.detach_frame(page, "frame1")52 error = None53 try:54 await frame1.evaluate("7 * 8")55 except Error as e:56 error = e57 assert "Execution Context is not available in detached frame" in error.message58async def test_evaluate_isolated_between_frames(page, server, utils):59 await page.goto(server.EMPTY_PAGE)60 await utils.attach_frame(page, "frame1", server.EMPTY_PAGE)61 assert len(page.frames) == 262 [frame1, frame2] = page.frames63 assert frame1 != frame2...
In Playwright for Python, how do I get elements relative to ElementHandle (children, parent, grandparent, siblings)?
Install playwright from a local directory
Python async Playwright pass data outside function
Trying to select the option
playwright is timing out before running page.pause()
Using Playwright with CSS that contains nth element
ModuleNotFoundError: No module named 'greenlet._greenlet'
Trying to do web scraping with Python, but it doesn't work well
pytest file structure - where to put repeated code
How can I download an embeded PDF with PlayWright (python)?
Original answer:
Using querySelector()
/ querySelectorAll
with
XPath (XML Path Language) lets you retrieve the elementHandle
(respectively a collection of handles). Generally speaking, XPath can be used to navigate through elements and attributes in an XML document.
from playwright import sync_playwright
with sync_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = browser_type.launch(headless=False)
page = browser.newPage()
page.goto('https://duckduckgo.com/')
element = page.querySelector('input[id=\"search_form_input_homepage\"]')
parent = element.querySelector('xpath=..')
grandparent = element.querySelector('xpath=../..')
siblings = element.querySelectorAll('xpath=following-sibling::*')
children = element.querySelectorAll('xpath=child::*')
browser.close()
Update (2022-07-22):
It seems that browser.newPage()
is deprecated, so in newer versions of playwright, the function is called browser.new_page()
(note the different function name).
Optionally create a browser context first (and close it afterwards) and call new_page()
on that context.
The way the children/parent/grandparent/siblings are accessed stays the same.
from playwright import sync_playwright
with sync_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = browser_type.launch(headless=False)
context = browser.new_context()
page = context.new_page()
page.goto('https://duckduckgo.com/')
element = page.querySelector('input[id=\"search_form_input_homepage\"]')
parent = element.querySelector('xpath=..')
grandparent = element.querySelector('xpath=../..')
siblings = element.querySelectorAll('xpath=following-sibling::*')
children = element.querySelectorAll('xpath=child::*')
context.close()
browser.close()
Check out the latest blogs from LambdaTest on this topic:
This article is a part of our Content Hub. For more in-depth resources, check out our content hub on Selenium Locators Tutorial.
Web applications continue to evolve at an unbelievable pace, and the architecture surrounding web apps get more complicated all of the time. With the growth in complexity of the web application and the development process, web application testing also needs to keep pace with the ever-changing demands.
The speed at which tests are executed and the “dearth of smartness” in testing are the two major problems developers and testers encounter.
The year 2021 can be encapsulated as one major transition. In 2022, the current breakthroughs in the elusive fight to eliminate the COVID-19 pandemic are top of mind for enterprises globally. At the same time, we are witnessing recent strides in technological advancements as the world gets digitized. As a result, the year 2022 will see the resumption of massive changes in technology and digital transformation, driving firms to adapt and transform themselves perpetually.
Selenium is still the most influential and well-developed framework for web automation testing. Being one of the best automation frameworks with constantly evolving features, it is poised to lead the industry in all aspects as compared to other trending frameworks like Cypress, Puppeteer, PlayWright, etc. Furthermore, using Selenium gives you the flexibility to use different programming languages like C#, Ruby, Perl, Java, Python, etc., and also accommodate different operating systems and web browsers for Selenium automation testing.
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!