seleniumbase 4.32.3__py3-none-any.whl → 4.32.4a1__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.32.3"
2
+ __version__ = "4.32.4a1"
@@ -252,7 +252,7 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
252
252
  "Default",
253
253
  "Preferences",
254
254
  ),
255
- encoding="utf-8",
255
+ encoding="latin1",
256
256
  mode="r+",
257
257
  errors="ignore",
258
258
  ) as fs:
@@ -5,6 +5,7 @@ import secrets
5
5
  import sys
6
6
  import tempfile
7
7
  import zipfile
8
+ from seleniumbase.config import settings
8
9
  from typing import Union, List, Optional
9
10
 
10
11
  __all__ = [
@@ -101,7 +102,13 @@ class Config:
101
102
  # Other keyword args will be accessible by attribute
102
103
  self.__dict__.update(kwargs)
103
104
  super().__init__()
105
+ start_width = settings.CHROME_START_WIDTH
106
+ start_height = settings.CHROME_START_HEIGHT
107
+ start_x = settings.WINDOW_START_X
108
+ start_y = settings.WINDOW_START_Y
104
109
  self._default_browser_args = [
110
+ "--window-size=%s,%s" % (start_width, start_height),
111
+ "--window-position=%s,%s" % (start_x, start_y),
105
112
  "--remote-allow-origins=*",
106
113
  "--no-first-run",
107
114
  "--no-service-autorun",
@@ -292,7 +292,14 @@ class Connection(metaclass=CantTouchThis):
292
292
  if self.listener and self.listener.running:
293
293
  self.listener.cancel()
294
294
  self.enabled_domains.clear()
295
- await self.websocket.close()
295
+ await asyncio.sleep(0.015)
296
+ try:
297
+ await self.websocket.close()
298
+ except Exception:
299
+ logger.debug(
300
+ "\n❌ Error closing websocket connection to %s",
301
+ self.websocket_url
302
+ )
296
303
  logger.debug(
297
304
  "\n❌ Closed websocket connection to %s", self.websocket_url
298
305
  )
@@ -540,6 +547,7 @@ class Listener:
540
547
  self.idle.set()
541
548
  # Pause for a moment.
542
549
  # await asyncio.sleep(self.time_before_considered_idle / 10)
550
+ await asyncio.sleep(0.015)
543
551
  continue
544
552
  except (Exception,) as e:
545
553
  logger.debug(
@@ -1,9 +1,13 @@
1
1
  #!/usr/bin/env python3
2
2
  import json
3
+ import logging
3
4
  import os
5
+ import time
4
6
  from contextlib import suppress
5
7
  from selenium.webdriver.chromium.options import ChromiumOptions
6
8
 
9
+ logger = logging.getLogger(__name__)
10
+
7
11
 
8
12
  class ChromeOptions(ChromiumOptions):
9
13
  _session = None
@@ -53,14 +57,36 @@ class ChromeOptions(ChromiumOptions):
53
57
  with suppress(Exception):
54
58
  if os.path.exists(prefs_file):
55
59
  with open(
56
- prefs_file, encoding="utf-8", mode="r", errors="ignore"
60
+ prefs_file,
61
+ encoding="latin1",
62
+ mode="r",
63
+ errors="ignore",
57
64
  ) as f:
58
- undot_prefs = self._merge_nested(
59
- json.load(f), undot_prefs
60
- )
61
- with suppress(Exception):
62
- with open(prefs_file, encoding="utf-8", mode="w") as f:
63
- json.dump(undot_prefs, f)
65
+ data = json.load(f)
66
+ logger.debug("Existing preferences: %s" % data)
67
+ undot_prefs = self._merge_nested(data, undot_prefs)
68
+ logger.debug("Combined preferences: %s" % undot_prefs)
69
+ time.sleep(0.005)
70
+ if not os.path.exists(prefs_file):
71
+ try:
72
+ with open(
73
+ prefs_file,
74
+ encoding="latin1",
75
+ mode="w",
76
+ errors="ignore",
77
+ ) as f:
78
+ json.dump(undot_prefs, f)
79
+ except Exception:
80
+ time.sleep(0.005)
81
+ with suppress(Exception):
82
+ with open(
83
+ prefs_file,
84
+ encoding="utf-8",
85
+ mode="w",
86
+ errors="ignore",
87
+ ) as f:
88
+ json.dump(undot_prefs, f)
89
+ time.sleep(0.005)
64
90
  # Remove experimental_options to avoid errors
65
91
  del self._experimental_options["prefs"]
66
92
  exclude_switches = self.experimental_options.get("excludeSwitches")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.32.3
3
+ Version: 4.32.4a1
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
@@ -59,7 +59,7 @@ Classifier: Topic :: Utilities
59
59
  Requires-Python: >=3.8
60
60
  Description-Content-Type: text/markdown
61
61
  License-File: LICENSE
62
- Requires-Dist: pip>=24.2
62
+ Requires-Dist: pip>=24.3
63
63
  Requires-Dist: packaging>=24.1
64
64
  Requires-Dist: wheel>=0.44.0
65
65
  Requires-Dist: attrs>=24.2.0
@@ -489,48 +489,49 @@ pip install -e .
489
489
  🔵 **Type ``seleniumbase`` or ``sbase`` to verify that SeleniumBase was installed successfully:**
490
490
 
491
491
  ```bash
492
- ______ __ _ ____
493
- / ____/__ / /__ ____ (_)_ ______ ___ / _ \____ ________
494
- \__ \/ _ \/ / _ \/ __ \/ / / / / __ `__ \ / /_) / __ \/ ___/ _ \
495
- ___/ / __/ / __/ / / / / /_/ / / / / / // /_) / (_/ /__ / __/
496
- /____/\___/_/\___/_/ /_/_/\__,_/_/ /_/ /_//_____/\__,_/____/\___/
497
- ------------------------------------------------------------------
498
-
499
- * USAGE: "seleniumbase [COMMAND] [PARAMETERS]"
500
- * OR: "sbase [COMMAND] [PARAMETERS]"
501
-
502
- COMMANDS:
503
- get / install [DRIVER] [OPTIONS]
504
- methods (List common Python methods)
505
- options (List common pytest options)
506
- behave-options (List common behave options)
507
- gui / commander [OPTIONAL PATH or TEST FILE]
508
- behave-gui (SBase Commander for Behave)
509
- caseplans [OPTIONAL PATH or TEST FILE]
510
- mkdir [DIRECTORY] [OPTIONS]
511
- mkfile [FILE.py] [OPTIONS]
512
- mkrec / codegen [FILE.py] [OPTIONS]
513
- recorder (Open Recorder Desktop App.)
514
- record (If args: mkrec. Else: App.)
515
- mkpres [FILE.py] [LANG]
516
- mkchart [FILE.py] [LANG]
517
- print [FILE] [OPTIONS]
518
- translate [SB_FILE.py] [LANG] [ACTION]
519
- convert [WEBDRIVER_UNITTEST_FILE.py]
520
- extract-objects [SB_FILE.py]
521
- inject-objects [SB_FILE.py] [OPTIONS]
522
- objectify [SB_FILE.py] [OPTIONS]
523
- revert-objects [SB_FILE.py] [OPTIONS]
524
- encrypt / obfuscate
525
- decrypt / unobfuscate
526
- download server (Get Selenium Grid JAR file)
527
- grid-hub [start|stop] [OPTIONS]
528
- grid-node [start|stop] --hub=[HOST/IP]
529
- * (EXAMPLE: "sbase get chromedriver latest") *
530
-
531
- Type "sbase help [COMMAND]" for specific command info.
532
- For info on all commands, type: "seleniumbase --help".
533
- Use "pytest" for running tests.
492
+ ___ _ _ ___
493
+ / __| ___| |___ _ _ (_)_ _ _ __ | _ ) __ _ ______
494
+ \__ \/ -_) / -_) ' \| | \| | ' \ | _ \/ _` (_-< -_)
495
+ |___/\___|_\___|_||_|_|\_,_|_|_|_\|___/\__,_/__|___|
496
+ ----------------------------------------------------
497
+
498
+ ╭──────────────────────────────────────────────────╮
499
+ * USAGE: "seleniumbase [COMMAND] [PARAMETERS]"
500
+ * OR: "sbase [COMMAND] [PARAMETERS]"
501
+ │ │
502
+ COMMANDS: PARAMETERS / DESCRIPTIONS: │
503
+ get / install [DRIVER_NAME] [OPTIONS]
504
+ methods (List common Python methods)
505
+ options (List common pytest options)
506
+ behave-options (List common behave options)
507
+ gui / commander [OPTIONAL PATH or TEST FILE]
508
+ behave-gui (SBase Commander for Behave)
509
+ caseplans [OPTIONAL PATH or TEST FILE]
510
+ mkdir [DIRECTORY] [OPTIONS]
511
+ mkfile [FILE.py] [OPTIONS]
512
+ mkrec / codegen [FILE.py] [OPTIONS]
513
+ recorder (Open Recorder Desktop App.)
514
+ record (If args: mkrec. Else: App.)
515
+ mkpres [FILE.py] [LANG]
516
+ mkchart [FILE.py] [LANG]
517
+ print [FILE] [OPTIONS]
518
+ translate [SB_FILE.py] [LANG] [ACTION]
519
+ convert [WEBDRIVER_UNITTEST_FILE.py]
520
+ extract-objects [SB_FILE.py]
521
+ inject-objects [SB_FILE.py] [OPTIONS]
522
+ objectify [SB_FILE.py] [OPTIONS]
523
+ revert-objects [SB_FILE.py] [OPTIONS]
524
+ encrypt / obfuscate
525
+ decrypt / unobfuscate
526
+ │ proxy (Start a basic proxy server)
527
+ │ download server (Get Selenium Grid JAR file) │
528
+ grid-hub [start|stop] [OPTIONS]
529
+ │ grid-node [start|stop] --hub=[HOST/IP]
530
+ │ │
531
+ * EXAMPLE => "sbase get chromedriver stable" │
532
+ │ * For command info => "sbase help [COMMAND]"
533
+ * For info on all commands => "sbase --help" │
534
+ ╰──────────────────────────────────────────────────╯
534
535
  ```
