seleniumbase 4.37.0__tar.gz → 4.37.2__tar.gz

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.
Files changed (155) hide show
  1. {seleniumbase-4.37.0/seleniumbase.egg-info → seleniumbase-4.37.2}/PKG-INFO +3 -3
  2. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/requirements.txt +2 -2
  3. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/__version__.py +1 -1
  4. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/browser_launcher.py +1 -0
  5. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/sb_cdp.py +23 -7
  6. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/fixtures/base_case.py +7 -0
  7. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/undetected/__init__.py +35 -5
  8. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/undetected/cdp_driver/cdp_util.py +7 -1
  9. {seleniumbase-4.37.0 → seleniumbase-4.37.2/seleniumbase.egg-info}/PKG-INFO +3 -3
  10. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase.egg-info/requires.txt +2 -2
  11. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/setup.py +2 -2
  12. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/.gitignore +0 -0
  13. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/LICENSE +0 -0
  14. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/MANIFEST.in +0 -0
  15. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/README.md +0 -0
  16. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/install.sh +0 -0
  17. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/pyproject.toml +0 -0
  18. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/pytest.ini +0 -0
  19. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/sbase/__init__.py +0 -0
  20. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/sbase/__main__.py +0 -0
  21. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/sbase/steps.py +0 -0
  22. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/__init__.py +0 -0
  23. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/__main__.py +0 -0
  24. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/behave/__init__.py +0 -0
  25. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/behave/behave_helper.py +0 -0
  26. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/behave/behave_sb.py +0 -0
  27. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/behave/steps.py +0 -0
  28. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/common/__init__.py +0 -0
  29. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/common/decorators.py +0 -0
  30. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/common/encryption.py +0 -0
  31. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/common/exceptions.py +0 -0
  32. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/common/obfuscate.py +0 -0
  33. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/common/unobfuscate.py +0 -0
  34. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/config/__init__.py +0 -0
  35. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/config/ad_block_list.py +0 -0
  36. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/config/proxy_list.py +0 -0
  37. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/config/settings.py +0 -0
  38. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/console_scripts/__init__.py +0 -0
  39. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/console_scripts/logo_helper.py +0 -0
  40. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/console_scripts/rich_helper.py +0 -0
  41. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/console_scripts/run.py +0 -0
  42. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  43. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  44. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/console_scripts/sb_commander.py +0 -0
  45. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/console_scripts/sb_install.py +0 -0
  46. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  47. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  48. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  49. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  50. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  51. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  52. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/console_scripts/sb_print.py +0 -0
  53. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  54. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/__init__.py +0 -0
  55. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/application_manager.py +0 -0
  56. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/capabilities_parser.py +0 -0
  57. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/colored_traceback.py +0 -0
  58. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/create_db_tables.sql +0 -0
  59. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/detect_b_ver.py +0 -0
  60. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/download_helper.py +0 -0
  61. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/encoded_images.py +0 -0
  62. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/jqc_helper.py +0 -0
  63. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/log_helper.py +0 -0
  64. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/mysql.py +0 -0
  65. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/proxy_helper.py +0 -0
  66. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/recorder_helper.py +0 -0
  67. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/report_helper.py +0 -0
  68. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/s3_manager.py +0 -0
  69. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/sb_driver.py +0 -0
  70. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/session_helper.py +0 -0
  71. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/settings_parser.py +0 -0
  72. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/style_sheet.py +0 -0
  73. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/testcase_manager.py +0 -0
  74. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/tour_helper.py +0 -0
  75. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/core/visual_helper.py +0 -0
  76. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/drivers/__init__.py +0 -0
  77. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/extensions/__init__.py +0 -0
  78. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/extensions/ad_block.zip +0 -0
  79. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/extensions/disable_csp.zip +0 -0
  80. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/extensions/recorder.zip +0 -0
  81. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/extensions/sbase_ext.zip +0 -0
  82. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/fixtures/__init__.py +0 -0
  83. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/fixtures/constants.py +0 -0
  84. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  85. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/fixtures/errors.py +0 -0
  86. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/fixtures/js_utils.py +0 -0
  87. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/fixtures/page_actions.py +0 -0
  88. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/fixtures/page_utils.py +0 -0
  89. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/fixtures/shared_utils.py +0 -0
  90. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/fixtures/unittest_helper.py +0 -0
  91. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/fixtures/words.py +0 -0
  92. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  93. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/js_code/__init__.py +0 -0
  94. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/js_code/active_css_js.py +0 -0
  95. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/js_code/live_js.py +0 -0
  96. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/js_code/recorder_js.py +0 -0
  97. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/masterqa/__init__.py +0 -0
  98. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/masterqa/master_qa.py +0 -0
  99. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/plugins/__init__.py +0 -0
  100. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/plugins/base_plugin.py +0 -0
  101. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/plugins/basic_test_info.py +0 -0
  102. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  103. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/plugins/driver_manager.py +0 -0
  104. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/plugins/page_source.py +0 -0
  105. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/plugins/pytest_plugin.py +0 -0
  106. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  107. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/plugins/sb_manager.py +0 -0
  108. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/plugins/screen_shots.py +0 -0
  109. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/plugins/selenium_plugin.py +0 -0
  110. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/resources/__init__.py +0 -0
  111. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/translate/__init__.py +0 -0
  112. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/translate/chinese.py +0 -0
  113. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/translate/dutch.py +0 -0
  114. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/translate/french.py +0 -0
  115. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/translate/italian.py +0 -0
  116. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/translate/japanese.py +0 -0
  117. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/translate/korean.py +0 -0
  118. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/translate/master_dict.py +0 -0
  119. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/translate/portuguese.py +0 -0
  120. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/translate/russian.py +0 -0
  121. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/translate/spanish.py +0 -0
  122. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/translate/translator.py +0 -0
  123. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/undetected/cdp.py +0 -0
  124. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
  125. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
  126. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/undetected/cdp_driver/browser.py +0 -0
  127. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/undetected/cdp_driver/config.py +0 -0
  128. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
  129. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/undetected/cdp_driver/element.py +0 -0
  130. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/undetected/cdp_driver/tab.py +0 -0
  131. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/undetected/dprocess.py +0 -0
  132. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/undetected/options.py +0 -0
  133. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/undetected/patcher.py +0 -0
  134. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/undetected/reactor.py +0 -0
  135. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/undetected/webelement.py +0 -0
  136. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/utilities/__init__.py +0 -0
  137. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  138. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  139. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  140. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  141. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  142. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  143. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  144. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  145. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  146. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  147. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  148. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  149. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  150. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase.egg-info/SOURCES.txt +0 -0
  151. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase.egg-info/dependency_links.txt +0 -0
  152. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase.egg-info/entry_points.txt +0 -0
  153. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/seleniumbase.egg-info/top_level.txt +0 -0
  154. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/setup.cfg +0 -0
  155. {seleniumbase-4.37.0 → seleniumbase-4.37.2}/virtualenv_install.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.37.0
