seleniumbase 4.37.8__py3-none-any.whl → 4.37.10__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.37.8"
2
+ __version__ = "4.37.10"
@@ -515,7 +515,7 @@ def uc_open_with_reconnect(driver, url, reconnect_time=None):
515
515
  return None
516
516
 
517
517
 
518
- def uc_open_with_cdp_mode(driver, url=None):
518
+ def uc_open_with_cdp_mode(driver, url=None, **kwargs):
519
519
  import asyncio
520
520
  from seleniumbase.undetected.cdp_driver import cdp_util
521
521
 
@@ -607,7 +607,9 @@ def uc_open_with_cdp_mode(driver, url=None):
607
607
  loop.run_until_complete(page_tab.activate())
608
608
 
609
609
  loop.run_until_complete(driver.cdp_base.update_targets())
610
- page = loop.run_until_complete(driver.cdp_base.get(url))
610
+ page = loop.run_until_complete(
611
+ driver.cdp_base.get(url, **kwargs)
612
+ )
611
613
  with gui_lock:
612
614
  with suppress(Exception):
613
615
  shared_utils.make_writable(constants.MultiBrowser.PYAUTOGUILOCK)
@@ -792,8 +794,8 @@ def uc_open_with_cdp_mode(driver, url=None):
792
794
  driver._is_using_cdp = True
793
795
 
794
796
 
795
- def uc_activate_cdp_mode(driver, url=None):
796
- uc_open_with_cdp_mode(driver, url=url)
797
+ def uc_activate_cdp_mode(driver, url=None, **kwargs):
798
+ uc_open_with_cdp_mode(driver, url=url, **kwargs)
797
799
 
798
800
 
799
801
  def uc_open_with_disconnect(driver, url, timeout=None):
@@ -101,12 +101,12 @@ class CDPMethods():
101
101
  element.get_parent = lambda: self.__get_parent(element)
102
102
  return element
103
103
 
104
- def get(self, url):
104
+ def get(self, url, **kwargs):
105
105
  url = shared_utils.fix_url_as_needed(url)
106
106
  driver = self.driver
107
107
  if hasattr(driver, "cdp_base"):
108
108
  driver = driver.cdp_base
109
- self.loop.run_until_complete(self.page.get(url))
109
+ self.loop.run_until_complete(self.page.get(url, **kwargs))
110
110
  url_protocol = url.split(":")[0]
111
111
  safe_url = True
112
112
  if url_protocol not in ["about", "data", "chrome"]:
@@ -120,8 +120,8 @@ class CDPMethods():
120
120
  self.__slow_mode_pause_if_set()
121
121
  self.loop.run_until_complete(self.page.wait())
122
122
 
123
- def open(self, url):
124
- self.get(url)
123
+ def open(self, url, **kwargs):
124
+ self.get(url, **kwargs)
125
125
 
126
126
  def reload(self, ignore_cache=True, script_to_evaluate_on_load=None):
127
127
  self.loop.run_until_complete(
@@ -4870,7 +4870,7 @@ class BaseCase(unittest.TestCase):
4870
4870
  script = """document.designMode = 'off';"""
4871
4871
  self.execute_script(script)
4872
4872
 
4873
- def activate_cdp_mode(self, url=None):
4873
+ def activate_cdp_mode(self, url=None, **kwargs):
4874
4874
  if hasattr(self.driver, "_is_using_uc") and self.driver._is_using_uc:
4875
4875
  if self.__is_cdp_swap_needed():
4876
4876
  return # CDP Mode is already active
@@ -4879,10 +4879,10 @@ class BaseCase(unittest.TestCase):
4879
4879
  current_url = self.get_current_url()
4880
4880
  if not current_url.startswith(("about", "data", "chrome")):
4881
4881
  self.get_new_driver(undetectable=True)
4882
- self.driver.uc_open_with_cdp_mode(url)
4882
+ self.driver.uc_open_with_cdp_mode(url, **kwargs)
4883
4883
  else:
4884
4884
  self.get_new_driver(undetectable=True)
4885
- self.driver.uc_open_with_cdp_mode(url)
4885
+ self.driver.uc_open_with_cdp_mode(url, **kwargs)
4886
4886
  self.cdp = self.driver.cdp
4887
4887
 
4888
4888
  def activate_recorder(self):
@@ -1369,12 +1369,15 @@ def SB(
1369
1369
  "%s%s%s%s%s"
1370
1370
  % (c1, left_space, end_text, right_space, cr)
1371
1371
  )
1372
- if hasattr(sb_config, "_cdp_aclose"):
1372
+ if undetectable and hasattr(sb, "_drivers_browser_map"):
1373
1373
  import asyncio
1374
- with suppress(Exception):
1375
- loop = asyncio.get_event_loop()
1376
- asyncio.set_event_loop(loop)
1377
- loop.run_until_complete(sb_config._cdp_aclose())
1374
+ for driver in sb._drivers_browser_map.keys():
1375
+ if hasattr(driver, "cdp") and driver.cdp:
1376
+ asyncio.set_event_loop(driver.cdp.loop)
1377
+ tasks = [tab.aclose() for tab in driver.cdp.get_tabs()]
1378
+ tasks.append(driver.cdp.driver.connection.aclose())
1379
+ driver.cdp.loop.run_until_complete(asyncio.gather(*tasks))
1380
+ driver.cdp.loop.close()
1378
1381
  gc.collect()
1379
1382
  if test and test_name and not test_passed and raise_test_failure:
1380
1383
  raise exception
@@ -256,6 +256,7 @@ class Browser:
256
256
  url="about:blank",
257
257
  new_tab: bool = False,
258
258
  new_window: bool = False,
259
+ **kwargs,
259
260
  ) -> tab.Tab:
260
261
  """Top level get. Utilizes the first tab to retrieve given url.
261
262
  Convenience function known from selenium.
@@ -309,6 +310,26 @@ class Browser:
309
310
  and sb_config._cdp_geolocation
310
311
  ):
311
312
  _cdp_geolocation = sb_config._cdp_geolocation
313
+ if "timezone" in kwargs:
314
+ _cdp_timezone = kwargs["timezone"]
315
+ elif "tzone" in kwargs:
316
+ _cdp_timezone = kwargs["tzone"]
317
+ if "user_agent" in kwargs:
318
+ _cdp_user_agent = kwargs["user_agent"]
319
+ elif "agent" in kwargs:
320
+ _cdp_user_agent = kwargs["agent"]
321
+ if "locale" in kwargs:
322
+ _cdp_locale = kwargs["locale"]
323
+ elif "lang" in kwargs:
324
+ _cdp_locale = kwargs["lang"]
325
+ if "platform" in kwargs:
326
+ _cdp_platform = kwargs["platform"]
327
+ elif "plat" in kwargs:
328
+ _cdp_platform = kwargs["plat"]
329
+ if "geolocation" in kwargs:
330
+ _cdp_geolocation = kwargs["geolocation"]
331
+ elif "geoloc" in kwargs:
332
+ _cdp_geolocation = kwargs["geoloc"]
312
333
  if _cdp_timezone:
313
334
  await connection.send(cdp.page.navigate("about:blank"))
314
335
  await connection.set_timezone(_cdp_timezone)
@@ -383,6 +383,10 @@ async def start(
383
383
  sb_config._cdp_user_agent = None
384
384
  if "platform" in kwargs:
385
385
  sb_config._cdp_platform = kwargs["platform"]
386
+ elif "plat" in kwargs:
387
+ sb_config._cdp_platform = kwargs["plat"]
388
+ else:
389
+ sb_config._cdp_platform = None
386
390
  return driver
387
391
 
388
392
 
@@ -19,7 +19,6 @@ from typing import (
19
19
  )
20
20
  import websockets
21
21
  from websockets.protocol import State
22
- from seleniumbase import config as sb_config
23
22
  from . import cdp_util as util
24
23
  import mycdp as cdp
25
24
  import mycdp.network
@@ -271,7 +270,6 @@ class Connection(metaclass=CantTouchThis):
271
270
  max_size=MAX_SIZE,
272
271
  )
273
272
  self.listener = Listener(self)
274
- sb_config._cdp_aclose = self.aclose
275
273
  except (Exception,) as e:
276
274
  logger.debug("Exception during opening of websocket: %s", e)
277
275
  if self.listener:
@@ -446,7 +444,6 @@ class Connection(metaclass=CantTouchThis):
446
444
  if not _is_update:
447
445
  await self._register_handlers()
448
446
  await self.websocket.send(tx.message)
449
- sb_config._cdp_aclose = self.aclose
450
447
  try:
451
448
  return await tx
452
449
  except ProtocolException as e:
@@ -338,6 +338,7 @@ class Tab(Connection):
338
338
  url="about:blank",
339
339
  new_tab: bool = False,
340
340
  new_window: bool = False,
341
+ **kwargs,
341
342
  ):
342
343
  """
343
344
  Top level get. Utilizes the first tab to retrieve the given url.
@@ -359,14 +360,23 @@ class Tab(Connection):
359
360
  if new_tab:
360
361
  if hasattr(sb_config, "incognito") and sb_config.incognito:
361
362
  return await self.browser.get(
362
- url, new_tab=False, new_window=True
363
+ url, new_tab=False, new_window=True, **kwargs
363
364
  )
364
365
  else:
365
- return await self.browser.get(url, new_tab, new_window)
366
+ return await self.browser.get(
367
+ url, new_tab, new_window, **kwargs
368
+ )
366
369
  else:
367
- frame_id, loader_id, *_ = await self.send(cdp.page.navigate(url))
368
- await self
369
- return self
370
+ if not kwargs:
371
+ frame_id, loader_id, *_ = await self.send(
372
+ cdp.page.navigate(url)
373
+ )
374
+ await self
375
+ return self
376
+ else:
377
+ return await self.browser.get(
378
+ url, new_tab, new_window, **kwargs
379
+ )
370
380
 
371
381
  async def query_selector_all(
372
382
  self,
@@ -869,6 +879,7 @@ class Tab(Connection):
869
879
  await self.send(
870
880
  cdp.target.close_target(target_id=self.target.target_id)
871
881
  )
882
+ await self.aclose()
872
883
  await asyncio.sleep(0.1)
873
884
 
874
885
  async def get_window(self) -> Tuple[
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.37.8
3
+ Version: 4.37.10
4
4
  Summary: A complete web automation framework for end-to-end testing.
5
5
  Home-page: https://github.com/seleniumbase/SeleniumBase
6
6
  Author: Michael Mintz
@@ -3,7 +3,7 @@ sbase/__main__.py,sha256=G0bVB1-DM4PGwQ1KyOupaWCs4ePbChZNNWuX2htim5U,647
3
3
  sbase/steps.py,sha256=_WvAjydKqZfTdnZW9LPKkRty-g-lfdUPmLqnZj6ulcs,43013
4
4
  seleniumbase/__init__.py,sha256=JFEY9P5QJqsa1M6ghzLMH2eIPQyh85iglCaQwg8Y8z4,2498
5
5
  seleniumbase/__main__.py,sha256=dn1p6dgCchmcH1zzTzzQvFwwdQQqnTGH6ULV9m4hv24,654
6
- seleniumbase/__version__.py,sha256=V58urCObAfon7OXV-6PlzXfY_nvnJAlueUECpoey6BA,46
6
+ seleniumbase/__version__.py,sha256=jDe8n1zvjOveWUPBtPnprtARQ-a2p2LPau8n0FGi8dA,47
7
7
  seleniumbase/behave/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  seleniumbase/behave/behave_helper.py,sha256=elkl8P9eLulRAioLstE9baYNM9N_PHBmAOcajX-pH_Y,24198
9
9
  seleniumbase/behave/behave_sb.py,sha256=qQF85LoohJBfrPK5ZcPi50v-pWtOrC9qcN1B3Ki_3tY,59401
@@ -36,7 +36,7 @@ seleniumbase/console_scripts/sb_print.py,sha256=tNy-bMDgwHJO3bZxMpmo9weSE8uhbH0C
36
36
  seleniumbase/console_scripts/sb_recorder.py,sha256=fnHb5-kh11Hit-E9Ha-e4QXzqLcZvtij6mb5qNd4B1Q,11032
37
37
  seleniumbase/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  seleniumbase/core/application_manager.py,sha256=e_0sjtI8cjY5BNyZj1QBR0j6_oCScxGmSXYEpcYwuZE,576
39
- seleniumbase/core/browser_launcher.py,sha256=Jy-F1k45yxSW4-Io403zEOgoGgZg2ZLsHLYSh7VTKgs,239965
39
+ seleniumbase/core/browser_launcher.py,sha256=_alCSt0pJfHh9jAai4tLDRdqlH0P3cPlK93C7a-MK08,240019
40
40
  seleniumbase/core/capabilities_parser.py,sha256=meIS2uHapTCq2ldfNAToC7r0cKmZDRXuYNKExM1GHDY,6038
41
41
  seleniumbase/core/colored_traceback.py,sha256=DrRWfg7XEnKcgY59Xj7Jdk09H-XqHYBSUpB-DiZt6iY,2020
42
42
  seleniumbase/core/create_db_tables.sql,sha256=VWPtrdiW_HQ6yETHjqTu-VIrTwvd8I8o1NfBeaVSHpU,972
@@ -50,7 +50,7 @@ seleniumbase/core/proxy_helper.py,sha256=4VkpMwavz0fx8wcOqJ_jyBT0HIXwcxmAcpd1gjJ
50
50
  seleniumbase/core/recorder_helper.py,sha256=fNGjbapXmEsht54x1o6Igk198QdnPxDDnjUOzQxNhNQ,25055
51
51
  seleniumbase/core/report_helper.py,sha256=AIl6Qava2yW1uSzbLpJBlPlYDz0KE-rVhogh8hsGWBo,12201
52
52
  seleniumbase/core/s3_manager.py,sha256=z_4qx2jI_gtK5r3niGXgEOBpfMUicUCOciowai50MP4,3529
53
- seleniumbase/core/sb_cdp.py,sha256=L7b7kquCIh-pI7vjAi2pE9Z8WAMoTSP99M3zVKKYVSE,86412
53
+ seleniumbase/core/sb_cdp.py,sha256=zgkVXOhwf94NGdsUO0eM8yVUS3s5FzSuAPJNsz3lrZo,86452
54
54
  seleniumbase/core/sb_driver.py,sha256=yvTDRblBzG6bDX7XcLiAA6QcBelSJj_HHL_04lcfeeE,13760
55
55
  seleniumbase/core/session_helper.py,sha256=s9zD3PVZEWVzG2h81cCUskbNWLfdjC_LwwQjKptHCak,558
56
56
  seleniumbase/core/settings_parser.py,sha256=gqVohHVlE_5L5Cqe2L24uYrRzvoK-saX8E_Df7_-_3I,7609
@@ -65,7 +65,7 @@ seleniumbase/extensions/disable_csp.zip,sha256=5RvomXnm2PdivUVcxTV6jfvD8WhTEsQYH
65
65
  seleniumbase/extensions/recorder.zip,sha256=OOyzF-Ize2cSRu1CqhzSAq5vusI9hqLLd2OIApUHesI,11918
66
66
  seleniumbase/extensions/sbase_ext.zip,sha256=3s1N8zrVaMz8RQEOIoBzC3KDjtmHwVZRvVsX25Odr_s,8175
67
67
  seleniumbase/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
- seleniumbase/fixtures/base_case.py,sha256=Bo1kcrg9hCk5COTdTp52znlgq6797CmpSuOeyn98I_s,725922
68
+ seleniumbase/fixtures/base_case.py,sha256=zMRs7mSiWSpqxComRq8Ye7_xl7mvdzs7cIsstyWIVTI,725952
69
69
  seleniumbase/fixtures/constants.py,sha256=WMrItuNyKq3XVJ64NluLIRc4gJCxDw8K8qXED0b9S2w,13752
70
70
  seleniumbase/fixtures/css_to_xpath.py,sha256=9ouDB1xl4MJ2os6JOgTIAyHKOQfuxtxvXC3O5hSnEKA,1954
71
71
  seleniumbase/fixtures/errors.py,sha256=KyxuEVx_e3MPhVrJfNIa_3ltMpbCFxfy_jxK8RFNTns,555
@@ -90,7 +90,7 @@ seleniumbase/plugins/driver_manager.py,sha256=1l4fxISvGV62gfDxp3yfYE2zz4WKJFLE0t
90
90
  seleniumbase/plugins/page_source.py,sha256=loTnXxOj4kxEukuTZEiGyvKBhY3KDVDMnNlHHheTBDE,1889
91
91
  seleniumbase/plugins/pytest_plugin.py,sha256=952AIyaH-PdmNksoeXjzhXxoc8Z53yV-WPjlrHhp2OM,108382
92
92
  seleniumbase/plugins/s3_logging_plugin.py,sha256=WDfertQgGOW_SRJpFMaekYD6vBVW9VO62POtXXy2HCM,2319
93
- seleniumbase/plugins/sb_manager.py,sha256=LkqdnOUAVY0d6Pa2k0jRHGtLkMUTrM5-2FF5nqnORtY,57636
93
+ seleniumbase/plugins/sb_manager.py,sha256=kkQiMWWcL4xkeXwEippZzAoKLScCu5YY4JByJmizG_M,57906
94
94
  seleniumbase/plugins/screen_shots.py,sha256=1hrXw-hzuZ1BR6Yh7AyWX2ABnvnP73-RCbwdz958gj4,1127
95
95
  seleniumbase/plugins/selenium_plugin.py,sha256=y0eNco8T4KgGLProLPHPLw479QH5lRms4wqwOnTgkSc,60081
96
96
  seleniumbase/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -115,12 +115,12 @@ seleniumbase/undetected/reactor.py,sha256=NropaXcO54pzmDq6quR27qPJxab6636H7LRAaq
115
115
  seleniumbase/undetected/webelement.py,sha256=OOpUYbEiOG52KsYYyuDW9tYLdA2SMnukvwQHUdPVn9E,1389
116
116
  seleniumbase/undetected/cdp_driver/__init__.py,sha256=Ga9alwuaZZy4_XOShc0HjgFnNqpPdrcbjAicz5gE7a4,215
117
117
  seleniumbase/undetected/cdp_driver/_contradict.py,sha256=lP4b0h5quAy573ETn_TBbYV889cL1AuPLVInpJ0ZkiU,3183
118
- seleniumbase/undetected/cdp_driver/browser.py,sha256=zhdHeUDXsJpLzLS72SLT-cAdrU1Tf4TE4prQN-wpdC0,31905
119
- seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=3DhxoMwn0kXCz0QBYKEzLlyrztYeu-2HkyVCmg6sq64,23964
118
+ seleniumbase/undetected/cdp_driver/browser.py,sha256=9JGyDIQftCY-u3ega6gO5PTSxkHs7x9ykJszCdyugLo,32814
119
+ seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=flVpVu9o_2zgWFZFEkmfp8fJ6ewTTAJuZmiWm4hz-TA,24093
120
120
  seleniumbase/undetected/cdp_driver/config.py,sha256=t8KV1Vqa5SQRBq3-gjkHHmj9h85AplAM01asO3AWufs,12507
121
- seleniumbase/undetected/cdp_driver/connection.py,sha256=jccGcDt-TqgknvMNQYpRbhrSMC_74tYs-9YH1NK5UGU,24572
121
+ seleniumbase/undetected/cdp_driver/connection.py,sha256=DF57pY08fpnazwDuMhYUfbf7oc9XhxkuJ4JQhH9eNoc,24424
122
122
  seleniumbase/undetected/cdp_driver/element.py,sha256=FIC6v7OmumLCT-_vIc3H4oju_oBbaLpWJUJIKm2c_q4,40467
123
- seleniumbase/undetected/cdp_driver/tab.py,sha256=7zyOFczrRHY-kQhUSl8--luKr4ZMG7F7yzXzeC-WXqY,52743
123
+ seleniumbase/undetected/cdp_driver/tab.py,sha256=wRfeoJwed9OO7SsvdWRIfRRduNFDT1Rl-mBACHf3ZKM,53077
124
124
  seleniumbase/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
125
125
  seleniumbase/utilities/selenium_grid/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
126
  seleniumbase/utilities/selenium_grid/download_selenium_server.py,sha256=ZdoInIbhtmdKCIPxxtJHhd2sqotqcNXWMYbwWrkh9O0,1727
@@ -135,9 +135,9 @@ seleniumbase/utilities/selenium_grid/start-grid-hub.bat,sha256=Ftq-GrAKRYH2ssDPr
135
135
  seleniumbase/utilities/selenium_grid/start-grid-hub.sh,sha256=KADv0RUHONLL2_I443QFK8PryBpDmKn5Gy0s4o0vDSM,106
136
136
  seleniumbase/utilities/selenium_ide/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
137
  seleniumbase/utilities/selenium_ide/convert_ide.py,sha256=pZFnqEJQEKZPyNFjkLD29s2HPQgCrWW9XJWpCPhWOoM,31691
138
- seleniumbase-4.37.8.dist-info/licenses/LICENSE,sha256=BRblZsX7HyPUjQmYTiyWr_e9tzWvmR3R4SFclM2R3W0,1085
139
- seleniumbase-4.37.8.dist-info/METADATA,sha256=fQ_267nDHyMhbJU6z1QsU6ZIpt0RLAnDkcS7CpRIJiw,86953
140
- seleniumbase-4.37.8.dist-info/WHEEL,sha256=ck4Vq1_RXyvS4Jt6SI0Vz6fyVs4GWg7AINwpsaGEgPE,91
141
- seleniumbase-4.37.8.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
- seleniumbase-4.37.8.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
- seleniumbase-4.37.8.dist-info/RECORD,,
138
+ seleniumbase-4.37.10.dist-info/licenses/LICENSE,sha256=BRblZsX7HyPUjQmYTiyWr_e9tzWvmR3R4SFclM2R3W0,1085
139
+ seleniumbase-4.37.10.dist-info/METADATA,sha256=6ciCn6ndu3YZugzQzVcEWCuBqTd1uQkP27d3ZoPZqao,86954
140
+ seleniumbase-4.37.10.dist-info/WHEEL,sha256=ck4Vq1_RXyvS4Jt6SI0Vz6fyVs4GWg7AINwpsaGEgPE,91
141
+ seleniumbase-4.37.10.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
+ seleniumbase-4.37.10.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
+ seleniumbase-4.37.10.dist-info/RECORD,,