seleniumbase 4.33.9__py3-none-any.whl → 4.33.11__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.33.9"
2
+ __version__ = "4.33.11"
@@ -2407,8 +2407,6 @@ def _set_firefox_options(
2407
2407
  options.set_preference("dom.webnotifications.enabled", False)
2408
2408
  options.set_preference("dom.disable_beforeunload", True)
2409
2409
  options.set_preference("browser.contentblocking.database.enabled", True)
2410
- options.set_preference("extensions.allowPrivateBrowsingByDefault", True)
2411
- options.set_preference("extensions.PrivateBrowsing.notification", False)
2412
2410
  options.set_preference("extensions.systemAddon.update.enabled", False)
2413
2411
  options.set_preference("extensions.update.autoUpdateDefault", False)
2414
2412
  options.set_preference("extensions.update.enabled", False)
@@ -519,7 +519,20 @@ class CDPMethods():
519
519
  try:
520
520
  return element.get_js_attributes()[attribute]
521
521
  except Exception:
522
- return None
522
+ if not attribute:
523
+ raise
524
+ try:
525
+ attribute_str = element.get_js_attributes()
526
+ locate = ' %s="' % attribute
527
+ if locate in attribute_str.outerHTML:
528
+ outer_html = attribute_str.outerHTML
529
+ attr_start = outer_html.find(locate) + len(locate)
530
+ attr_end = outer_html.find('"', attr_start)
531
+ value = outer_html[attr_start:attr_end]
532
+ return value
533
+ except Exception:
534
+ pass
535
+ return None
523
536
 
524
537
  def __get_x_scroll_offset(self):
525
538
  x_scroll_offset = self.loop.run_until_complete(
@@ -620,11 +633,12 @@ class CDPMethods():
620
633
 
621
634
  def click_if_visible(self, selector):
622
635
  if self.is_element_visible(selector):
623
- element = self.find_element(selector)
624
- element.scroll_into_view()
625
- element.click()
626
- self.__slow_mode_pause_if_set()
627
- self.loop.run_until_complete(self.page.wait())
636
+ with suppress(Exception):
637
+ element = self.find_element(selector, timeout=0)
638
+ element.scroll_into_view()
639
+ element.click()
640
+ self.__slow_mode_pause_if_set()
641
+ self.loop.run_until_complete(self.page.wait())
628
642
 
629
643
  def click_visible_elements(self, selector, limit=0):
630
644
  """Finds all matching page elements and clicks visible ones in order.
@@ -1094,7 +1108,14 @@ class CDPMethods():
1094
1108
  )
1095
1109
 
1096
1110
  def get_element_attribute(self, selector, attribute):
1097
- return self.get_element_attributes(selector)[attribute]
1111
+ attributes = self.get_element_attributes(selector)
1112
+ with suppress(Exception):
1113
+ return attributes[attribute]
1114
+ locate = ' %s="' % attribute
1115
+ value = self.get_attribute(selector, attribute)
1116
+ if not value and locate not in attributes:
1117
+ raise KeyError(attribute)
1118
+ return value
1098
1119
 
1099
1120
  def get_attribute(self, selector, attribute):
1100
1121
  return self.find_element(selector).get_attribute(attribute)
@@ -3416,6 +3416,14 @@ class BaseCase(unittest.TestCase):
3416
3416
  self.activate_jquery()
3417
3417
  return self.driver.execute_script(script, *args, **kwargs)
3418
3418
 
3419
+ def get_element_at_x_y(self, x, y):
3420
+ """Return element at current window's x,y coordinates."""
3421
+ self.__check_scope()
3422
+ self._check_browser()
3423
+ return self.execute_script(
3424
+ "return document.elementFromPoint(%s, %s);" % (x, y)
3425
+ )
3426
+
3419
3427
  def get_gui_element_rect(self, selector, by="css selector"):
3420
3428
  """Very similar to element.rect, but the x, y coordinates are
3421
3429
  relative to the entire screen, rather than the browser window.
@@ -31,12 +31,12 @@ class ContraDict(dict):
31
31
 
32
32
  def __init__(self, *args, **kwargs):
33
33
  super().__init__()
34
- silent = kwargs.pop("silent", False)
34
+ # silent = kwargs.pop("silent", False)
35
35
  _ = dict(*args, **kwargs)
36
36
 
37
37
  super().__setattr__("__dict__", self)
38
38
  for k, v in _.items():
39
- _check_key(k, self, False, silent)
39
+ _check_key(k, self, False, True)
40
40
  super().__setitem__(k, _wrap(self.__class__, v))
41
41
 
42
42
  def __setitem__(self, key, value):
@@ -90,7 +90,7 @@ _warning_names_message = """\n\
90
90
 
91
91
 
92
92
  def _check_key(
93
- key: str, mapping: _Mapping, boolean: bool = False, silent=False
93
+ key: str, mapping: _Mapping, boolean: bool = False, silent=True
94
94
  ):
95
95
  """Checks `key` and warns if needed.
96
96
  :param key:
@@ -10,6 +10,7 @@ import pathlib
10
10
  import pickle
11
11
  import re
12
12
  import shutil
13
+ import time
13
14
  import urllib.parse
14
15
  import urllib.request
15
16
  import warnings
@@ -30,8 +31,6 @@ def get_registered_instances():
30
31
 
31
32
 
32
33
  def deconstruct_browser():
33
- import time
34
-
35
34
  for _ in __registered__instances__:
36
35
  if not _.stopped:
37
36
  _.stop()
@@ -117,8 +116,13 @@ class Browser:
117
116
  port=port,
118
117
  **kwargs,
119
118
  )
120
- instance = cls(config)
121
- await instance.start()
119
+ try:
120
+ instance = cls(config)
121
+ await instance.start()
122
+ except Exception:
123
+ time.sleep(0.15)
124
+ instance = cls(config)
125
+ await instance.start()
122
126
  return instance
123
127
 
124
128
  def __init__(self, config: Config, **kwargs):
@@ -379,8 +383,6 @@ class Browser:
379
383
  --------------------------------
380
384
  Failed to connect to the browser
381
385
  --------------------------------
382
- Possibly because you are running as "root".
383
- If so, you may need to use no_sandbox=True.
384
386
  """
385
387
  )
386
388
  )