3
+ Version: 4.37.2
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
@@ -76,7 +76,7 @@ Requires-Dist: mycdp>=1.1.1
76
76
  Requires-Dist: pynose>=1.5.4
77
77
  Requires-Dist: platformdirs>=4.3.6; python_version < "3.9"
78
78
  Requires-Dist: platformdirs>=4.3.7; python_version >= "3.9"
79
- Requires-Dist: typing-extensions>=4.13.1
79
+ Requires-Dist: typing-extensions>=4.13.2
80
80
  Requires-Dist: sbvirtualdisplay>=1.4.0
81
81
  Requires-Dist: MarkupSafe==2.1.5; python_version < "3.9"
82
82
  Requires-Dist: MarkupSafe>=3.0.2; python_version >= "3.9"
@@ -94,7 +94,7 @@ Requires-Dist: idna==3.10
94
94
  Requires-Dist: chardet==5.2.0
95
95
  Requires-Dist: charset-normalizer==3.4.1
96
96
  Requires-Dist: urllib3<2,>=1.26.20; python_version < "3.10"
97
- Requires-Dist: urllib3<2.4.0,>=1.26.20; python_version >= "3.10"
97
+ Requires-Dist: urllib3<2.5.0,>=1.26.20; python_version >= "3.10"
98
98
  Requires-Dist: requests==2.32.3
