Updated script that can be controled by Nodejs web app
This commit is contained in:
599
lib/python3.13/site-packages/selenium/webdriver/common/devtools/v85/target.py
Executable file
599
lib/python3.13/site-packages/selenium/webdriver/common/devtools/v85/target.py
Executable file
@ -0,0 +1,599 @@
|
||||
# DO NOT EDIT THIS FILE!
|
||||
#
|
||||
# This file is generated from the CDP specification. If you need to make
|
||||
# changes, edit the generator and regenerate all of the modules.
|
||||
#
|
||||
# CDP domain: Target
|
||||
from __future__ import annotations
|
||||
from .util import event_class, T_JSON_DICT
|
||||
from dataclasses import dataclass
|
||||
import enum
|
||||
import typing
|
||||
from . import browser
|
||||
|
||||
|
||||
class TargetID(str):
|
||||
def to_json(self) -> str:
|
||||
return self
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json: str) -> TargetID:
|
||||
return cls(json)
|
||||
|
||||
def __repr__(self):
|
||||
return 'TargetID({})'.format(super().__repr__())
|
||||
|
||||
|
||||
class SessionID(str):
|
||||
'''
|
||||
Unique identifier of attached debugging session.
|
||||
'''
|
||||
def to_json(self) -> str:
|
||||
return self
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json: str) -> SessionID:
|
||||
return cls(json)
|
||||
|
||||
def __repr__(self):
|
||||
return 'SessionID({})'.format(super().__repr__())
|
||||
|
||||
|
||||
@dataclass
|
||||
class TargetInfo:
|
||||
target_id: TargetID
|
||||
|
||||
type_: str
|
||||
|
||||
title: str
|
||||
|
||||
url: str
|
||||
|
||||
#: Whether the target has an attached client.
|
||||
attached: bool
|
||||
|
||||
#: Opener target Id
|
||||
opener_id: typing.Optional[TargetID] = None
|
||||
|
||||
browser_context_id: typing.Optional[browser.BrowserContextID] = None
|
||||
|
||||
def to_json(self):
|
||||
json = dict()
|
||||
json['targetId'] = self.target_id.to_json()
|
||||
json['type'] = self.type_
|
||||
json['title'] = self.title
|
||||
json['url'] = self.url
|
||||
json['attached'] = self.attached
|
||||
if self.opener_id is not None:
|
||||
json['openerId'] = self.opener_id.to_json()
|
||||
if self.browser_context_id is not None:
|
||||
json['browserContextId'] = self.browser_context_id.to_json()
|
||||
return json
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
return cls(
|
||||
target_id=TargetID.from_json(json['targetId']),
|
||||
type_=str(json['type']),
|
||||
title=str(json['title']),
|
||||
url=str(json['url']),
|
||||
attached=bool(json['attached']),
|
||||
opener_id=TargetID.from_json(json['openerId']) if 'openerId' in json else None,
|
||||
browser_context_id=browser.BrowserContextID.from_json(json['browserContextId']) if 'browserContextId' in json else None,
|
||||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class RemoteLocation:
|
||||
host: str
|
||||
|
||||
port: int
|
||||
|
||||
def to_json(self):
|
||||
json = dict()
|
||||
json['host'] = self.host
|
||||
json['port'] = self.port
|
||||
return json
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json):
|
||||
return cls(
|
||||
host=str(json['host']),
|
||||
port=int(json['port']),
|
||||
)
|
||||
|
||||
|
||||
def activate_target(
|
||||
target_id: TargetID
|
||||
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
||||
'''
|
||||
Activates (focuses) the target.
|
||||
|
||||
:param target_id:
|
||||
'''
|
||||
params: T_JSON_DICT = dict()
|
||||
params['targetId'] = target_id.to_json()
|
||||
cmd_dict: T_JSON_DICT = {
|
||||
'method': 'Target.activateTarget',
|
||||
'params': params,
|
||||
}
|
||||
json = yield cmd_dict
|
||||
|
||||
|
||||
def attach_to_target(
|
||||
target_id: TargetID,
|
||||
flatten: typing.Optional[bool] = None
|
||||
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,SessionID]:
|
||||
'''
|
||||
Attaches to the target with given id.
|
||||
|
||||
:param target_id:
|
||||
:param flatten: *(Optional)* Enables "flat" access to the session via specifying sessionId attribute in the commands. We plan to make this the default, deprecate non-flattened mode, and eventually retire it. See crbug.com/991325.
|
||||
:returns: Id assigned to the session.
|
||||
'''
|
||||
params: T_JSON_DICT = dict()
|
||||
params['targetId'] = target_id.to_json()
|
||||
if flatten is not None:
|
||||
params['flatten'] = flatten
|
||||
cmd_dict: T_JSON_DICT = {
|
||||
'method': 'Target.attachToTarget',
|
||||
'params': params,
|
||||
}
|
||||
json = yield cmd_dict
|
||||
return SessionID.from_json(json['sessionId'])
|
||||
|
||||
|
||||
def attach_to_browser_target() -> typing.Generator[T_JSON_DICT,T_JSON_DICT,SessionID]:
|
||||
'''
|
||||
Attaches to the browser target, only uses flat sessionId mode.
|
||||
|
||||
**EXPERIMENTAL**
|
||||
|
||||
:returns: Id assigned to the session.
|
||||
'''
|
||||
cmd_dict: T_JSON_DICT = {
|
||||
'method': 'Target.attachToBrowserTarget',
|
||||
}
|
||||
json = yield cmd_dict
|
||||
return SessionID.from_json(json['sessionId'])
|
||||
|
||||
|
||||
def close_target(
|
||||
target_id: TargetID
|
||||
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,bool]:
|
||||
'''
|
||||
Closes the target. If the target is a page that gets closed too.
|
||||
|
||||
:param target_id:
|
||||
:returns:
|
||||
'''
|
||||
params: T_JSON_DICT = dict()
|
||||
params['targetId'] = target_id.to_json()
|
||||
cmd_dict: T_JSON_DICT = {
|
||||
'method': 'Target.closeTarget',
|
||||
'params': params,
|
||||
}
|
||||
json = yield cmd_dict
|
||||
return bool(json['success'])
|
||||
|
||||
|
||||
def expose_dev_tools_protocol(
|
||||
target_id: TargetID,
|
||||
binding_name: typing.Optional[str] = None
|
||||
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
||||
'''
|
||||
Inject object to the target's main frame that provides a communication
|
||||
channel with browser target.
|
||||
|
||||
Injected object will be available as ``window[bindingName]``.
|
||||
|
||||
The object has the follwing API:
|
||||
- ``binding.send(json)`` - a method to send messages over the remote debugging protocol
|
||||
- ``binding.onmessage = json => handleMessage(json)`` - a callback that will be called for the protocol notifications and command responses.
|
||||
|
||||
**EXPERIMENTAL**
|
||||
|
||||
:param target_id:
|
||||
:param binding_name: *(Optional)* Binding name, 'cdp' if not specified.
|
||||
'''
|
||||
params: T_JSON_DICT = dict()
|
||||
params['targetId'] = target_id.to_json()
|
||||
if binding_name is not None:
|
||||
params['bindingName'] = binding_name
|
||||
cmd_dict: T_JSON_DICT = {
|
||||
'method': 'Target.exposeDevToolsProtocol',
|
||||
'params': params,
|
||||
}
|
||||
json = yield cmd_dict
|
||||
|
||||
|
||||
def create_browser_context(
|
||||
dispose_on_detach: typing.Optional[bool] = None,
|
||||
proxy_server: typing.Optional[str] = None,
|
||||
proxy_bypass_list: typing.Optional[str] = None
|
||||
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,browser.BrowserContextID]:
|
||||
'''
|
||||
Creates a new empty BrowserContext. Similar to an incognito profile but you can have more than
|
||||
one.
|
||||
|
||||
**EXPERIMENTAL**
|
||||
|
||||
:param dispose_on_detach: *(Optional)* If specified, disposes this context when debugging session disconnects.
|
||||
:param proxy_server: *(Optional)* Proxy server, similar to the one passed to --proxy-server
|
||||
:param proxy_bypass_list: *(Optional)* Proxy bypass list, similar to the one passed to --proxy-bypass-list
|
||||
:returns: The id of the context created.
|
||||
'''
|
||||
params: T_JSON_DICT = dict()
|
||||
if dispose_on_detach is not None:
|
||||
params['disposeOnDetach'] = dispose_on_detach
|
||||
if proxy_server is not None:
|
||||
params['proxyServer'] = proxy_server
|
||||
if proxy_bypass_list is not None:
|
||||
params['proxyBypassList'] = proxy_bypass_list
|
||||
cmd_dict: T_JSON_DICT = {
|
||||
'method': 'Target.createBrowserContext',
|
||||
'params': params,
|
||||
}
|
||||
json = yield cmd_dict
|
||||
return browser.BrowserContextID.from_json(json['browserContextId'])
|
||||
|
||||
|
||||
def get_browser_contexts() -> typing.Generator[T_JSON_DICT,T_JSON_DICT,typing.List[browser.BrowserContextID]]:
|
||||
'''
|
||||
Returns all browser contexts created with ``Target.createBrowserContext`` method.
|
||||
|
||||
**EXPERIMENTAL**
|
||||
|
||||
:returns: An array of browser context ids.
|
||||
'''
|
||||
cmd_dict: T_JSON_DICT = {
|
||||
'method': 'Target.getBrowserContexts',
|
||||
}
|
||||
json = yield cmd_dict
|
||||
return [browser.BrowserContextID.from_json(i) for i in json['browserContextIds']]
|
||||
|
||||
|
||||
def create_target(
|
||||
url: str,
|
||||
width: typing.Optional[int] = None,
|
||||
height: typing.Optional[int] = None,
|
||||
browser_context_id: typing.Optional[browser.BrowserContextID] = None,
|
||||
enable_begin_frame_control: typing.Optional[bool] = None,
|
||||
new_window: typing.Optional[bool] = None,
|
||||
background: typing.Optional[bool] = None
|
||||
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,TargetID]:
|
||||
'''
|
||||
Creates a new page.
|
||||
|
||||
:param url: The initial URL the page will be navigated to.
|
||||
:param width: *(Optional)* Frame width in DIP (headless chrome only).
|
||||
:param height: *(Optional)* Frame height in DIP (headless chrome only).
|
||||
:param browser_context_id: *(Optional)* The browser context to create the page in.
|
||||
:param enable_begin_frame_control: **(EXPERIMENTAL)** *(Optional)* Whether BeginFrames for this target will be controlled via DevTools (headless chrome only, not supported on MacOS yet, false by default).
|
||||
:param new_window: *(Optional)* Whether to create a new Window or Tab (chrome-only, false by default).
|
||||
:param background: *(Optional)* Whether to create the target in background or foreground (chrome-only, false by default).
|
||||
:returns: The id of the page opened.
|
||||
'''
|
||||
params: T_JSON_DICT = dict()
|
||||
params['url'] = url
|
||||
if width is not None:
|
||||
params['width'] = width
|
||||
if height is not None:
|
||||
params['height'] = height
|
||||
if browser_context_id is not None:
|
||||
params['browserContextId'] = browser_context_id.to_json()
|
||||
if enable_begin_frame_control is not None:
|
||||
params['enableBeginFrameControl'] = enable_begin_frame_control
|
||||
if new_window is not None:
|
||||
params['newWindow'] = new_window
|
||||
if background is not None:
|
||||
params['background'] = background
|
||||
cmd_dict: T_JSON_DICT = {
|
||||
'method': 'Target.createTarget',
|
||||
'params': params,
|
||||
}
|
||||
json = yield cmd_dict
|
||||
return TargetID.from_json(json['targetId'])
|
||||
|
||||
|
||||
def detach_from_target(
|
||||
session_id: typing.Optional[SessionID] = None,
|
||||
target_id: typing.Optional[TargetID] = None
|
||||
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
||||
'''
|
||||
Detaches session with given id.
|
||||
|
||||
:param session_id: *(Optional)* Session to detach.
|
||||
:param target_id: *(Optional)* Deprecated.
|
||||
'''
|
||||
params: T_JSON_DICT = dict()
|
||||
if session_id is not None:
|
||||
params['sessionId'] = session_id.to_json()
|
||||
if target_id is not None:
|
||||
params['targetId'] = target_id.to_json()
|
||||
cmd_dict: T_JSON_DICT = {
|
||||
'method': 'Target.detachFromTarget',
|
||||
'params': params,
|
||||
}
|
||||
json = yield cmd_dict
|
||||
|
||||
|
||||
def dispose_browser_context(
|
||||
browser_context_id: browser.BrowserContextID
|
||||
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
||||
'''
|
||||
Deletes a BrowserContext. All the belonging pages will be closed without calling their
|
||||
beforeunload hooks.
|
||||
|
||||
**EXPERIMENTAL**
|
||||
|
||||
:param browser_context_id:
|
||||
'''
|
||||
params: T_JSON_DICT = dict()
|
||||
params['browserContextId'] = browser_context_id.to_json()
|
||||
cmd_dict: T_JSON_DICT = {
|
||||
'method': 'Target.disposeBrowserContext',
|
||||
'params': params,
|
||||
}
|
||||
json = yield cmd_dict
|
||||
|
||||
|
||||
def get_target_info(
|
||||
target_id: typing.Optional[TargetID] = None
|
||||
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,TargetInfo]:
|
||||
'''
|
||||
Returns information about a target.
|
||||
|
||||
**EXPERIMENTAL**
|
||||
|
||||
:param target_id: *(Optional)*
|
||||
:returns:
|
||||
'''
|
||||
params: T_JSON_DICT = dict()
|
||||
if target_id is not None:
|
||||
params['targetId'] = target_id.to_json()
|
||||
cmd_dict: T_JSON_DICT = {
|
||||
'method': 'Target.getTargetInfo',
|
||||
'params': params,
|
||||
}
|
||||
json = yield cmd_dict
|
||||
return TargetInfo.from_json(json['targetInfo'])
|
||||
|
||||
|
||||
def get_targets() -> typing.Generator[T_JSON_DICT,T_JSON_DICT,typing.List[TargetInfo]]:
|
||||
'''
|
||||
Retrieves a list of available targets.
|
||||
|
||||
:returns: The list of targets.
|
||||
'''
|
||||
cmd_dict: T_JSON_DICT = {
|
||||
'method': 'Target.getTargets',
|
||||
}
|
||||
json = yield cmd_dict
|
||||
return [TargetInfo.from_json(i) for i in json['targetInfos']]
|
||||
|
||||
|
||||
def send_message_to_target(
|
||||
message: str,
|
||||
session_id: typing.Optional[SessionID] = None,
|
||||
target_id: typing.Optional[TargetID] = None
|
||||
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
||||
'''
|
||||
Sends protocol message over session with given id.
|
||||
Consider using flat mode instead; see commands attachToTarget, setAutoAttach,
|
||||
and crbug.com/991325.
|
||||
|
||||
:param message:
|
||||
:param session_id: *(Optional)* Identifier of the session.
|
||||
:param target_id: *(Optional)* Deprecated.
|
||||
'''
|
||||
params: T_JSON_DICT = dict()
|
||||
params['message'] = message
|
||||
if session_id is not None:
|
||||
params['sessionId'] = session_id.to_json()
|
||||
if target_id is not None:
|
||||
params['targetId'] = target_id.to_json()
|
||||
cmd_dict: T_JSON_DICT = {
|
||||
'method': 'Target.sendMessageToTarget',
|
||||
'params': params,
|
||||
}
|
||||
json = yield cmd_dict
|
||||
|
||||
|
||||
def set_auto_attach(
|
||||
auto_attach: bool,
|
||||
wait_for_debugger_on_start: bool,
|
||||
flatten: typing.Optional[bool] = None
|
||||
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
||||
'''
|
||||
Controls whether to automatically attach to new targets which are considered to be related to
|
||||
this one. When turned on, attaches to all existing related targets as well. When turned off,
|
||||
automatically detaches from all currently attached targets.
|
||||
|
||||
**EXPERIMENTAL**
|
||||
|
||||
:param auto_attach: Whether to auto-attach to related targets.
|
||||
:param wait_for_debugger_on_start: Whether to pause new targets when attaching to them. Use ```Runtime.runIfWaitingForDebugger``` to run paused targets.
|
||||
:param flatten: *(Optional)* Enables "flat" access to the session via specifying sessionId attribute in the commands. We plan to make this the default, deprecate non-flattened mode, and eventually retire it. See crbug.com/991325.
|
||||
'''
|
||||
params: T_JSON_DICT = dict()
|
||||
params['autoAttach'] = auto_attach
|
||||
params['waitForDebuggerOnStart'] = wait_for_debugger_on_start
|
||||
if flatten is not None:
|
||||
params['flatten'] = flatten
|
||||
cmd_dict: T_JSON_DICT = {
|
||||
'method': 'Target.setAutoAttach',
|
||||
'params': params,
|
||||
}
|
||||
json = yield cmd_dict
|
||||
|
||||
|
||||
def set_discover_targets(
|
||||
discover: bool
|
||||
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
||||
'''
|
||||
Controls whether to discover available targets and notify via
|
||||
``targetCreated/targetInfoChanged/targetDestroyed`` events.
|
||||
|
||||
:param discover: Whether to discover available targets.
|
||||
'''
|
||||
params: T_JSON_DICT = dict()
|
||||
params['discover'] = discover
|
||||
cmd_dict: T_JSON_DICT = {
|
||||
'method': 'Target.setDiscoverTargets',
|
||||
'params': params,
|
||||
}
|
||||
json = yield cmd_dict
|
||||
|
||||
|
||||
def set_remote_locations(
|
||||
locations: typing.List[RemoteLocation]
|
||||
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
||||
'''
|
||||
Enables target discovery for the specified locations, when ``setDiscoverTargets`` was set to
|
||||
``true``.
|
||||
|
||||
**EXPERIMENTAL**
|
||||
|
||||
:param locations: List of remote locations.
|
||||
'''
|
||||
params: T_JSON_DICT = dict()
|
||||
params['locations'] = [i.to_json() for i in locations]
|
||||
cmd_dict: T_JSON_DICT = {
|
||||
'method': 'Target.setRemoteLocations',
|
||||
'params': params,
|
||||
}
|
||||
json = yield cmd_dict
|
||||
|
||||
|
||||
@event_class('Target.attachedToTarget')
|
||||
@dataclass
|
||||
class AttachedToTarget:
|
||||
'''
|
||||
**EXPERIMENTAL**
|
||||
|
||||
Issued when attached to target because of auto-attach or ``attachToTarget`` command.
|
||||
'''
|
||||
#: Identifier assigned to the session used to send/receive messages.
|
||||
session_id: SessionID
|
||||
target_info: TargetInfo
|
||||
waiting_for_debugger: bool
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json: T_JSON_DICT) -> AttachedToTarget:
|
||||
return cls(
|
||||
session_id=SessionID.from_json(json['sessionId']),
|
||||
target_info=TargetInfo.from_json(json['targetInfo']),
|
||||
waiting_for_debugger=bool(json['waitingForDebugger'])
|
||||
)
|
||||
|
||||
|
||||
@event_class('Target.detachedFromTarget')
|
||||
@dataclass
|
||||
class DetachedFromTarget:
|
||||
'''
|
||||
**EXPERIMENTAL**
|
||||
|
||||
Issued when detached from target for any reason (including ``detachFromTarget`` command). Can be
|
||||
issued multiple times per target if multiple sessions have been attached to it.
|
||||
'''
|
||||
#: Detached session identifier.
|
||||
session_id: SessionID
|
||||
#: Deprecated.
|
||||
target_id: typing.Optional[TargetID]
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json: T_JSON_DICT) -> DetachedFromTarget:
|
||||
return cls(
|
||||
session_id=SessionID.from_json(json['sessionId']),
|
||||
target_id=TargetID.from_json(json['targetId']) if 'targetId' in json else None
|
||||
)
|
||||
|
||||
|
||||
@event_class('Target.receivedMessageFromTarget')
|
||||
@dataclass
|
||||
class ReceivedMessageFromTarget:
|
||||
'''
|
||||
Notifies about a new protocol message received from the session (as reported in
|
||||
``attachedToTarget`` event).
|
||||
'''
|
||||
#: Identifier of a session which sends a message.
|
||||
session_id: SessionID
|
||||
message: str
|
||||
#: Deprecated.
|
||||
target_id: typing.Optional[TargetID]
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json: T_JSON_DICT) -> ReceivedMessageFromTarget:
|
||||
return cls(
|
||||
session_id=SessionID.from_json(json['sessionId']),
|
||||
message=str(json['message']),
|
||||
target_id=TargetID.from_json(json['targetId']) if 'targetId' in json else None
|
||||
)
|
||||
|
||||
|
||||
@event_class('Target.targetCreated')
|
||||
@dataclass
|
||||
class TargetCreated:
|
||||
'''
|
||||
Issued when a possible inspection target is created.
|
||||
'''
|
||||
target_info: TargetInfo
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json: T_JSON_DICT) -> TargetCreated:
|
||||
return cls(
|
||||
target_info=TargetInfo.from_json(json['targetInfo'])
|
||||
)
|
||||
|
||||
|
||||
@event_class('Target.targetDestroyed')
|
||||
@dataclass
|
||||
class TargetDestroyed:
|
||||
'''
|
||||
Issued when a target is destroyed.
|
||||
'''
|
||||
target_id: TargetID
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json: T_JSON_DICT) -> TargetDestroyed:
|
||||
return cls(
|
||||
target_id=TargetID.from_json(json['targetId'])
|
||||
)
|
||||
|
||||
|
||||
@event_class('Target.targetCrashed')
|
||||
@dataclass
|
||||
class TargetCrashed:
|
||||
'''
|
||||
Issued when a target has crashed.
|
||||
'''
|
||||
target_id: TargetID
|
||||
#: Termination status type.
|
||||
status: str
|
||||
#: Termination error code.
|
||||
error_code: int
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json: T_JSON_DICT) -> TargetCrashed:
|
||||
return cls(
|
||||
target_id=TargetID.from_json(json['targetId']),
|
||||
status=str(json['status']),
|
||||
error_code=int(json['errorCode'])
|
||||
)
|
||||
|
||||
|
||||
@event_class('Target.targetInfoChanged')
|
||||
@dataclass
|
||||
class TargetInfoChanged:
|
||||
'''
|
||||
Issued when some information about a target has changed. This only happens between
|
||||
``targetCreated`` and ``targetDestroyed``.
|
||||
'''
|
||||
target_info: TargetInfo
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json: T_JSON_DICT) -> TargetInfoChanged:
|
||||
return cls(
|
||||
target_info=TargetInfo.from_json(json['targetInfo'])
|
||||
)
|
Reference in New Issue
Block a user