@@ -438,12 +438,15 @@ class Element:
438
438
  )
439
439
  )
440
440
  )
441
- if result and result[0]:
442
- if return_by_value:
443
- return result[0].value
444
- return result[0]
445
- elif result[1]:
446
- return result[1]
441
+ try:
442
+ if result and result[0]:
443
+ if return_by_value:
444
+ return result[0].value
445
+ return result[0]
446
+ elif result[1]:
447
+ return result[1]
448
+ except Exception:
449
+ return self
447
450
 
448
451
  async def get_position_async(self, abs=False) -> Position:
449
452
  if not self.parent or not self.object_id:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.33.9
3
+ Version: 4.33.11
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
@@ -65,7 +65,7 @@ Requires-Dist: setuptools~=70.2; python_version < "3.10"
65
65
  Requires-Dist: setuptools>=75.6.0; python_version >= "3.10"
66
66
  Requires-Dist: wheel>=0.45.1
67
67
  Requires-Dist: attrs>=24.2.0
68
- Requires-Dist: certifi>=2024.8.30
68
+ Requires-Dist: certifi>=2024.12.14
69
69
  Requires-Dist: exceptiongroup>=1.2.2
70
70
  Requires-Dist: websockets~=13.1; python_version < "3.9"
71
71
  Requires-Dist: websockets>=14.1; python_version >= "3.9"
@@ -236,21 +236,60 @@ Requires-Dist: zstandard==0.23.0; extra == "selenium-wire"
236
236
 