99
99
  Requires-Dist: sniffio==1.3.1
100
100
  Requires-Dist: h11==0.14.0
@@ -15,7 +15,7 @@ mycdp>=1.1.1
15
15
  pynose>=1.5.4
16
16
  platformdirs>=4.3.6;python_version<"3.9"
17
17
  platformdirs>=4.3.7;python_version>="3.9"
18
- typing-extensions>=4.13.1
18
+ typing-extensions>=4.13.2
19
19
  sbvirtualdisplay>=1.4.0
20
20
  MarkupSafe==2.1.5;python_version<"3.9"
21
21
  MarkupSafe>=3.0.2;python_version>="3.9"
@@ -33,7 +33,7 @@ idna==3.10
33
33
  chardet==5.2.0
34
34
  charset-normalizer==3.4.1
35
35
  urllib3>=1.26.20,<2;python_version<"3.10"
36
- urllib3>=1.26.20,<2.4.0;python_version>="3.10"
36
+ urllib3>=1.26.20,<2.5.0;python_version>="3.10"
37
37
  requests==2.32.3
38
38
  sniffio==1.3.1
39
39
  h11==0.14.0
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.37.0"
2
+ __version__ = "4.37.2"
@@ -682,6 +682,7 @@ def uc_open_with_cdp_mode(driver, url=None):
682
682
  cdp.gui_click_element = CDPM.gui_click_element
683
683
  cdp.gui_drag_drop_points = CDPM.gui_drag_drop_points
684
684
  cdp.gui_drag_and_drop = CDPM.gui_drag_and_drop
685
+ cdp.gui_click_and_hold = CDPM.gui_click_and_hold
685
686
  cdp.gui_hover_x_y = CDPM.gui_hover_x_y
686
687
  cdp.gui_hover_element = CDPM.gui_hover_element
687
688
  cdp.gui_hover_and_click = CDPM.gui_hover_and_click
@@ -1227,15 +1227,23 @@ class CDPMethods():
1227
1227
  if not timeout:
1228
1228
  timeout = settings.SMALL_TIMEOUT
1229
1229
  selector = self.__convert_to_css_if_xpath(selector)
1230
- self.select(selector, timeout=timeout)
1230
+ element = self.select(selector, timeout=timeout)
1231
1231
  self.__add_light_pause()
