Best Python code snippet using playwright-python
_connection.py
Source:_connection.py
...196 task, "__pw_stack_trace__", None197 )198 callback.stack_trace = stack_trace or traceback.extract_stack()199 self._callbacks[id] = callback200 metadata = {"stack": serialize_call_stack(callback.stack_trace)}201 api_name = getattr(task, "__pw_api_name__", None)202 if api_name:203 metadata["apiName"] = api_name204 message = {205 "id": id,206 "guid": guid,207 "method": method,208 "params": self._replace_channels_with_guids(params),209 "metadata": metadata,210 }211 self._transport.send(message)212 self._callbacks[id] = callback213 return callback214 def dispatch(self, msg: ParsedMessagePayload) -> None:215 id = msg.get("id")216 if id:217 callback = self._callbacks.pop(id)218 if callback.future.cancelled():219 return220 error = msg.get("error")221 if error:222 parsed_error = parse_error(error["error"]) # type: ignore223 parsed_error.stack = "".join(224 traceback.format_list(callback.stack_trace)[-10:]225 )226 callback.future.set_exception(parsed_error)227 else:228 result = self._replace_guids_with_channels(msg.get("result"))229 callback.future.set_result(result)230 return231 guid = msg["guid"]232 method = msg.get("method")233 params = msg.get("params")234 if method == "__create__":235 assert params236 parent = self._objects[guid]237 self._create_remote_object(238 parent, params["type"], params["guid"], params["initializer"]239 )240 return241 if method == "__dispose__":242 self._objects[guid]._dispose()243 return244 object = self._objects[guid]245 try:246 if self._is_sync:247 for listener in object._channel.listeners(method):248 g = greenlet(listener)249 g.switch(self._replace_guids_with_channels(params))250 else:251 object._channel.emit(method, self._replace_guids_with_channels(params))252 except BaseException as exc:253 print("Error occured in event listener", file=sys.stderr)254 traceback.print_exc()255 self._error = exc256 def _create_remote_object(257 self, parent: ChannelOwner, type: str, guid: str, initializer: Dict258 ) -> ChannelOwner:259 initializer = self._replace_guids_with_channels(initializer)260 result = self._object_factory(parent, type, guid, initializer)261 if guid in self._waiting_for_object:262 self._waiting_for_object.pop(guid)(result)263 return result264 def _replace_channels_with_guids(265 self,266 payload: Any,267 ) -> Any:268 if payload is None:269 return payload270 if isinstance(payload, Path):271 return str(payload)272 if isinstance(payload, list):273 return list(map(self._replace_channels_with_guids, payload))274 if isinstance(payload, Channel):275 return dict(guid=payload._guid)276 if isinstance(payload, dict):277 result = {}278 for key, value in payload.items():279 result[key] = self._replace_channels_with_guids(value)280 return result281 return payload282 def _replace_guids_with_channels(self, payload: Any) -> Any:283 if payload is None:284 return payload285 if isinstance(payload, list):286 return list(map(self._replace_guids_with_channels, payload))287 if isinstance(payload, dict):288 if payload.get("guid") in self._objects:289 return self._objects[payload["guid"]]._channel290 result = {}291 for key, value in payload.items():292 result[key] = self._replace_guids_with_channels(value)293 return result294 return payload295def from_channel(channel: Channel) -> Any:296 return channel._object297def from_nullable_channel(channel: Optional[Channel]) -> Optional[Any]:298 return channel._object if channel else None299def serialize_call_stack(stack_trace: traceback.StackSummary) -> List[Dict]:300 stack: List[Dict] = []301 for frame in stack_trace:302 if "_generated.py" in frame.filename:303 break304 stack.append(305 {"file": frame.filename, "line": frame.lineno, "function": frame.name}306 )307 stack.reverse()...
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!!