237
237
  📚 Learn from [**over 200 examples** in the **SeleniumBase/examples/** folder](https://github.com/seleniumbase/SeleniumBase/tree/master/examples).
238
238
 
239
- 👤 Note that <span translate="no">SeleniumBase</span> <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md"><b>UC Mode</b> (Stealth Mode) has its own ReadMe</a>.
239
+ 🐙 Note that <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md"><b>UC Mode</b></a> and <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md"><b>CDP Mode</b></a> (Stealth Mode) have separate docs</a>.
240
240
 
241
- 🐙 Also note that Seleniumbase <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md"><b>CDP Mode</b> has its own separate ReadMe</a>.
241
+ ℹ️ Most scripts run with raw <code translate="no"><b>python</b></code>, although some scripts use <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md">Syntax Formats</a> that expect <a href="https://docs.pytest.org/en/latest/how-to/usage.html" translate="no"><b>pytest</b></a> (a Python unit-testing framework included with SeleniumBase that can discover, collect, and run tests automatically).
242
242
 
243
- ℹ️ Scripts can be called via <code translate="no"><b>python</b></code>, although some <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md">Syntax Formats</a> expect <a href="https://docs.pytest.org/en/latest/how-to/usage.html" translate="no"><b>pytest</b></a> (a Python unit-testing framework included with SeleniumBase that can discover, collect, and run tests automatically).
243
+ --------
244
244
 
245
- <p align="left">📗 Here's <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/my_first_test.py">my_first_test.py</a>, which tests login, shopping, and checkout:</p>
245
+ <p align="left">📗 Here's <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/raw_google.py">raw_google.py</a>, which performs a Google search:</p>
246
246
 
247
- ```bash
248
- pytest my_first_test.py
247
+ ```python
248
+ from seleniumbase import SB
249
+
250
+ with SB(test=True, ad_block=True, locale_code="en") as sb:
251
+ sb.open("https://google.com/ncr")
252
+ sb.type('[title="Search"]', "SeleniumBase GitHub page\n")
253
+ sb.click('[href*="github.com/seleniumbase/SeleniumBase"]')
254
+ sb.save_screenshot_to_logs() # (See ./latest_logs folder)
255
+ print(sb.get_page_title())
249
256
  ```
250
257
 
251
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/my_first_test.py"><img src="https://seleniumbase.github.io/cdn/gif/fast_swag_2.gif" alt="SeleniumBase Test" title="SeleniumBase Test" width="520" /></a>
258
+ > `python raw_google.py`
252
259
 
253
- > ``pytest`` uses ``--chrome`` by default unless set differently.
260
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/raw_google.py"><img src="https://seleniumbase.github.io/cdn/gif/google_search.gif" alt="SeleniumBase Test" title="SeleniumBase Test" width="480" /></a>
261
+
262
+ --------
263
+
264
+ <p align="left">📗 Here's <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_get_swag.py">test_get_swag.py</a>, which tests a fake shopping site:</p>
265
+
266
+ ```python
267
+ from seleniumbase import BaseCase
268
+ BaseCase.main(__name__, __file__) # Call pytest
269
+
270
+ class MyTestClass(BaseCase):
271
+ def test_swag_labs(self):
272
+ self.open("https://www.saucedemo.com")
273
+ self.type("#user-name", "standard_user")
274
+ self.type("#password", "secret_sauce\n")
275
+ self.assert_element("div.inventory_list")
276
+ self.click('button[name*="backpack"]')
277
+ self.click("#shopping_cart_container a")
278
+ self.assert_text("Backpack", "div.cart_item")
279
+ self.click("button#checkout")
280
+ self.type("input#first-name", "SeleniumBase")
281
+ self.type("input#last-name", "Automation")
282
+ self.type("input#postal-code", "77123")
283
+ self.click("input#continue")
284
+ self.click("button#finish")
285
+ self.assert_text("Thank you for your order!")
286
+ ```
287
+
288
+ > `pytest test_get_swag.py`
289
+
290
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_get_swag.py"><img src="https://seleniumbase.github.io/cdn/gif/fast_swag_2.gif" alt="SeleniumBase Test" title="SeleniumBase Test" width="520" /></a>
291
+
292
+ > (The default browser is ``--chrome`` if not set.)
254
293
 
255
294
  --------
256
295
 
@@ -344,7 +383,7 @@ With raw Selenium, that requires more code:<br />
344
383
 
345
384
  <p>📚 <b>Learn about different ways of writing tests:</b></p>
346
385
 
347
- <p align="left">📘📝 Here's <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_simple_login.py">test_simple_login.py</a>, which uses <code translate="no"><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/fixtures/base_case.py">BaseCase</a></code> class inheritance, and runs with <a href="https://docs.pytest.org/en/latest/how-to/usage.html">pytest</a> or <a href="https://github.com/mdmintz/pynose">pynose</a>. (Use <code translate="no">self.driver</code> to access Selenium's raw <code translate="no">driver</code>.)</p>
386
+ <p align="left">📗📝 Here's <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_simple_login.py">test_simple_login.py</a>, which uses <code translate="no"><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/fixtures/base_case.py">BaseCase</a></code> class inheritance, and runs with <a href="https://docs.pytest.org/en/latest/how-to/usage.html">pytest</a> or <a href="https://github.com/mdmintz/pynose">pynose</a>. (Use <code translate="no">self.driver</code> to access Selenium's raw <code translate="no">driver</code>.)</p>
348
387
 
349
388
  ```python
350
389
  from seleniumbase import BaseCase
@@ -363,22 +402,7 @@ class TestSimpleLogin(BaseCase):
363
402
  self.assert_text("signed out", "#top_message")
364
403
  ```
365
404
 
366
- <p align="left">📗📝 Here's a test from <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/sb_fixture_tests.py">sb_fixture_tests.py</a>, which uses the <b><code translate="no">sb</code></b> <code translate="no">pytest</code> fixture. Runs with <a href="https://docs.pytest.org/en/latest/how-to/usage.html">pytest</a>. (Use <code translate="no">sb.driver</code> to access Selenium's raw <code translate="no">driver</code>.)</p>
367
-
368
- ```python
369
- def test_sb_fixture_with_no_class(sb):
370
- sb.open("seleniumbase.io/simple/login")
371
- sb.type("#username", "demo_user")
372
- sb.type("#password", "secret_pass")
373
- sb.click('a:contains("Sign in")')
374
- sb.assert_exact_text("Welcome!", "h1")
375
- sb.assert_element("img#image1")
376
- sb.highlight("#image1")
377
- sb.click_link("Sign out")
378
- sb.assert_text("signed out", "#top_message")
379
- ```
380
-
381
- <p align="left">📙📝 Here's <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/raw_login_sb.py">raw_login_sb.py</a>, which uses the <b><code translate="no">SB</code></b> Context Manager. Runs with pure <code translate="no">python</code>. (Use <code translate="no">sb.driver</code> to access Selenium's raw <code translate="no">driver</code>.)</p>
405
+ <p align="left">📘📝 Here's <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/raw_login_sb.py">raw_login_sb.py</a>, which uses the <b><code translate="no">SB</code></b> Context Manager. Runs with pure <code translate="no">python</code>. (Use <code translate="no">sb.driver</code> to access Selenium's raw <code translate="no">driver</code>.)</p>
382
406
 
383
407
  ```python
384
408
  from seleniumbase import SB
@@ -395,24 +419,7 @@ with SB() as sb:
395
419
  sb.assert_text("signed out", "#top_message")
396
420
  ```
397
421
 
398
- <p align="left">📔📝 Here's <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/raw_login_context.py">raw_login_context.py</a>, which uses the <b><code translate="no">DriverContext</code></b> Manager. Runs with pure <code translate="no">python</code>. (The <code translate="no">driver</code> is an improved version of Selenium's raw <code translate="no">driver</code>, with more methods.)</p>
399
-
400
- ```python
401
- from seleniumbase import DriverContext
402
-
403
- with DriverContext() as driver:
404
- driver.open("seleniumbase.io/simple/login")
405
- driver.type("#username", "demo_user")
406
- driver.type("#password", "secret_pass")
407
- driver.click('a:contains("Sign in")')
408
- driver.assert_exact_text("Welcome!", "h1")
409
- driver.assert_element("img#image1")
410
- driver.highlight("#image1")
411
- driver.click_link("Sign out")
412
- driver.assert_text("signed out", "#top_message")
413
- ```
414
-
415
- <p align="left">📔📝 Here's <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/raw_login_driver.py">raw_login_driver.py</a>, which uses the <b><code translate="no">Driver</code></b> Manager. Runs with pure <code translate="no">python</code>. (The <code>driver</code> is an improved version of Selenium's raw <code translate="no">driver</code>, with more methods.)</p>
422
+ <p align="left">📙📝 Here's <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/raw_login_driver.py">raw_login_driver.py</a>, which uses the <b><code translate="no">Driver</code></b> Manager. Runs with pure <code translate="no">python</code>. (The <code>driver</code> is an improved version of Selenium's raw <code translate="no">driver</code>, with more methods.)</p>
416
423
 
417
424
  ```python
418
425
  from seleniumbase import Driver
@@ -432,23 +439,6 @@ finally:
432
439
  driver.quit()
433
440
  ```
434
441
 
435
- <p align="left">📕📝 Here's <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/behave_bdd/features/login_app.feature">login_app.feature</a>, which uses <a translate="no" href="https://behave.readthedocs.io/en/stable/gherkin.html#features" target="_blank">behave-BDD Gherkin</a> syntax. Runs with <code translate="no">behave</code>. (<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/behave_bdd/ReadMe.md">Learn about the <b>SeleniumBase behave-BDD</b> integration</a>)</p>
436
-
437
- ```gherkin
438
- Feature: SeleniumBase scenarios for the Simple App
439
-
440
- Scenario: Verify the Simple App (Login / Logout)
441
- Given Open "seleniumbase.io/simple/login"
442
- And Type "demo_user" into "#username"
443
- And Type "secret_pass" into "#password"
444
- And Click 'a:contains("Sign in")'
445
- And Assert exact text "Welcome!" in "h1"
446
- And Assert element "img#image1"
447
- And Highlight "#image1"
448
- And Click link "Sign out"
449
- And Assert text "signed out" in "#top_message"
450
- ```
451
-
452
442
  --------
453
443
 
454
444
  <a id="python_installation"></a>
@@ -547,20 +537,21 @@ pip install -e .
547
537
  <summary> ▶️ Here's sample output from a chromedriver download. (<b>click to expand</b>)</summary>
548
538
 
549
539
  ```bash
550
- *** chromedriver to download = 121.0.6167.85 (Latest Stable)
540
+ *** chromedriver to download = 131.0.6778.108 (Latest Stable)
551
541
 
552
542
  Downloading chromedriver-mac-arm64.zip from:
553
- https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.85/mac-arm64/chromedriver-mac-arm64.zip ...
543
+ https://storage.googleapis.com/chrome-for-testing-public/131.0.6778.108/mac-arm64/chromedriver-mac-arm64.zip ...
554
544
  Download Complete!
555
545
 
556
546
  Extracting ['chromedriver'] from chromedriver-mac-arm64.zip ...
557
547
  Unzip Complete!
558
548
 
559
549
  The file [chromedriver] was saved to:
560
- /Users/michael/github/SeleniumBase/seleniumbase/drivers/chromedriver
550
+ ~/github/SeleniumBase/seleniumbase/drivers/
551
+ chromedriver
561
552
 
562
- Making [chromedriver 121.0.6167.85] executable ...
563
- [chromedriver 121.0.6167.85] is now ready for use!
553
+ Making [chromedriver 131.0.6778.108] executable ...
554
+ [chromedriver 131.0.6778.108] is now ready for use!
564
555
  ```
565
556
 
566
557
  </details>
@@ -580,7 +571,7 @@ pytest my_first_test.py
580
571
 
581
572
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/my_first_test.py"><img src="https://seleniumbase.github.io/cdn/gif/fast_swag_2.gif" alt="SeleniumBase Test" title="SeleniumBase Test" width="520" /></a>
582
573
 
583
- <p align="left"><b>Here's the code for <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/my_first_test.py">my_first_test.py</a>:</b></p>
574
+ <p align="left"><b>Here's the full code for <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/my_first_test.py">my_first_test.py</a>:</b></p>
584
575
 
585
576
  ```python
586
577
  from seleniumbase import BaseCase
@@ -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=OtJh8nGKL4xtZpw8KPqmn7Q6R-86t4cWUDyVF5MbMTo,2398
5
5
  seleniumbase/__main__.py,sha256=dn1p6dgCchmcH1zzTzzQvFwwdQQqnTGH6ULV9m4hv24,654
6
- seleniumbase/__version__.py,sha256=GMboHPCu6gSyY9eX_O3aXtEMziJZxOjCp0x23YIYBQo,46
6
+ seleniumbase/__version__.py,sha256=S1DbyhxNhK6WB7lAkTdc62vKiXt-79j5ugmqsX5eI6A,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=-hza7Nx2U41mSObYiPMi48v3JlPh3sJO3yzP0kqZ1Gk,59174
@@ -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=FSnNzrnE52lXvpLToDRm2Isr4280xf7Vax_L_oTgDuY,224640
39
+ seleniumbase/core/browser_launcher.py,sha256=nQ8-5dvNU4Uy5lSTgnwB2nFAemS43PqJhHccdvdGJ94,224486
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=kZnfkflB3XhuL2h-3inmx3UOLS8VAZ385BGCc4H
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=bkeI8I4y19ebWuQG1oEZV5qJbotC6eN8vin31OCNWJk,3521
53
- seleniumbase/core/sb_cdp.py,sha256=UB6pDr9qIMq1ExIxtfMRzQe6CZ-fnS1JNLiS2QvYfdk,73720
53
+ seleniumbase/core/sb_cdp.py,sha256=hxMc1BB0vLftcGR70kdwCFt98jmVUhj2vKj5ZusNYQs,74622
54
54
  seleniumbase/core/sb_driver.py,sha256=NGa4adi8OAi2WFtFkEguXg3JCd1p-JuZweIpGNifEfU,13488
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=YMifIIgEBiLrEFrS1sfW4Exh4br1V4oK1
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=DY-UpQRyfl8ZzA-D-5cKJKwm2kAXeE7L06rgMRDz3Xw,718513
68
+ seleniumbase/fixtures/base_case.py,sha256=Aj3MoG1Q_CTaCSGkhyOIEuRcfogBf-zYYsethFmyKcU,718790
69
69
  seleniumbase/fixtures/constants.py,sha256=e1LppavlrAcI4XBJMq7u5j8SffaQ7SPQps1y0YvZYfY,13649
70
70
  seleniumbase/fixtures/css_to_xpath.py,sha256=9ouDB1xl4MJ2os6JOgTIAyHKOQfuxtxvXC3O5hSnEKA,1954
71
71
  seleniumbase/fixtures/errors.py,sha256=KyxuEVx_e3MPhVrJfNIa_3ltMpbCFxfy_jxK8RFNTns,555
@@ -114,12 +114,12 @@ seleniumbase/undetected/patcher.py,sha256=n9WfKznr4cQvaE5Gcx7iyK27zMWIc8KdI69_m8
114
114
  seleniumbase/undetected/reactor.py,sha256=NropaXcO54pzmDq6quR27qPJxab6636H7LRAaq-o0ng,2859
115
115
  seleniumbase/undetected/webelement.py,sha256=_s6evgUkdWJpwOnzX4qR9i796PoVbz3txlzHlOBJ4BE,1370
116
116
  seleniumbase/undetected/cdp_driver/__init__.py,sha256=c0TjMwPfVFyoqYOJ7PQ-Jln_L_dpN3ebHyaD-juQoM0,64
117
- seleniumbase/undetected/cdp_driver/_contradict.py,sha256=6thDYeoEGiC7Q3tXLgoD_AhxecCFnATzBSjNympyRHA,3184
118
- seleniumbase/undetected/cdp_driver/browser.py,sha256=n8GYspU7b0pfBT4AqhqY6IdGVOZ1FC4wJ5emIOl-khQ,30129
117
+ seleniumbase/undetected/cdp_driver/_contradict.py,sha256=lP4b0h5quAy573ETn_TBbYV889cL1AuPLVInpJ0ZkiU,3183
118
+ seleniumbase/undetected/cdp_driver/browser.py,sha256=quD0e2aoehXQrs9zxGsobF0kZY11gmJ58Q_JQhheQYg,30144
119
119
  seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=YhtD2Tm6PLIy9VKbgk8lHdGniS3mObyX4yAC1aG0TgQ,16733
120
120
  seleniumbase/undetected/cdp_driver/config.py,sha256=oHFJ3UH0OmLmEGgG5S6SZwbyBs9ZYMsbUJ02QCA7iZc,12044
121
121
  seleniumbase/undetected/cdp_driver/connection.py,sha256=sOTUGjbUqKA2hPvDcRCdqw1VQjVGJs7mbgVvzS7ldtE,23360
122
- seleniumbase/undetected/cdp_driver/element.py,sha256=LMnHQO-n0DvBo3Fb5G6X8cOaAvqxHgTZj8JHCTfWZjQ,40377
122
+ seleniumbase/undetected/cdp_driver/element.py,sha256=FIC6v7OmumLCT-_vIc3H4oju_oBbaLpWJUJIKm2c_q4,40467
123
123
  seleniumbase/undetected/cdp_driver/tab.py,sha256=cmSUg9fRnIVYgeqs-t8Tcg1FrSVIrM5IBQmCMzvl4OQ,50678
124
124
  seleniumbase/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
125
125
  seleniumbase/utilities/selenium_grid/__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.33.9.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
139
- seleniumbase-4.33.9.dist-info/METADATA,sha256=cjZQgqFZM5v2JHJhH5_69a99phccxOgf6B8ofQm8WtM,86528
140
- seleniumbase-4.33.9.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
141
- seleniumbase-4.33.9.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
- seleniumbase-4.33.9.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
- seleniumbase-4.33.9.dist-info/RECORD,,
138
+ seleniumbase-4.33.11.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
139
+ seleniumbase-4.33.11.dist-info/METADATA,sha256=DNryNKlBpGpVUrHMTxnc6i6lVMpIda8h0I8rGTqAs1w,85294
140
+ seleniumbase-4.33.11.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
141
+ seleniumbase-4.33.11.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
+ seleniumbase-4.33.11.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
+ seleniumbase-4.33.11.dist-info/RECORD,,