Source code for selenium.webdriver.common.bidi.session

# Licensed to the Software Freedom Conservancy (SFC) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The SFC licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.


from selenium.webdriver.common.bidi.common import command_builder


[docs] class UserPromptHandlerType: """Represents the behavior of the user prompt handler.""" ACCEPT = "accept" DISMISS = "dismiss" IGNORE = "ignore" VALID_TYPES = {ACCEPT, DISMISS, IGNORE}
[docs] class UserPromptHandler: """Represents the configuration of the user prompt handler.""" def __init__( self, alert: str | None = None, before_unload: str | None = None, confirm: str | None = None, default: str | None = None, file: str | None = None, prompt: str | None = None, ): """Initialize UserPromptHandler. Args: alert: Handler type for alert prompts. before_unload: Handler type for beforeUnload prompts. confirm: Handler type for confirm prompts. default: Default handler type for all prompts. file: Handler type for file picker prompts. prompt: Handler type for prompt dialogs. Raises: ValueError: If any handler type is not valid. """ for field_name, value in [ ("alert", alert), ("before_unload", before_unload), ("confirm", confirm), ("default", default), ("file", file), ("prompt", prompt), ]: if value is not None and value not in UserPromptHandlerType.VALID_TYPES: raise ValueError( f"Invalid {field_name} handler type: {value}. Must be one of {UserPromptHandlerType.VALID_TYPES}" ) self.alert = alert self.before_unload = before_unload self.confirm = confirm self.default = default self.file = file self.prompt = prompt
[docs] def to_dict(self) -> dict[str, str]: """Convert the UserPromptHandler to a dictionary for BiDi protocol. Returns: Dictionary representation suitable for BiDi protocol. """ field_mapping = { "alert": "alert", "before_unload": "beforeUnload", "confirm": "confirm", "default": "default", "file": "file", "prompt": "prompt", } result = {} for attr_name, dict_key in field_mapping.items(): value = getattr(self, attr_name) if value is not None: result[dict_key] = value return result
[docs] class Session: def __init__(self, conn): self.conn = conn
[docs] def subscribe(self, *events, browsing_contexts=None): params = { "events": events, } if browsing_contexts is None: browsing_contexts = [] if browsing_contexts: params["browsingContexts"] = browsing_contexts return command_builder("session.subscribe", params)
[docs] def unsubscribe(self, *events, browsing_contexts=None): params = { "events": events, } if browsing_contexts is None: browsing_contexts = [] if browsing_contexts: params["browsingContexts"] = browsing_contexts return command_builder("session.unsubscribe", params)
[docs] def status(self): """The session.status command returns information about the remote end's readiness. Returns information about the remote end's readiness to create new sessions and may include implementation-specific metadata. Returns: Dictionary containing the ready state (bool), message (str) and metadata. """ cmd = command_builder("session.status", {}) return self.conn.execute(cmd)