Best Python code snippet using playwright-python
_page.py
Source:_page.py  
...284    @property285    def context(self) -> "BrowserContext":286        return self._browser_context287    async def opener(self) -> Optional["Page"]:288        return from_nullable_channel(await self._channel.send("opener"))289    @property290    def main_frame(self) -> Frame:291        return self._main_frame292    def frame(self, name: str = None, url: URLMatch = None) -> Optional[Frame]:293        matcher = URLMatcher(url) if url else None294        for frame in self._frames:295            if name and frame.name == name:296                return frame297            if url and matcher and matcher.matches(frame.url):298                return frame299        return None300    @property301    def frames(self) -> List[Frame]:302        return self._frames.copy()303    def set_default_navigation_timeout(self, timeout: float) -> None:304        self._timeout_settings.set_navigation_timeout(timeout)305        self._channel.send_no_reply(306            "setDefaultNavigationTimeoutNoReply", dict(timeout=timeout)307        )308    def set_default_timeout(self, timeout: float) -> None:309        self._timeout_settings.set_timeout(timeout)310        self._channel.send_no_reply("setDefaultTimeoutNoReply", dict(timeout=timeout))311    async def query_selector(self, selector: str) -> Optional[ElementHandle]:312        return await self._main_frame.query_selector(selector)313    async def query_selector_all(self, selector: str) -> List[ElementHandle]:314        return await self._main_frame.query_selector_all(selector)315    async def wait_for_selector(316        self,317        selector: str,318        timeout: float = None,319        state: Literal["attached", "detached", "hidden", "visible"] = None,320    ) -> Optional[ElementHandle]:321        return await self._main_frame.wait_for_selector(**locals_to_params(locals()))322    async def is_checked(self, selector: str, timeout: float = None) -> bool:323        return await self._main_frame.is_checked(**locals_to_params(locals()))324    async def is_disabled(self, selector: str, timeout: float = None) -> bool:325        return await self._main_frame.is_disabled(**locals_to_params(locals()))326    async def is_editable(self, selector: str, timeout: float = None) -> bool:327        return await self._main_frame.is_editable(**locals_to_params(locals()))328    async def is_enabled(self, selector: str, timeout: float = None) -> bool:329        return await self._main_frame.is_enabled(**locals_to_params(locals()))330    async def is_hidden(self, selector: str, timeout: float = None) -> bool:331        return await self._main_frame.is_hidden(**locals_to_params(locals()))332    async def is_visible(self, selector: str, timeout: float = None) -> bool:333        return await self._main_frame.is_visible(**locals_to_params(locals()))334    async def dispatch_event(335        self, selector: str, type: str, eventInit: Dict = None, timeout: float = None336    ) -> None:337        return await self._main_frame.dispatch_event(**locals_to_params(locals()))338    async def evaluate(self, expression: str, arg: Serializable = None) -> Any:339        return await self._main_frame.evaluate(expression, arg)340    async def evaluate_handle(341        self, expression: str, arg: Serializable = None342    ) -> JSHandle:343        return await self._main_frame.evaluate_handle(expression, arg)344    async def eval_on_selector(345        self,346        selector: str,347        expression: str,348        arg: Serializable = None,349    ) -> Any:350        return await self._main_frame.eval_on_selector(selector, expression, arg)351    async def eval_on_selector_all(352        self,353        selector: str,354        expression: str,355        arg: Serializable = None,356    ) -> Any:357        return await self._main_frame.eval_on_selector_all(selector, expression, arg)358    async def add_script_tag(359        self,360        url: str = None,361        path: Union[str, Path] = None,362        content: str = None,363        type: str = None,364    ) -> ElementHandle:365        return await self._main_frame.add_script_tag(**locals_to_params(locals()))366    async def add_style_tag(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(387            "setExtraHTTPHeaders", dict(headers=serialize_headers(headers))388        )389    @property390    def url(self) -> str:391        return self._main_frame.url392    async def content(self) -> str:393        return await self._main_frame.content()394    async def set_content(395        self,396        html: str,397        timeout: float = None,398        waitUntil: DocumentLoadState = None,399    ) -> None:400        return await self._main_frame.set_content(**locals_to_params(locals()))401    async def goto(402        self,403        url: str,404        timeout: float = None,405        waitUntil: DocumentLoadState = None,406        referer: str = None,407    ) -> Optional[Response]:408        return await self._main_frame.goto(**locals_to_params(locals()))409    async def reload(410        self,411        timeout: float = None,412        waitUntil: DocumentLoadState = None,413    ) -> Optional[Response]:414        return from_nullable_channel(415            await self._channel.send("reload", locals_to_params(locals()))416        )417    async def wait_for_load_state(418        self, state: DocumentLoadState = None, timeout: float = None419    ) -> None:420        return await self._main_frame.wait_for_load_state(**locals_to_params(locals()))421    async def wait_for_event(422        self, event: str, predicate: Callable = None, timeout: float = None423    ) -> Any:424        async with self.expect_event(event, predicate, timeout) as event_info:425            pass426        return await event_info427    async def go_back(428        self,429        timeout: float = None,430        waitUntil: DocumentLoadState = None,431    ) -> Optional[Response]:432        return from_nullable_channel(433            await self._channel.send("goBack", locals_to_params(locals()))434        )435    async def go_forward(436        self,437        timeout: float = None,438        waitUntil: DocumentLoadState = None,439    ) -> Optional[Response]:440        return from_nullable_channel(441            await self._channel.send("goForward", locals_to_params(locals()))442        )443    async def emulate_media(444        self,445        media: Literal["print", "screen"] = None,446        colorScheme: ColorScheme = None,447    ) -> None:448        await self._channel.send("emulateMedia", locals_to_params(locals()))449    async def set_viewport_size(self, viewportSize: ViewportSize) -> None:450        self._viewport_size = viewportSize451        await self._channel.send("setViewportSize", locals_to_params(locals()))452    @property453    def viewport_size(self) -> Optional[ViewportSize]:454        return self._viewport_size..._frame.py
Source:_frame.py  
...54    def __init__(55        self, parent: ChannelOwner, type: str, guid: str, initializer: Dict56    ) -> None:57        super().__init__(parent, type, guid, initializer)58        self._parent_frame = from_nullable_channel(initializer.get("parentFrame"))59        if self._parent_frame:60            self._parent_frame._child_frames.append(self)61        self._name = initializer["name"]62        self._url = initializer["url"]63        self._detached = False64        self._child_frames: List[Frame] = []65        self._page: "Page"66        self._load_states: Set[str] = set(initializer["loadStates"])67        self._event_emitter = EventEmitter()68        self._channel.on(69            "loadstate",70            lambda params: self._on_load_state(params.get("add"), params.get("remove")),71        )72        self._channel.on(73            "navigated",74            lambda params: self._on_frame_navigated(params),75        )76    def _on_load_state(77        self, add: DocumentLoadState = None, remove: DocumentLoadState = None78    ) -> None:79        if add:80            self._load_states.add(add)81            self._event_emitter.emit("loadstate", add)82        elif remove and remove in self._load_states:83            self._load_states.remove(remove)84    def _on_frame_navigated(self, event: FrameNavigatedEvent) -> None:85        self._url = event["url"]86        self._name = event["name"]87        self._event_emitter.emit("navigated", event)88        if "error" not in event and hasattr(self, "_page") and self._page:89            self._page.emit("framenavigated", self)90    @property91    def page(self) -> "Page":92        return self._page93    async def goto(94        self,95        url: str,96        timeout: float = None,97        waitUntil: DocumentLoadState = None,98        referer: str = None,99    ) -> Optional[Response]:100        return cast(101            Optional[Response],102            from_nullable_channel(103                await self._channel.send("goto", locals_to_params(locals()))104            ),105        )106    def _setup_navigation_wait_helper(self, timeout: float = None) -> WaitHelper:107        wait_helper = WaitHelper(self._loop)108        wait_helper.reject_on_event(109            self._page, "close", Error("Navigation failed because page was closed!")110        )111        wait_helper.reject_on_event(112            self._page, "crash", Error("Navigation failed because page crashed!")113        )114        wait_helper.reject_on_event(115            self._page,116            "framedetached",117            Error("Navigating frame was detached!"),118            lambda frame: frame == self,119        )120        if timeout is None:121            timeout = self._page._timeout_settings.navigation_timeout()122        wait_helper.reject_on_timeout(timeout, f"Timeout {timeout}ms exceeded.")123        return wait_helper124    def expect_navigation(125        self,126        url: URLMatch = None,127        wait_until: DocumentLoadState = None,128        timeout: float = None,129    ) -> EventContextManagerImpl[Response]:130        if not wait_until:131            wait_until = "load"132        if timeout is None:133            timeout = self._page._timeout_settings.navigation_timeout()134        deadline = monotonic_time() + timeout135        wait_helper = self._setup_navigation_wait_helper(timeout)136        matcher = URLMatcher(url) if url else None137        def predicate(event: Any) -> bool:138            # Any failed navigation results in a rejection.139            if event.get("error"):140                return True141            return not matcher or matcher.matches(event["url"])142        wait_helper.wait_for_event(143            self._event_emitter,144            "navigated",145            predicate=predicate,146        )147        async def continuation() -> Optional[Response]:148            event = await wait_helper.result()149            if "error" in event:150                raise Error(event["error"])151            if wait_until not in self._load_states:152                t = deadline - monotonic_time()153                if t > 0:154                    await self.wait_for_load_state(state=wait_until, timeout=t)155            if "newDocument" in event and "request" in event["newDocument"]:156                request = from_channel(event["newDocument"]["request"])157                return await request.response()158            return None159        return EventContextManagerImpl(asyncio.create_task(continuation()))160    async def wait_for_load_state(161        self, state: DocumentLoadState = None, timeout: float = None162    ) -> None:163        if not state:164            state = "load"165        if state not in ("load", "domcontentloaded", "networkidle"):166            raise Error("state: expected one of (load|domcontentloaded|networkidle)")167        if state in self._load_states:168            return169        wait_helper = self._setup_navigation_wait_helper(timeout)170        wait_helper.wait_for_event(171            self._event_emitter, "loadstate", lambda s: s == state172        )173        await wait_helper.result()174    async def frame_element(self) -> ElementHandle:175        return from_channel(await self._channel.send("frameElement"))176    async def evaluate(self, expression: str, arg: Serializable = None) -> Any:177        return parse_result(178            await self._channel.send(179                "evaluateExpression",180                dict(181                    expression=expression,182                    arg=serialize_argument(arg),183                ),184            )185        )186    async def evaluate_handle(187        self, expression: str, arg: Serializable = None188    ) -> JSHandle:189        return from_channel(190            await self._channel.send(191                "evaluateExpressionHandle",192                dict(193                    expression=expression,194                    arg=serialize_argument(arg),195                ),196            )197        )198    async def query_selector(self, selector: str) -> Optional[ElementHandle]:199        return from_nullable_channel(200            await self._channel.send("querySelector", dict(selector=selector))201        )202    async def query_selector_all(self, selector: str) -> List[ElementHandle]:203        return list(204            map(205                cast(ElementHandle, from_channel),206                await self._channel.send("querySelectorAll", dict(selector=selector)),207            )208        )209    async def wait_for_selector(210        self,211        selector: str,212        timeout: float = None,213        state: Literal["attached", "detached", "hidden", "visible"] = None,214    ) -> Optional[ElementHandle]:215        return from_nullable_channel(216            await self._channel.send("waitForSelector", locals_to_params(locals()))217        )218    async def is_checked(self, selector: str, timeout: float = None) -> bool:219        return await self._channel.send("isChecked", locals_to_params(locals()))220    async def is_disabled(self, selector: str, timeout: float = None) -> bool:221        return await self._channel.send("isDisabled", locals_to_params(locals()))222    async def is_editable(self, selector: str, timeout: float = None) -> bool:223        return await self._channel.send("isEditable", locals_to_params(locals()))224    async def is_enabled(self, selector: str, timeout: float = None) -> bool:225        return await self._channel.send("isEnabled", locals_to_params(locals()))226    async def is_hidden(self, selector: str, timeout: float = None) -> bool:227        return await self._channel.send("isHidden", locals_to_params(locals()))228    async def is_visible(self, selector: str, timeout: float = None) -> bool:229        return await self._channel.send("isVisible", locals_to_params(locals()))..._browser_context.py
Source:_browser_context.py  
...104        self._channel.on(105            "request",106            lambda params: self._on_request(107                from_channel(params["request"]),108                from_nullable_channel(params.get("page")),109            ),110        )111        self._channel.on(112            "response",113            lambda params: self._on_response(114                from_channel(params["response"]),115                from_nullable_channel(params.get("page")),116            ),117        )118        self._channel.on(119            "requestFailed",120            lambda params: self._on_request_failed(121                from_channel(params["request"]),122                params["responseEndTiming"],123                params.get("failureText"),124                from_nullable_channel(params.get("page")),125            ),126        )127        self._channel.on(128            "requestFinished",129            lambda params: self._on_request_finished(130                from_channel(params["request"]),131                from_nullable_channel(params.get("response")),132                params["responseEndTiming"],133                from_nullable_channel(params.get("page")),134            ),135        )136        self._closed_future: asyncio.Future = asyncio.Future()137        self.once(138            self.Events.Close, lambda context: self._closed_future.set_result(True)139        )140    def __repr__(self) -> str:141        return f"<BrowserContext browser={self.browser}>"142    def _on_page(self, page: Page) -> None:143        self._pages.append(page)144        self.emit(BrowserContext.Events.Page, page)145        if page._opener and not page._opener.is_closed():146            page._opener.emit(Page.Events.Popup, page)147    def _on_route(self, route: Route, request: Request) -> None:..._network.py
Source:_network.py  
...34    def __init__(35        self, parent: ChannelOwner, type: str, guid: str, initializer: Dict36    ) -> None:37        super().__init__(parent, type, guid, initializer)38        self._redirected_from: Optional["Request"] = from_nullable_channel(39            initializer.get("redirectedFrom")40        )41        self._redirected_to: Optional["Request"] = None42        if self._redirected_from:43            self._redirected_from._redirected_to = self44        self._failure_text: Optional[str] = None45        self._timing: ResourceTiming = {46            "startTime": 0,47            "domainLookupStart": -1,48            "domainLookupEnd": -1,49            "connectStart": -1,50            "secureConnectionStart": -1,51            "connectEnd": -1,52            "requestStart": -1,53            "responseStart": -1,54            "responseEnd": -1,55        }56        self._headers: Dict[str, str] = parse_headers(self._initializer["headers"])57    @property58    def url(self) -> str:59        return self._initializer["url"]60    @property61    def resource_type(self) -> str:62        return self._initializer["resourceType"]63    @property64    def method(self) -> str:65        return self._initializer["method"]66    @property67    def post_data(self) -> Optional[str]:68        data = self.post_data_buffer69        if not data:70            return None71        return data.decode()72    @property73    def post_data_json(self) -> Optional[Any]:74        post_data = self.post_data75        if not post_data:76            return None77        content_type = self.headers["content-type"]78        if not content_type:79            return None80        if content_type == "application/x-www-form-urlencoded":81            return dict(parse.parse_qsl(post_data))82        return json.loads(post_data)83    @property84    def post_data_buffer(self) -> Optional[bytes]:85        b64_content = self._initializer.get("postData")86        if not b64_content:87            return None88        return base64.b64decode(b64_content)89    @property90    def headers(self) -> Dict[str, str]:91        return self._headers92    async def response(self) -> Optional["Response"]:93        return from_nullable_channel(await self._channel.send("response"))94    @property95    def frame(self) -> "Frame":96        return from_channel(self._initializer["frame"])97    def is_navigation_request(self) -> bool:98        return self._initializer["isNavigationRequest"]99    @property100    def redirected_from(self) -> Optional["Request"]:101        return self._redirected_from102    @property103    def redirected_to(self) -> Optional["Request"]:104        return self._redirected_to105    @property106    def failure(self) -> Optional[str]:107        return self._failure_text...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!!