535
536
 
536
537
  <h3>🔵 Downloading webdrivers:</h3>
@@ -1549,7 +1550,6 @@ pytest --reruns=1 --reruns-delay=1
1549
1550
  <span><a href="https://github.com/seleniumbase/SeleniumBase"><img src="https://seleniumbase.github.io/img/social/share_github.svg" title="SeleniumBase on GitHub" alt="SeleniumBase on GitHub" width="64" /></a></span>
1550
1551
  <span><a href="https://discord.gg/EdhQTn3EyE"><img src="https://seleniumbase.github.io/other/discord_icon.png" title="SeleniumBase on Discord" alt="SeleniumBase on Discord" width="66" /></a></span>
1551
1552
  <span><a href="https://www.facebook.com/SeleniumBase"><img src="https://seleniumbase.io/img/social/share_facebook.svg" title="SeleniumBase on Facebook" alt="SeleniumBase on Facebook" width="62" /></a></span>
1552
- <span><a href="https://gitter.im/seleniumbase/SeleniumBase" target="_blank"><img src="https://seleniumbase.github.io/img/social/share_gitter.svg" title="SeleniumBase on Gitter" alt="SeleniumBase on Gitter" width="48" /></a></span>
1553
1553
  </div></p>
1554
1554
 
1555
1555
  <p><div><b><a href="https://github.com/mdmintz">https://github.com/mdmintz</a></b></div></p>
@@ -3,7 +3,7 @@ sbase/__main__.py,sha256=G0bVB1-DM4PGwQ1KyOupaWCs4ePbChZNNWuX2htim5U,647
3
3
  sbase/steps.py,sha256=bKT_u5bJkKzYWEuAXi9NVVRYYxQRCM1_YJUrNFFRVPY,42865
4
4
  seleniumbase/__init__.py,sha256=OtJh8nGKL4xtZpw8KPqmn7Q6R-86t4cWUDyVF5MbMTo,2398
5
5
  seleniumbase/__main__.py,sha256=dn1p6dgCchmcH1zzTzzQvFwwdQQqnTGH6ULV9m4hv24,654
6
- seleniumbase/__version__.py,sha256=aVlpxyMwM0wfPjPqMoWCwYLY-wBc74_FaQDugJ0tQr4,46
6
+ seleniumbase/__version__.py,sha256=p3-TsNmVZnxoL7V9NMUn0fjSrX_dTOvJak7Ef8Bil9o,48
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=-hza7Nx2U41mSObYiPMi48v3JlPh3sJO3yzP0kqZ1Gk,59174
@@ -106,10 +106,10 @@ seleniumbase/translate/portuguese.py,sha256=x3P4qxp56UiI41GoaL7JbUvFRYsgXU1EKjTg
106
106
  seleniumbase/translate/russian.py,sha256=TyN9n0b4GRWDEYnHRGw1rfNAscdDmP3F3Y3aySM3C7s,27978
107
107
  seleniumbase/translate/spanish.py,sha256=hh3xgW1Pq122SHYVvJAxFaXhFrjniOVncVbJbfWqOUM,25528
