Best Python code snippet using playwright-python
test_page.py
Source: test_page.py
...229 }"""230 )231 response = await response_info.value232 assert response.url == server.PREFIX + "/digits/2.png"233async def test_expose_binding(page):234 binding_source = []235 def binding(source, a, b):236 binding_source.append(source)237 return a + b238 await page.expose_binding("add", lambda source, a, b: binding(source, a, b))239 result = await page.evaluate("add(5, 6)")240 assert binding_source[0]["context"] == page.context241 assert binding_source[0]["page"] == page242 assert binding_source[0]["frame"] == page.main_frame243 assert result == 11244async def test_expose_function(page, server):245 await page.expose_function("compute", lambda a, b: a * b)246 result = await page.evaluate("compute(9, 4)")247 assert result == 36248@pytest.mark.skip("todo mxschmitt")249async def test_expose_function_should_throw_exception_in_page_context(page, server):250 def throw():251 raise Exception("WOOF WOOF")252 await page.expose_function("woof", lambda: throw())253 result = await page.evaluate(254 """async() => {255 try {256 await woof()257 } catch (e) {258 return {message: e.message, stack: e.stack}259 }260 }"""261 )262 assert result["message"] == "WOOF WOOF"263 assert __file__ in result["stack"]264async def test_expose_function_should_be_callable_from_inside_add_init_script(page):265 called = []266 await page.expose_function("woof", lambda: called.append(True))267 await page.add_init_script("woof()")268 await page.reload()269 assert called == [True]270async def test_expose_function_should_survive_navigation(page, server):271 await page.expose_function("compute", lambda a, b: a * b)272 await page.goto(server.EMPTY_PAGE)273 result = await page.evaluate("compute(9, 4)")274 assert result == 36275async def test_expose_function_should_await_returned_promise(page):276 async def mul(a, b):277 return a * b278 await page.expose_function("compute", mul)279 assert await page.evaluate("compute(3, 5)") == 15280async def test_expose_function_should_work_on_frames(page, server):281 await page.expose_function("compute", lambda a, b: a * b)282 await page.goto(server.PREFIX + "/frames/nested-frames.html")283 frame = page.frames[1]284 assert await frame.evaluate("compute(3, 5)") == 15285async def test_expose_function_should_work_on_frames_before_navigation(page, server):286 await page.goto(server.PREFIX + "/frames/nested-frames.html")287 await page.expose_function("compute", lambda a, b: a * b)288 frame = page.frames[1]289 assert await frame.evaluate("compute(3, 5)") == 15290async def test_expose_function_should_work_after_cross_origin_navigation(page, server):291 await page.goto(server.EMPTY_PAGE)292 await page.expose_function("compute", lambda a, b: a * b)293 await page.goto(server.CROSS_PROCESS_PREFIX + "/empty.html")294 assert await page.evaluate("compute(9, 4)") == 36295async def test_expose_function_should_work_with_complex_objects(page, server):296 await page.expose_function("complexObject", lambda a, b: dict(x=a["x"] + b["x"]))297 result = await page.evaluate("complexObject({x: 5}, {x: 2})")298 assert result["x"] == 7299async def test_expose_bindinghandle_should_work(page, server):300 targets = []301 def logme(t):302 targets.append(t)303 return 17304 await page.expose_binding("logme", lambda source, t: logme(t), handle=True)305 result = await page.evaluate("logme({ foo: 42 })")306 assert (await targets[0].evaluate("x => x.foo")) == 42307 assert result == 17308async def test_page_error_should_fire(page, server, is_webkit):309 async with page.expect_event("pageerror") as error_info:310 await page.goto(server.PREFIX + "/error.html")311 error = await error_info.value312 assert error.message == "Fancy error!"313 stack = await page.evaluate("window.e.stack")314 # Note that WebKit reports the stack of the 'throw' statement instead of the Error constructor call.315 if is_webkit:316 stack = stack.replace("14:25", "15:19")317 assert error.stack == stack318async def test_page_error_should_handle_odd_values(page, is_firefox):...
_page.py
Source: _page.py
...367 self, url: str = None, path: Union[str, Path] = None, content: str = None368 ) -> ElementHandle:369 return await self._main_frame.add_style_tag(**locals_to_params(locals()))370 async def expose_function(self, name: str, callback: Callable) -> None:371 await self.expose_binding(name, lambda source, *args: callback(*args))372 async def expose_binding(373 self, name: str, callback: Callable, handle: bool = None374 ) -> None:375 if name in self._bindings:376 raise Error(f'Function "{name}" has been already registered')377 if name in self._browser_context._bindings:378 raise Error(379 f'Function "{name}" has been already registered in the browser context'380 )381 self._bindings[name] = callback382 await self._channel.send(383 "exposeBinding", dict(name=name, needsHandle=handle or False)384 )385 async def set_extra_http_headers(self, headers: Dict[str, str]) -> None:386 await self._channel.send(...
test_browsercontext.py
Source: test_browsercontext.py
...279 binding_source = []280 def binding(source, a, b):281 binding_source.append(source)282 return a + b283 await context.expose_binding("add", lambda source, a, b: binding(source, a, b))284 page = await context.new_page()285 result = await page.evaluate("add(5, 6)")286 assert binding_source[0]["context"] == context287 assert binding_source[0]["page"] == page288 assert binding_source[0]["frame"] == page.main_frame289 assert result == 11290async def test_expose_function_should_work(context):291 await context.expose_function("add", lambda a, b: a + b)292 page = await context.new_page()293 await page.expose_function("mul", lambda a, b: a * b)294 await context.expose_function("sub", lambda a, b: a - b)295 result = await page.evaluate(296 """async function() {297 return { mul: await mul(9, 4), add: await add(9, 4), sub: await sub(9, 4) }298 }"""299 )300 assert result == {"mul": 36, "add": 13, "sub": 5}301async def test_expose_function_should_throw_for_duplicate_registrations(302 context, server303):304 await context.expose_function("foo", lambda: None)305 await context.expose_function("bar", lambda: None)306 with pytest.raises(Error) as exc_info:307 await context.expose_function("foo", lambda: None)308 assert exc_info.value.message == 'Function "foo" has been already registered'309 page = await context.new_page()310 with pytest.raises(Error) as exc_info:311 await page.expose_function("foo", lambda: None)312 assert (313 exc_info.value.message314 == 'Function "foo" has been already registered in the browser context'315 )316 await page.expose_function("baz", lambda: None)317 with pytest.raises(Error) as exc_info:318 await context.expose_function("baz", lambda: None)319 assert (320 exc_info.value.message321 == 'Function "baz" has been already registered in one of the pages'322 )323async def test_expose_function_should_be_callable_from_inside_add_init_script(324 context, server325):326 args = []327 await context.expose_function("woof", lambda arg: args.append(arg))328 await context.add_init_script("woof('context')")329 page = await context.new_page()330 await page.add_init_script("woof('page')")331 args = []332 await page.reload()333 assert args == ["context", "page"]334async def test_expose_bindinghandle_should_work(context):335 targets = []336 def logme(t):337 targets.append(t)338 return 17339 page = await context.new_page()340 await page.expose_binding("logme", lambda source, t: logme(t), handle=True)341 result = await page.evaluate("logme({ foo: 42 })")342 assert (await targets[0].evaluate("x => x.foo")) == 42343 assert result == 17344async def test_route_should_intercept(context, server):345 intercepted = []346 def handle(route, request):347 intercepted.append(True)348 assert "empty.html" in request.url349 assert request.headers["user-agent"]350 assert request.method == "GET"351 assert request.post_data is None352 assert request.is_navigation_request353 assert request.resource_type == "document"354 assert request.frame == page.main_frame...
_browser_context.py
Source: _browser_context.py
...133 script = file.read()134 if not isinstance(script, str):135 raise Error("Either path or source parameter must be specified")136 await self._channel.send("addInitScript", dict(source=script))137 async def expose_binding(138 self, name: str, callback: Callable, handle: bool = None139 ) -> None:140 for page in self._pages:141 if name in page._bindings:142 raise Error(143 f'Function "{name}" has been already registered in one of the pages'144 )145 if name in self._bindings:146 raise Error(f'Function "{name}" has been already registered')147 self._bindings[name] = callback148 await self._channel.send(149 "exposeBinding", dict(name=name, needsHandle=handle or False)150 )151 async def expose_function(self, name: str, callback: Callable) -> None:152 await self.expose_binding(name, lambda source, *args: callback(*args))153 async def route(self, url: URLMatch, handler: RouteHandler) -> None:154 self._routes.append(RouteHandlerEntry(URLMatcher(url), handler))155 if len(self._routes) == 1:156 await self._channel.send(157 "setNetworkInterceptionEnabled", dict(enabled=True)158 )159 async def unroute(160 self, url: URLMatch, handler: Optional[RouteHandler] = None161 ) -> None:162 self._routes = list(163 filter(164 lambda r: r.matcher.match != url or (handler and r.handler != handler),165 self._routes,166 )...
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!!