1414# KIND, either express or implied. See the License for the
1515# specific language governing permissions and limitations
1616# under the License.
17-
1817"""The WebDriver implementation."""
1918
2019import base64
7675from .websocket_connection import WebSocketConnection
7776
7877cdp = None
79- devtools = None
8078
8179
8280def import_cdp ():
@@ -269,6 +267,7 @@ def __init__(
269267 self ._webextension = None
270268 self ._permissions = None
271269 self ._emulation = None
270+ self ._devtools = None
272271
273272 def __repr__ (self ):
274273 return f'<{ type (self ).__module__ } .{ type (self ).__name__ } (session="{ self .session_id } ")>'
@@ -1184,32 +1183,28 @@ def orientation(self, value) -> None:
11841183 raise WebDriverException ("You can only set the orientation to 'LANDSCAPE' and 'PORTRAIT'" )
11851184
11861185 def start_devtools (self ):
1187- global devtools
1188- if self ._websocket_connection :
1189- return devtools , self ._websocket_connection
1186+ global cdp
1187+ import_cdp ()
1188+ if self .caps .get ("se:cdp" ):
1189+ ws_url = self .caps .get ("se:cdp" )
1190+ version = self .caps .get ("se:cdpVersion" ).split ("." )[0 ]
11901191 else :
1191- global cdp
1192- import_cdp ()
1193-
1194- if not devtools :
1195- if self .caps .get ("se:cdp" ):
1196- ws_url = self .caps .get ("se:cdp" )
1197- version = self .caps .get ("se:cdpVersion" ).split ("." )[0 ]
1198- else :
1199- version , ws_url = self ._get_cdp_details ()
1200-
1201- if not ws_url :
1202- raise WebDriverException ("Unable to find url to connect to from capabilities" )
1203-
1204- devtools = cdp .import_devtools (version )
1205- if self .caps ["browserName" ].lower () == "firefox" :
1206- raise RuntimeError ("CDP support for Firefox has been removed. Please switch to WebDriver BiDi." )
1207- self ._websocket_connection = WebSocketConnection (ws_url )
1208- targets = self ._websocket_connection .execute (devtools .target .get_targets ())
1209- target_id = targets [0 ].target_id
1210- session = self ._websocket_connection .execute (devtools .target .attach_to_target (target_id , True ))
1211- self ._websocket_connection .session_id = session
1212- return devtools , self ._websocket_connection
1192+ version , ws_url = self ._get_cdp_details ()
1193+
1194+ if not ws_url :
1195+ raise WebDriverException ("Unable to find url to connect to from capabilities" )
1196+
1197+ self ._devtools = cdp .import_devtools (version )
1198+ if self ._websocket_connection :
1199+ return self ._devtools , self ._websocket_connection
1200+ if self .caps ["browserName" ].lower () == "firefox" :
1201+ raise RuntimeError ("CDP support for Firefox has been removed. Please switch to WebDriver BiDi." )
1202+ self ._websocket_connection = WebSocketConnection (ws_url )
1203+ targets = self ._websocket_connection .execute (self ._devtools .target .get_targets ())
1204+ target_id = targets [0 ].target_id
1205+ session = self ._websocket_connection .execute (self ._devtools .target .attach_to_target (target_id , True ))
1206+ self ._websocket_connection .session_id = session
1207+ return self ._devtools , self ._websocket_connection
12131208
12141209 @asynccontextmanager
12151210 async def bidi_connection (self ):
@@ -1284,9 +1279,8 @@ def browser(self):
12841279
12851280 @property
12861281 def _session (self ):
1287- """
1288- Returns the BiDi session object for the current WebDriver session.
1289- """
1282+ """Returns the BiDi session object for the current WebDriver
1283+ session."""
12901284 if not self ._websocket_connection :
12911285 self ._start_bidi ()
12921286
@@ -1297,7 +1291,8 @@ def _session(self):
12971291
12981292 @property
12991293 def browsing_context (self ):
1300- """Returns a browsing context module object for BiDi browsing context commands.
1294+ """Returns a browsing context module object for BiDi browsing context
1295+ commands.
13011296
13021297 Returns:
13031298 --------
0 commit comments