108
108
  seleniumbase/translate/translator.py,sha256=wPhZH6e5NhmebYL1kP2eGxUcVy1gfTb6XCH8ATEPpxE,49238
109
- seleniumbase/undetected/__init__.py,sha256=CkVcuzZwwGU6YqEwlsV5yLIr2CWjQo9f_AOHBIfJ6Rs,22135
109
+ seleniumbase/undetected/__init__.py,sha256=3UukttRSdScUGCrms2BK35os3uSt130Z1BtxQJmhqxE,22136
110
110
  seleniumbase/undetected/cdp.py,sha256=EralLQm8diG5i6EoHFXHIQEc7Uf7PWtzyPH_upS5RIs,4047
111
111
  seleniumbase/undetected/dprocess.py,sha256=VLwyLWXSg-6GkeKpAQcTXLRmuBb0oEdku3_qgMifuwY,1705
112
- seleniumbase/undetected/options.py,sha256=jc6Km-gZePOemnolD7UF7dDXpxmRtAE2XDraLUdaIFE,2968
112
+ seleniumbase/undetected/options.py,sha256=3a-W5AkRR4PPU9PuaHlG7IZXIp5XbECxvk-73wHfOhY,3913
113
113
  seleniumbase/undetected/patcher.py,sha256=GqNqUwqDDFZg-Y3O6JOyFoOGhHN0r5PV46Mc9b9_BP0,10849
114
114
  seleniumbase/undetected/reactor.py,sha256=UT1pEnGaTPZT7-0-xKROk9_eWDZueGzSUrCksc22nyA,2883
115
115
  seleniumbase/undetected/webelement.py,sha256=_s6evgUkdWJpwOnzX4qR9i796PoVbz3txlzHlOBJ4BE,1370
@@ -117,8 +117,8 @@ seleniumbase/undetected/cdp_driver/__init__.py,sha256=c0TjMwPfVFyoqYOJ7PQ-Jln_L_
117
117
  seleniumbase/undetected/cdp_driver/_contradict.py,sha256=6thDYeoEGiC7Q3tXLgoD_AhxecCFnATzBSjNympyRHA,3184
118
118
  seleniumbase/undetected/cdp_driver/browser.py,sha256=2suM75F3TV-svgBXdRZoxfqErr6_USa8_jOLwHSLlIk,30025
119
119
  seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=y60sU5rIguohZDl1tgCpuDhu3Wo6TcgvZIbqXdHIv8E,11111
120
- seleniumbase/undetected/cdp_driver/config.py,sha256=ddAJVntH8QprX_hsW5nHlgiisWxy2fIYv1wczHuXdTk,11728
121
- seleniumbase/undetected/cdp_driver/connection.py,sha256=RkErsaL_jm2JI7DySD90jzLA-Or6Zxs9WwD-l02h_hE,22968
120
+ seleniumbase/undetected/cdp_driver/config.py,sha256=Rjvde7V-XJ0ihZdTmOmHEVWSuDWm3SprQ3njg8SN3Go,12087
121
+ seleniumbase/undetected/cdp_driver/connection.py,sha256=HnwXlD4rawGzCyiGR3Shr4iaK7KTncvSqs3CXxCZM_8,23266
122
122
  seleniumbase/undetected/cdp_driver/element.py,sha256=9oD9GxguctunrlHV3lWXlZgb9cNEjD5x03Oy84OqyVA,39631
123
123
  seleniumbase/undetected/cdp_driver/tab.py,sha256=wUNF8GHrbhaUqg57A9ZTYHKhNPjZIcOHwrz3pj1SAg0,50526
124
124
  seleniumbase/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -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.32.3.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
139
- seleniumbase-4.32.3.dist-info/METADATA,sha256=SJxh9WL6mylVG51tP1bpT0s3KoXfgtVtxdSrI4VNDuA,85653
140
- seleniumbase-4.32.3.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
141
- seleniumbase-4.32.3.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
- seleniumbase-4.32.3.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
- seleniumbase-4.32.3.dist-info/RECORD,,
138
+ seleniumbase-4.32.4a1.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
139
+ seleniumbase-4.32.4a1.dist-info/METADATA,sha256=0y0snuA19qHT4QS36utt8jBsCN15L0DShe4Rc6Zo-Ds,86095
140
+ seleniumbase-4.32.4a1.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
141
+ seleniumbase-4.32.4a1.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
+ seleniumbase-4.32.4a1.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
+ seleniumbase-4.32.4a1.dist-info/RECORD,,