Best Python code snippet using playwright-python
test_locators.py
Source: test_locators.py
...507 in_frame = page.frames[1].locator("div")508 assert in_frame.page == page509def test_locator_should_support_has_locator(page: Page, server: Server) -> None:510 page.set_content("<div><span>hello</span></div><div><span>world</span></div>")511 expect(page.locator("div", has=page.locator("text=world"))).to_have_count(1)512 assert (513 page.locator("div", has=page.locator("text=world")).evaluate("e => e.outerHTML")514 == "<div><span>world</span></div>"515 )516 expect(page.locator("div", has=page.locator('text="hello"'))).to_have_count(1)517 assert (518 page.locator("div", has=page.locator('text="hello"')).evaluate(519 "e => e.outerHTML"520 )521 == "<div><span>hello</span></div>"522 )523 expect(page.locator("div", has=page.locator("xpath=./span"))).to_have_count(2)524 expect(page.locator("div", has=page.locator("span"))).to_have_count(2)525 expect(page.locator("div", has=page.locator("span", has_text="wor"))).to_have_count(526 1527 )528 assert (529 page.locator("div", has=page.locator("span", has_text="wor")).evaluate(530 "e => e.outerHTML"531 )532 == "<div><span>world</span></div>"533 )534 expect(535 page.locator(536 "div",537 has=page.locator("span"),538 has_text="wor",539 )540 ).to_have_count(1)541def test_locator_should_enforce_same_frame_for_has_locator(542 page: Page, server: Server543) -> None:544 page.goto(server.PREFIX + "/frames/two-frames.html")545 child = page.frames[1]546 with pytest.raises(Error) as exc_info:547 page.locator("div", has=child.locator("span"))548 assert (549 'Inner "has" locator must belong to the same frame.' in exc_info.value.message...
_assertions.py
Source: _assertions.py
...196 timeout: float = None,197 ) -> None:198 __tracebackhide__ = True199 await self._not.to_have_class(expected, timeout)200 async def to_have_count(201 self,202 count: int,203 timeout: float = None,204 ) -> None:205 __tracebackhide__ = True206 await self._expect_impl(207 "to.have.count",208 FrameExpectOptions(expectedNumber=count, timeout=timeout),209 count,210 "Locator expected to have count",211 )212 async def not_to_have_count(213 self,214 count: int,215 timeout: float = None,216 ) -> None:217 __tracebackhide__ = True218 await self._not.to_have_count(count, timeout)219 async def to_have_css(220 self,221 name: str,222 value: Union[str, Pattern],223 timeout: float = None,224 ) -> None:225 __tracebackhide__ = True226 expected_text = to_expected_text_values([value])227 await self._expect_impl(228 "to.have.css",229 FrameExpectOptions(230 expressionArg=name, expectedText=expected_text, timeout=timeout231 ),232 value,...
test_assertions.py
Source: test_assertions.py
...96 expect(page.locator("div.foobar")).to_have_class([re.compile("foobar")])97 expect(page.locator("div.foobar")).not_to_have_class("kekstar", timeout=100)98 with pytest.raises(AssertionError):99 expect(page.locator("div.foobar")).to_have_class("oh-no", timeout=100)100def test_assertions_locator_to_have_count(page: Page, server: Server) -> None:101 page.goto(server.EMPTY_PAGE)102 page.set_content("<div class=foobar>kek</div><div class=foobar>kek</div>")103 expect(page.locator("div.foobar")).to_have_count(2)104 expect(page.locator("div.foobar")).not_to_have_count(42, timeout=100)105 with pytest.raises(AssertionError):106 expect(page.locator("div.foobar")).to_have_count(42, timeout=100)107def test_assertions_locator_to_have_css(page: Page, server: Server) -> None:108 page.goto(server.EMPTY_PAGE)109 page.set_content("<div class=foobar style='color: rgb(234, 74, 90);'>kek</div>")110 expect(page.locator("div.foobar")).to_have_css("color", "rgb(234, 74, 90)")111 expect(page.locator("div.foobar")).not_to_have_css(112 "color", "rgb(42, 42, 42)", timeout=100113 )114 with pytest.raises(AssertionError):115 expect(page.locator("div.foobar")).to_have_css(116 "color", "rgb(42, 42, 42)", timeout=100117 )118def test_assertions_locator_to_have_id(page: Page, server: Server) -> None:119 page.goto(server.EMPTY_PAGE)120 page.set_content("<div class=foobar id=kek>kek</div>")...
test_browser_user.py
Source: test_browser_user.py
...95 page.click("text=Delete")96 assert page.url == f"{settings['BASE_URL']}/db/test"97 page.goto(table_url)98 locator = page.locator("text=No such table")99 playwright.sync_api.expect(locator).to_have_count(1)100 # Delete the database.101 page.once("dialog", lambda dialog: dialog.accept()) # Callback for next click.102 page.click("text=Delete")103 assert page.url == f"{settings['BASE_URL']}/dbs/owner/{settings['USER_USERNAME']}"104def test_table_csv(settings, page): # 'page' fixture from 'pytest-playwright'105 "Test login, creating a table, inserting data from a CSV file."106 login_user(settings, page)107 # Create a database 'test'.108 page.goto(f"{settings['BASE_URL']}/dbs/owner/{settings['USER_USERNAME']}")109 page.click("text=Create")110 assert page.url == f"{settings['BASE_URL']}/db/"111 page.click('input[name="name"]')112 page.fill('input[name="name"]', "test")113 page.click('button:has-text("Create")')114 assert page.url == f"{settings['BASE_URL']}/db/test"115 # Create a table 't1'.116 page.click("text=Create table")117 assert page.url == f"{settings['BASE_URL']}/table/test"118 page.click('input[name="name"]')119 page.fill('input[name="name"]', "t1")120 page.click('input[name="column0name"]')121 page.fill('input[name="column0name"]', "i")122 page.check("#column0primarykey")123 page.click('input[name="column1name"]')124 page.fill('input[name="column1name"]', "r")125 page.select_option('select[name="column1type"]', "REAL")126 page.click('input[name="column2name"]')127 page.fill('input[name="column2name"]', "j")128 page.click('input[name="column3name"]')129 page.fill('input[name="column3name"]', "t")130 page.select_option('select[name="column3type"]', "TEXT")131 page.check('input[name="column3notnull"]')132 page.click('button:has-text("Create")')133 assert page.url == f"{settings['BASE_URL']}/table/test/t1"134 # Insert data from file.135 page.click("text=Insert from file")136 assert page.url == "http://localhost:5001/table/test/t1/insert"137 with page.expect_file_chooser() as fc_info:138 page.click('input[name="csvfile"]')139 file_chooser = fc_info.value140 file_chooser.set_files("test.csv")141 page.click("text=Insert from CSV file")142 assert page.url == "http://localhost:5001/table/test/t1"143 page.click("text=Database test")144 assert page.url == f"{settings['BASE_URL']}/db/test"145 # Query the database.146 page.click("text=Query")147 assert page.url == "http://localhost:5001/query/test"148 page.click('textarea[name="select"]')149 page.fill('textarea[name="select"]', "i,r")150 page.click('textarea[name="from"]')151 page.fill('textarea[name="from"]', "t1")152 page.click('textarea[name="where"]')153 page.fill('textarea[name="where"]', 't = "blah"')154 page.click("text=Execute query")155 assert page.url == "http://localhost:5001/query/test/rows"156 assert page.locator("#nrows").text_content() == "1"157 locator = page.locator("#rows > tbody > tr")158 playwright.sync_api.expect(locator).to_have_count(1)159 # Modify the query.160 page.click("text=Edit query")161 assert page.url.startswith("http://localhost:5001/query/test")162 page.click('textarea[name="where"]')163 page.fill('textarea[name="where"]', "j = 3")164 page.click("text=Execute query")165 assert page.url == "http://localhost:5001/query/test/rows"166 assert page.locator("#nrows").text_content() == "2"167 locator = page.locator("#rows > tbody > tr")168 playwright.sync_api.expect(locator).to_have_count(2)169 # Delete the database.170 page.click("text=Database test")171 assert page.url == "http://localhost:5001/db/test"172 page.once("dialog", lambda dialog: dialog.accept()) # Callback for next click.173 page.click("text=Delete")174 assert page.url == f"{settings['BASE_URL']}/dbs/owner/{settings['USER_USERNAME']}"175def test_db_upload(settings, page):176 "Test uploading a Sqlite3 database file."177 login_user(settings, page)178 # Upload database file.179 page.goto(f"{settings['BASE_URL']}/dbs/owner/{settings['USER_USERNAME']}")180 page.click("text=Upload")181 assert page.url == "http://localhost:5001/dbs/upload"182 page.once("filechooser", lambda fc: fc.set_files("test.sqlite3"))183 page.click('input[name="sqlite3file"]')184 page.click("text=Upload SQLite3 file")185 assert page.url == "http://localhost:5001/db/test"186 page.click("text=3 rows")187 assert page.url == "http://localhost:5001/table/test/t1"188 locator = page.locator("#rows > tbody > tr")189 playwright.sync_api.expect(locator).to_have_count(3)190 page.click('a[role="button"]:has-text("Schema")')191 assert page.url == "http://localhost:5001/table/test/t1/schema"192 locator = page.locator("#columns > tbody > tr")193 playwright.sync_api.expect(locator).to_have_count(7)194 # Delete the database.195 page.click("text=Database test")196 assert page.url == "http://localhost:5001/db/test"197 page.once("dialog", lambda dialog: dialog.accept()) # Callback for next click.198 page.click("text=Delete")199 assert page.url == f"{settings['BASE_URL']}/dbs/owner/{settings['USER_USERNAME']}"200def test_view(settings, page):201 "Test view creation, based on a table in an uploaded Sqlite3 database file."202 login_user(settings, page)203 # Upload database file.204 page.goto(f"{settings['BASE_URL']}/dbs/owner/{settings['USER_USERNAME']}")205 page.click("text=Upload")206 assert page.url == "http://localhost:5001/dbs/upload"207 page.once("filechooser", lambda fc: fc.set_files("test.sqlite3"))208 page.click('input[name="sqlite3file"]')209 page.click("text=Upload SQLite3 file")210 assert page.url == "http://localhost:5001/db/test"211 # Create the view.212 page.click("text=Query")213 assert page.url == "http://localhost:5001/query/test"214 page.click('textarea[name="select"]')215 page.fill('textarea[name="select"]', "i, r1")216 page.click('textarea[name="from"]')217 page.fill('textarea[name="from"]', "t1")218 page.click('textarea[name="where"]')219 page.fill('textarea[name="where"]', "i2 < 0")220 page.click("text=Execute query")221 assert page.url == "http://localhost:5001/query/test/rows"222 page.click("text=Create view")223 page.click('input[name="name"]')224 page.fill('input[name="name"]', "v1")225 page.click('button:has-text("Create")')226 page.wait_for_timeout(3000)227 locator = page.locator("#rows > tbody > tr")228 playwright.sync_api.expect(locator).to_have_count(2)229 # Delete the database.230 page.click("text=Database test")231 assert page.url == "http://localhost:5001/db/test"232 page.once("dialog", lambda dialog: dialog.accept()) # Callback for next click.233 page.click("text=Delete")234 assert page.url == f"{settings['BASE_URL']}/dbs/owner/{settings['USER_USERNAME']}"...
Playwright error connection refused in docker
playwright-python advanced setup
How to select an input according to a parent sibling label
Error when installing Microsoft Playwright
Trouble waiting for changes to complete that are triggered by Python Playwright `select_option`
Capturing and Storing Request Data Using Playwright for Python
Can Playwright be used to launch a browser instance
Trouble in Clicking on Log in Google Button of Pop Up Menu Playwright Python
Scrapy Playwright get date by clicking button
React locator example
I solved my problem. In fact my docker container (frontend) is called "app" which is also domain name of fronend application. My application is running locally on http. Chromium and geko drivers force httpS connection for some domain names one of which is "app". So i have to change name for my docker container wich contains frontend application.
Check out the latest blogs from LambdaTest on this topic:
The sky’s the limit (and even beyond that) when you want to run test automation. Technology has developed so much that you can reduce time and stay more productive than you used to 10 years ago. You needn’t put up with the limitations brought to you by Selenium if that’s your go-to automation testing tool. Instead, you can pick from various test automation frameworks and tools to write effective test cases and run them successfully.
When it comes to web automation testing, there are a number of frameworks like Selenium, Cypress, PlayWright, Puppeteer, etc., that make it to the ‘preferred list’ of frameworks. The choice of test automation framework depends on a range of parameters like type, complexity, scale, along with the framework expertise available within the team. However, it’s no surprise that Selenium is still the most preferred framework among developers and QAs.
Playwright is a framework that I’ve always heard great things about but never had a chance to pick up until earlier this year. And since then, it’s become one of my favorite test automation frameworks to use when building a new automation project. It’s easy to set up, feature-packed, and one of the fastest, most reliable frameworks I’ve worked with.
The speed at which tests are executed and the “dearth of smartness” in testing are the two major problems developers and testers encounter.
With the rapidly evolving technology due to its ever-increasing demand in today’s world, Digital Security has become a major concern for the Software Industry. There are various ways through which Digital Security can be achieved, Captcha being one of them.Captcha is easy for humans to solve but hard for “bots” and other malicious software to figure out. However, Captcha has always been tricky for the testers to automate, as many of them don’t know how to handle captcha in Selenium or using any other test automation framework.
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!!