1232
- coordinates = self.loop.run_until_complete(
1233
- self.page.js_dumps(
1234
- """document.querySelector"""
1235
- """('%s').getBoundingClientRect()"""
1236
- % js_utils.escape_quotes_if_needed(re.escape(selector))
1232
+ coordinates = None
1233
+ if ":contains(" in selector:
1234
+ position = element.get_position()
1235
+ x = position.x
1236
+ y = position.y
1237
+ width = position.width
1238
+ height = position.height
1239
+ coordinates = {"x": x, "y": y, "width": width, "height": height}
1240
+ else:
1241
+ coordinates = self.loop.run_until_complete(
1242
+ self.page.js_dumps(
1243
+ """document.querySelector('%s').getBoundingClientRect()"""
1244
+ % js_utils.escape_quotes_if_needed(re.escape(selector))
1245
+ )
1237
1246
  )
1238
- )
1239
1247
  return coordinates
1240
1248
 
1241
1249
  def get_element_size(self, selector, timeout=None):
@@ -1665,6 +1673,14 @@ class CDPMethods():
1665
1673
  self.__add_light_pause()
1666
1674
  self.gui_drag_drop_points(x1, y1, x2, y2, timeframe=timeframe)
1667
1675
 
1676
+ def gui_click_and_hold(self, selector, timeframe=0.35):
1677
+ """Use PyAutoGUI to click-and-hold a selector."""
1678
+ self.__slow_mode_pause_if_set()
1679
+ self.bring_active_window_to_front()
1680
+ x, y = self.get_gui_element_center(selector)
1681
+ self.__add_light_pause()
1682
+ self.gui_drag_drop_points(x, y, x, y, timeframe=timeframe)
1683
+
1668
1684
  def __gui_hover_x_y(self, x, y, timeframe=0.25, uc_lock=False):
1669
1685
  self.__install_pyautogui_if_missing()
1670
1686
  import pyautogui
@@ -4871,6 +4871,13 @@ class BaseCase(unittest.TestCase):
4871
4871
 
4872
4872
  def activate_cdp_mode(self, url=None):
4873
4873
  if hasattr(self.driver, "_is_using_uc") and self.driver._is_using_uc:
4874
+ if self.__is_cdp_swap_needed():
4875
+ return # CDP Mode is already active
4876
+ if not self.is_connected():
4877
+ self.driver.connect()
4878
+ current_url = self.get_current_url()
4879
+ if not current_url.startswith(("about", "data", "chrome")):
4880
+ self.get_new_driver(undetectable=True)
4874
4881
  self.driver.uc_open_with_cdp_mode(url)
4875
4882
  else:
4876
4883
  self.get_new_driver(undetectable=True)
@@ -441,7 +441,13 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
441
441
  with suppress(Exception):
442
442
  if self.service.is_connectable():
443
443
  self.stop_client()
444
- self.service.stop()
444
+ try:
445
+ self.service.send_remote_shutdown_command()
446
+ except TypeError:
447
+ pass
448
+ finally:
449
+ with suppress(Exception):
450
+ self.service._terminate_process()
445
451
  if isinstance(timeout, str):
446
452
  if timeout.lower() == "breakpoint":
447
453
  breakpoint() # To continue:
@@ -466,7 +472,13 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
466
472
  self.close()
467
473
  if self.service.is_connectable():
468
474
  self.stop_client()
469
- self.service.stop()
475
+ try:
476
+ self.service.send_remote_shutdown_command()
477
+ except TypeError:
478
+ pass
479
+ finally:
480
+ with suppress(Exception):
481
+ self.service._terminate_process()
470
482
  self.service.start()
471
483
  self.start_session()
472
484
  time.sleep(0.003)
@@ -482,7 +494,13 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
482
494
  if self.service.is_connectable():
483
495
  self.stop_client()
484
496
  time.sleep(0.003)
485
- self.service.stop()
497
+ try:
498
+ self.service.send_remote_shutdown_command()
499
+ except TypeError:
500
+ pass
501
+ finally:
502
+ with suppress(Exception):
503
+ self.service._terminate_process()
486
504
  self._is_connected = False
487
505
 
488
506
  def connect(self):
@@ -507,7 +525,13 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
507
525
  self.close()
508
526
  if self.service.is_connectable():
509
527
  self.stop_client()
510
- self.service.stop()
528
+ try:
529
+ self.service.send_remote_shutdown_command()
530
+ except TypeError:
531
+ pass
532
+ finally:
533
+ with suppress(Exception):
534
+ self.service._terminate_process()
511
535
  self.service.start()
512
536
  self.start_session()
513
537
  time.sleep(0.003)
@@ -539,7 +563,13 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
539
563
  logger.debug("Stopping webdriver service")
540
564
  with suppress(Exception):
541
565
  self.stop_client()
542
- self.service.stop()
566
+ try:
567
+ self.service.send_remote_shutdown_command()
568
+ except TypeError:
569
+ pass
570
+ finally:
571
+ with suppress(Exception):
572
+ self.service._terminate_process()
543
573
  with suppress(Exception):
544
574
  if self.reactor and isinstance(self.reactor, Reactor):
545
575
  logger.debug("Shutting down Reactor")
@@ -406,7 +406,13 @@ async def create_from_driver(driver) -> Browser:
406
406
  browser = await start(conf)
407
407
  browser._process_pid = driver.browser_pid
408
408
  # Stop chromedriver binary
409
- driver.service.stop()
409
+ try:
410
+ driver.service.send_remote_shutdown_command()
411
+ except TypeError:
412
+ pass
413
+ finally:
414
+ with suppress(Exception):
415
+ driver.service._terminate_process()
410
416
  driver.browser_pid = -1
411
417
  driver.user_data_dir = None
412
418
  return browser
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.37.0
3
+ Version: 4.37.2
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
@@ -76,7 +76,7 @@ Requires-Dist: mycdp>=1.1.1
76
76
  Requires-Dist: pynose>=1.5.4
77
77
  Requires-Dist: platformdirs>=4.3.6; python_version < "3.9"
78
78
  Requires-Dist: platformdirs>=4.3.7; python_version >= "3.9"
79
- Requires-Dist: typing-extensions>=4.13.1
79
+ Requires-Dist: typing-extensions>=4.13.2
80
80
  Requires-Dist: sbvirtualdisplay>=1.4.0
81
81
  Requires-Dist: MarkupSafe==2.1.5; python_version < "3.9"
82
82
  Requires-Dist: MarkupSafe>=3.0.2; python_version >= "3.9"
@@ -94,7 +94,7 @@ Requires-Dist: idna==3.10
94
94
  Requires-Dist: chardet==5.2.0
95
95
  Requires-Dist: charset-normalizer==3.4.1
96
96
  Requires-Dist: urllib3<2,>=1.26.20; python_version < "3.10"
97
- Requires-Dist: urllib3<2.4.0,>=1.26.20; python_version >= "3.10"
97
+ Requires-Dist: urllib3<2.5.0,>=1.26.20; python_version >= "3.10"
98
98
  Requires-Dist: requests==2.32.3
99
99
  Requires-Dist: sniffio==1.3.1
100
100
  Requires-Dist: h11==0.14.0
@@ -7,7 +7,7 @@ exceptiongroup>=1.2.2
7
7
  fasteners>=0.19
8
8
  mycdp>=1.1.1
9
9
  pynose>=1.5.4
10
- typing-extensions>=4.13.1
10
+ typing-extensions>=4.13.2
11
11
  sbvirtualdisplay>=1.4.0
12
12
  Jinja2>=3.1.6
13
13
  six>=1.17.0
@@ -68,7 +68,7 @@ pytest-rerunfailures==14.0
68
68
 
69
69
  [:python_version >= "3.10"]
70
70
  setuptools>=78.1.0
71
- urllib3<2.4.0,>=1.26.20
71
+ urllib3<2.5.0,>=1.26.20
72
72
 
73
73
  [:python_version >= "3.9"]
74
74
  websockets>=15.0.1
@@ -164,7 +164,7 @@ setup(
164
164
  "pynose>=1.5.4",
165
165
  'platformdirs>=4.3.6;python_version<"3.9"',
166
166
  'platformdirs>=4.3.7;python_version>="3.9"',
167
- 'typing-extensions>=4.13.1',
167
+ 'typing-extensions>=4.13.2',
168
168
  "sbvirtualdisplay>=1.4.0",
169
169
  'MarkupSafe==2.1.5;python_version<"3.9"',
170
170
  'MarkupSafe>=3.0.2;python_version>="3.9"',
@@ -182,7 +182,7 @@ setup(
182
182
  'chardet==5.2.0',
183
183
  'charset-normalizer==3.4.1',
184
184
  'urllib3>=1.26.20,<2;python_version<"3.10"',
185
- 'urllib3>=1.26.20,<2.4.0;python_version>="3.10"',
185
+ 'urllib3>=1.26.20,<2.5.0;python_version>="3.10"',
186
186
  'requests==2.32.3',
187
187
  'sniffio==1.3.1',
188
188
  'h11==0.14.0',
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes