seleniumbase 4.16.1__py3-none-any.whl → 4.16.3__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.
@@ -460,6 +460,18 @@ class MD:
460
460
  md["assert_link_text"][8] = "подтвердить_ссылку"
461
461
  md["assert_link_text"][9] = "verificar_texto_del_enlace"
462
462
 
463
+ md["assert_non_empty_text"] = ["*"] * num_langs
464
+ md["assert_non_empty_text"][0] = "assert_non_empty_text"
465
+ md["assert_non_empty_text"][1] = "断言非空文本"
466
+ md["assert_non_empty_text"][2] = "controleren_niet_lege_tekst"
467
+ md["assert_non_empty_text"][3] = "vérifier_texte_non_vide"
468
+ md["assert_non_empty_text"][4] = "verificare_testo_non_vuoto"
469
+ md["assert_non_empty_text"][5] = "空ではないテキストを確認する"
470
+ md["assert_non_empty_text"][6] = "비어_있지_않은_텍스트_확인하는"
471
+ md["assert_non_empty_text"][7] = "verificar_texto_não_vazio"
472
+ md["assert_non_empty_text"][8] = "подтвердить_непустой_текст"
473
+ md["assert_non_empty_text"][9] = "verificar_texto_no_vacío"
474
+
463
475
  md["assert_text_not_visible"] = ["*"] * num_langs
464
476
  md["assert_text_not_visible"][0] = "assert_text_not_visible"
465
477
  md["assert_text_not_visible"][1] = "断言文本不可见"
@@ -2418,6 +2430,19 @@ class MD:
2418
2430
  md["assert_text_visible"][8] = "подтвердить_текст"
2419
2431
  md["assert_text_visible"][9] = "verificar_texto"
2420
2432
 
2433
+ # "assert_link" -> duplicate of "assert_link_text"
2434
+ md["assert_link"] = ["*"] * num_langs
2435
+ md["assert_link"][0] = "assert_link"
2436
+ md["assert_link"][1] = "断言链接文本"
2437
+ md["assert_link"][2] = "controleren_linktekst"
2438
+ md["assert_link"][3] = "vérifier_texte_du_lien"
2439
+ md["assert_link"][4] = "verificare_testo_del_collegamento"
2440
+ md["assert_link"][5] = "リンクテキストを確認する"
2441
+ md["assert_link"][6] = "링크_텍스트_확인"
2442
+ md["assert_link"][7] = "verificar_texto_do_link"
2443
+ md["assert_link"][8] = "подтвердить_ссылку"
2444
+ md["assert_link"][9] = "verificar_texto_del_enlace"
2445
+
2421
2446
  # "assert_no_broken_links" -> duplicate of "assert_no_404_errors"
2422
2447
  md["assert_no_broken_links"] = ["*"] * num_langs
2423
2448
  md["assert_no_broken_links"][0] = "assert_no_broken_links"
@@ -77,6 +77,10 @@ class CasoDeTeste(BaseCase):
77
77
  # assert_link_text(link_text)
78
78
  return self.assert_link_text(*args, **kwargs)
79
79
 
80
+ def verificar_texto_não_vazio(self, *args, **kwargs):
81
+ # assert_non_empty_text(selector)
82
+ return self.assert_non_empty_text(*args, **kwargs)
83
+
80
84
  def verificar_texto_não_visível(self, *args, **kwargs):
81
85
  # assert_text_not_visible(text, selector)
82
86
  return self.assert_text_not_visible(*args, **kwargs)
@@ -77,6 +77,10 @@ class ТестНаСелен(BaseCase):
77
77
  # assert_link_text(link_text)
78
78
  return self.assert_link_text(*args, **kwargs)
79
79
 
80
+ def подтвердить_непустой_текст(self, *args, **kwargs):
81
+ # assert_non_empty_text(selector)
82
+ return self.assert_non_empty_text(*args, **kwargs)
83
+
80
84
  def подтвердить_текст_не_виден(self, *args, **kwargs):
81
85
  # assert_text_not_visible(text, selector)
82
86
  return self.assert_text_not_visible(*args, **kwargs)
@@ -77,6 +77,10 @@ class CasoDePrueba(BaseCase):
77
77
  # assert_link_text(link_text)
78
78
  return self.assert_link_text(*args, **kwargs)
79
79
 
80
+ def verificar_texto_no_vacío(self, *args, **kwargs):
81
+ # assert_non_empty_text(selector)
82
+ return self.assert_non_empty_text(*args, **kwargs)
83
+
80
84
  def verificar_texto_no_se_muestra(self, *args, **kwargs):
81
85
  # assert_text_not_visible(text, selector)
82
86
  return self.assert_text_not_visible(*args, **kwargs)
@@ -208,6 +208,11 @@ class Patcher(object):
208
208
  gen_js_whitespaces,
209
209
  file_bin,
210
210
  )
211
+ file_bin = re.sub(
212
+ b"window\\.cdc_[a-zA-Z0-9]{22}_(Array|Promise|Symbol)",
213
+ b"window\\.ccd_adoQpoasnaf67pfcZLmcfl_(Array|Promise|Symbol)",
214
+ file_bin,
215
+ )
211
216
  file_bin = re.sub(
212
217
  b"'\\$cdc_[a-zA-Z0-9]{22}_';",
213
218
  gen_call_function_js_cache_name,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.16.1
3
+ Version: 4.16.3
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
@@ -56,12 +56,12 @@ Classifier: Topic :: Utilities
56
56
  Requires-Python: >=3.6
57
57
  Description-Content-Type: text/markdown
58
58
  License-File: LICENSE
59
- Requires-Dist: certifi (>=2023.5.7)
59
+ Requires-Dist: certifi (>=2023.7.22)
60
60
  Requires-Dist: parse (>=1.19.1)
61
61
  Requires-Dist: parse-type (>=0.6.2)
62
62
  Requires-Dist: six (==1.16.0)
63
63
  Requires-Dist: idna (==3.4)
64
- Requires-Dist: pynose (==1.4.6)
64
+ Requires-Dist: pynose (==1.4.7)
65
65
  Requires-Dist: sortedcontainers (==2.4.0)
66
66
  Requires-Dist: py (==1.11.0)
67
67
  Requires-Dist: pytest-html (==2.0.1)
@@ -106,13 +106,13 @@ Requires-Dist: commonmark (==0.9.1) ; python_version < "3.7"
106
106
  Requires-Dist: rich (==12.6.0) ; python_version < "3.7"
107
107
  Requires-Dist: importlib-metadata (==4.2.0) ; python_version < "3.8"
108
108
  Requires-Dist: urllib3 (<2.1.0,>=1.26.16) ; python_version >= "3.10"
109
- Requires-Dist: pip (>=23.2) ; python_version >= "3.7"
109
+ Requires-Dist: pip (>=23.2.1) ; python_version >= "3.7"
110
110
  Requires-Dist: packaging (>=23.1) ; python_version >= "3.7"
111
111
  Requires-Dist: setuptools (>=68.0.0) ; python_version >= "3.7"
112
- Requires-Dist: wheel (>=0.40.0) ; python_version >= "3.7"
112
+ Requires-Dist: wheel (>=0.41.0) ; python_version >= "3.7"
113
113
  Requires-Dist: attrs (>=23.1.0) ; python_version >= "3.7"
114
114
  Requires-Dist: filelock (>=3.12.2) ; python_version >= "3.7"
115
- Requires-Dist: platformdirs (>=3.9.1) ; python_version >= "3.7"
115
+ Requires-Dist: platformdirs (>=3.10.0) ; python_version >= "3.7"
116
116
  Requires-Dist: chardet (==5.1.0) ; python_version >= "3.7"
117
117
  Requires-Dist: charset-normalizer (==3.2.0) ; python_version >= "3.7"
118
118
  Requires-Dist: requests (==2.31.0) ; python_version >= "3.7"
@@ -137,9 +137,9 @@ Requires-Dist: soupsieve (==2.4.1) ; python_version >= "3.7"
137
137
  Requires-Dist: pygments (==2.15.1) ; python_version >= "3.7"
138
138
  Requires-Dist: colorama (==0.4.6) ; python_version >= "3.7"
139
139
  Requires-Dist: exceptiongroup (==1.1.2) ; python_version >= "3.7"
140
- Requires-Dist: pyotp (==2.8.0) ; python_version >= "3.7"
140
+ Requires-Dist: pyotp (==2.9.0) ; python_version >= "3.7"
141
141
  Requires-Dist: mdurl (==0.1.2) ; python_version >= "3.7"
142
- Requires-Dist: rich (==13.4.2) ; python_version >= "3.7"
142
+ Requires-Dist: rich (==13.5.0) ; python_version >= "3.7"
143
143
  Requires-Dist: urllib3 (<2,>=1.26.16) ; python_version >= "3.7" and python_version < "3.10"
144
144
  Requires-Dist: markdown-it-py (==3.0.0) ; python_version >= "3.8"
145
145
  Provides-Extra: allure
@@ -159,9 +159,9 @@ Requires-Dist: mccabe (==0.7.0) ; extra == 'flake8'
159
159
  Requires-Dist: flake8 (==5.0.4) ; (python_version < "3.9") and extra == 'flake8'
160
160
  Requires-Dist: pyflakes (==2.5.0) ; (python_version < "3.9") and extra == 'flake8'
161
161
  Requires-Dist: pycodestyle (==2.9.1) ; (python_version < "3.9") and extra == 'flake8'
162
- Requires-Dist: flake8 (==6.0.0) ; (python_version >= "3.9") and extra == 'flake8'
163
- Requires-Dist: pyflakes (==3.0.1) ; (python_version >= "3.9") and extra == 'flake8'
164
- Requires-Dist: pycodestyle (==2.10.0) ; (python_version >= "3.9") and extra == 'flake8'
162
+ Requires-Dist: flake8 (==6.1.0) ; (python_version >= "3.9") and extra == 'flake8'
163
+ Requires-Dist: pyflakes (==3.1.0) ; (python_version >= "3.9") and extra == 'flake8'
164
+ Requires-Dist: pycodestyle (==2.11.0) ; (python_version >= "3.9") and extra == 'flake8'
165
165
  Provides-Extra: ipdb
166
166
  Requires-Dist: ipdb (==0.13.11) ; extra == 'ipdb'
167
167
  Requires-Dist: ipython (==7.16.3) ; (python_version < "3.7") and extra == 'ipdb'
@@ -246,7 +246,7 @@ Requires-Dist: zstandard (==0.21.0) ; (python_version >= "3.7") and extra == 'se
246
246
  <p align="left"><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/sb_logo_p3.png" alt="SeleniumBase" title="SeleniumBase" width="232" /></a></p>
247
247
 
248
248
  <blockquote>
249
- <p dir="auto"><strong>Jump to:</strong></p>
249
+ <p dir="auto"><strong>Explore the README:</strong></p>
250
250
  <ul dir="auto">
251
251
  <li><a href="#install_seleniumbase" ><strong>Get Started / Installation</strong></a></li>
252
252
  <li><a href="#basic_example_and_usage"><strong>Basic Example / Usage</strong></a></li>
@@ -264,7 +264,7 @@ Requires-Dist: zstandard (==0.21.0) ; (python_version >= "3.7") and extra == 'se
264
264
 
265
265
  <a id="multiple_examples"></a>
266
266
 
267
- <p align="left"><b>Example:</b> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_demo_site.py" target="_blank">test_demo_site.py</a> from <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples" target="_blank">./examples/</a> (Uses <code>--chrome</code> by default)</p>
267
+ <p align="left"><b>Example:</b> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_demo_site.py" target="_blank">test_demo_site.py</a> from <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples" target="_blank">./examples/</a> (Uses <code translate="no">--chrome</code> by default)</p>
268
268
 
269
269
  ```bash
270
270
  cd examples/
@@ -284,7 +284,7 @@ cd examples/
284
284
  pytest test_coffee_cart.py --demo
285
285
  ```
286
286
 
287
- <p>(<code>--demo</code> mode slows down tests and highlights actions)</p>
287
+ <p>(<code translate="no">--demo</code> mode slows down tests and highlights actions)</p>
288
288
 
289
289
  <p align="left"><a href="https://seleniumbase.io/coffee/" target="_blank"><img src="https://seleniumbase.github.io/cdn/gif/coffee_cart.gif" width="480" alt="SeleniumBase Coffee Cart Test" title="SeleniumBase Coffee Cart Test" /></a></p>
290
290
 
@@ -318,29 +318,29 @@ class CoffeeCartTest(BaseCase):
318
318
  <summary> ▶️ How is <b>SeleniumBase</b> different from raw Selenium? (<b>click to expand</b>)</summary>
319
319
  <div>
320
320
 
321
- <p>💡 SeleniumBase is a Python framework for browser automation and testing. SeleniumBase uses <a href="https://www.w3.org/TR/webdriver2/#endpoints" target="_blank">Selenium/WebDriver</a> APIs, and incorporates test-runners such as <code>pytest</code>, <code>pynose</code>, and <code>behave</code> to provide organized structure, test discovery, test execution, test state (<i>eg. passed, failed, or skipped</i>), and command-line options for changing default settings (<i>such as choosing the browser to use</i>). With raw Selenium, you would need to set up your own options-parser for configuring tests from the command-line.</p>
321
+ <p>💡 SeleniumBase is a Python framework for browser automation and testing. SeleniumBase uses <a href="https://www.w3.org/TR/webdriver2/#endpoints" target="_blank">Selenium/WebDriver</a> APIs, and incorporates test-runners such as <code translate="no">pytest</code>, <code translate="no">pynose</code>, and <code translate="no">behave</code> to provide organized structure, test discovery, test execution, test state (<i>eg. passed, failed, or skipped</i>), and command-line options for changing default settings (<i>such as choosing the browser to use</i>). With raw Selenium, you would need to set up your own options-parser for configuring tests from the command-line.</p>
322
322
 
323
- <p>💡 With raw Selenium, commands that use selectors need to specify the type of selector (eg. <code>"css selector", "button#myButton"</code>). With SeleniumBase, there's auto-detection between CSS Selectors and XPath, which means you don't need to specify the type of selector in your commands (<i>but optionally you could</i>).</p>
323
+ <p>💡 With raw Selenium, commands that use selectors need to specify the type of selector (eg. <code translate="no">"css selector", "button#myButton"</code>). With SeleniumBase, there's auto-detection between CSS Selectors and XPath, which means you don't need to specify the type of selector in your commands (<i>but optionally you could</i>).</p>
324
324
 
325
- <p>💡 SeleniumBase methods often perform multiple actions in a single method call. For example, <code>self.type(selector,text)</code> does the following:<br />1. Waits for the element to be visible.<br />2. Waits for the element to be interactive.<br />3. Clears the text field.<br />4. Types in the new text.<br />5. Presses Enter/Submit if the text ends in <code>"\n"</code>.<br />With raw Selenium, those actions require multiple method calls.</p>
325
+ <p>💡 SeleniumBase methods often perform multiple actions in a single method call. For example, <code translate="no">self.type(selector,text)</code> does the following:<br />1. Waits for the element to be visible.<br />2. Waits for the element to be interactive.<br />3. Clears the text field.<br />4. Types in the new text.<br />5. Presses Enter/Submit if the text ends in <code translate="no">"\n"</code>.<br />With raw Selenium, those actions require multiple method calls.</p>
326
326
 
327
327
  <p>💡 SeleniumBase uses default timeout values when not set:<br />
328
- ✅<code>self.click("button")</code><br />
328
+ ✅<code translate="no">self.click("button")</code><br />
329
329
  With raw Selenium, methods would fail instantly (<i>by default</i>) if an element needed more time to load:<br />
330
- ❌<code>self.driver.find_element(by="css selector", value="button").click()</code><br />
330
+ ❌<code translate="no">self.driver.find_element(by="css selector", value="button").click()</code><br />
331
331
  (Reliable code is better than unreliable code.)</p>
332
332
 
333
333
  <p>💡 SeleniumBase lets you change the explicit timeout values of methods:<br />
334
- ✅<code>self.click("button",timeout=10)</code><br />
334
+ ✅<code translate="no">self.click("button",timeout=10)</code><br />
335
335
  With raw Selenium, that requires more code:<br />
336
- ❌<code>WebDriverWait(driver,10).until(EC.element_to_be_clickable("css selector", "button")).click()</code><br />
336
+ ❌<code translate="no">WebDriverWait(driver,10).until(EC.element_to_be_clickable("css selector", "button")).click()</code><br />
337
337
  (Simple code is better than complex code.)</p>
338
338
 
339
339
  <p>💡 SeleniumBase gives you clean error output when a test fails. With raw Selenium, error messages can get very messy.</p>
340
340
 
341
- <p>💡 SeleniumBase gives you the option to generate a dashboard and reports for tests. It also saves screenshots from failing tests to the <code>./latest_logs/</code> folder. Raw <a href="https://www.selenium.dev/documentation/webdriver/" target="_blank">Selenium</a> does not have these options out-of-the-box.</p>
341
+ <p>💡 SeleniumBase gives you the option to generate a dashboard and reports for tests. It also saves screenshots from failing tests to the <code translate="no">./latest_logs/</code> folder. Raw <a href="https://www.selenium.dev/documentation/webdriver/" target="_blank">Selenium</a> does not have these options out-of-the-box.</p>
342
342
 
343
- <p>💡 SeleniumBase includes desktop GUI apps for running tests, such as <b>SeleniumBase Commander</b> for <code>pytest</code> and <b>SeleniumBase Behave GUI for <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/behave_bdd/ReadMe.md"><code>behave</code></a>.</b></p>
343
+ <p>💡 SeleniumBase includes desktop GUI apps for running tests, such as <b>SeleniumBase Commander</b> for <code translate="no">pytest</code> and <b>SeleniumBase Behave GUI for <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/behave_bdd/ReadMe.md"><code translate="no">behave</code></a>.</b></p>
344
344
 
345
345
  <p>💡 SeleniumBase has its own Recorder / Test Generator that can create tests from manual browser actions. SeleniumBase also includes other useful tools and console scripts for getting things done quickly. (<i>See the documentation for more details!</i>)</p>
346
346
 
@@ -371,7 +371,7 @@ class TestMFALogin(BaseCase):
371
371
  self.save_screenshot_to_logs()
372
372
  ```
373
373
 
374
- <p align="left">📗📝 An example test with the <b><code>sb</code></b> <code>pytest</code> fixture. Runs with <b><a href="https://docs.pytest.org/en/latest/how-to/usage.html">pytest</a></b>.</p>
374
+ <p align="left">📗📝 An example test with the <b><code translate="no">sb</code></b> <code translate="no">pytest</code> fixture. Runs with <b><a href="https://docs.pytest.org/en/latest/how-to/usage.html">pytest</a></b>.</p>
375
375
 
376
376
  ```python
377
377
  def test_mfa_login(sb):
@@ -385,7 +385,7 @@ def test_mfa_login(sb):
385
385
  sb.save_screenshot_to_logs()
386
386
  ```
387
387
 
388
- <p align="left">📙📝 An example test with the <b><code>SB</code></b> Context Manager. Runs with pure <b><code>python</code></b>.</p>
388
+ <p align="left">📙📝 An example test with the <b><code translate="no">SB</code></b> Context Manager. Runs with pure <b><code translate="no">python</code></b>.</p>
389
389
 
390
390
  ```python
391
391
  from seleniumbase import SB
@@ -403,7 +403,7 @@ with SB() as sb: # By default, browser="chrome" if not set.
403
403
  sb.assert_exact_text("You have been signed out!", "#top_message")
404
404
  ```
405
405
 
406
- <p align="left">📕📝 An example test with <b>behave-BDD</b> <a href="https://behave.readthedocs.io/en/stable/gherkin.html#features" target="_blank">Gherkin</a> structure. Runs with <b><code>behave</code></b>. (<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/behave_bdd/ReadMe.md">Learn more</a>)</p>
406
+ <p align="left">📕📝 An example test with <b>behave-BDD</b> <a href="https://behave.readthedocs.io/en/stable/gherkin.html#features" target="_blank">Gherkin</a> structure. Runs with <b><code translate="no">behave</code></b>. (<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/behave_bdd/ReadMe.md">Learn more</a>)</p>
407
407
 
408
408
  ```gherkin
409
409
  Feature: SeleniumBase scenarios for the RealWorld App
@@ -647,7 +647,7 @@ self.assert_no_js_errors() # Verify there are no JS errors.
647
647
  self.type("input", "dogs\n") # (The "\n" presses ENTER)
648
648
  ```
649
649
 
650
- Most SeleniumBase scripts can be run with <code>pytest</code>, <code>pynose</code>, or pure <code>python</code>. Not all test runners can run all test formats. For example, tests that use the ``sb`` pytest fixture can only be run with ``pytest``. (See <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md">Syntax Formats</a>) There's also a <a href="https://behave.readthedocs.io/en/stable/gherkin.html#features" target="_blank">Gherkin</a> test format that runs with <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/behave_bdd/ReadMe.md">behave</a>.
650
+ Most SeleniumBase scripts can be run with <code translate="no">pytest</code>, <code translate="no">pynose</code>, or pure <code translate="no">python</code>. Not all test runners can run all test formats. For example, tests that use the ``sb`` pytest fixture can only be run with ``pytest``. (See <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md">Syntax Formats</a>) There's also a <a href="https://behave.readthedocs.io/en/stable/gherkin.html#features" target="_blank">Gherkin</a> test format that runs with <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/behave_bdd/ReadMe.md">behave</a>.
651
651
 
652
652
  ```bash
653
653
  pytest coffee_cart_tests.py --rs
@@ -664,20 +664,20 @@ behave realworld.feature
664
664
  behave calculator.feature -D rs -D dashboard
665
665
  ```
666
666
 
667
- <p>✅ <code>pytest</code> includes automatic test discovery. If you don't specify a specific file or folder to run, <code>pytest</code> will automatically search through all subdirectories for tests to run based on the following criteria:</p>
667
+ <p>✅ <code translate="no">pytest</code> includes automatic test discovery. If you don't specify a specific file or folder to run, <code translate="no">pytest</code> will automatically search through all subdirectories for tests to run based on the following criteria:</p>
668
668
 
669
669
  * Python files that start with ``test_`` or end with ``_test.py``.
670
670
  * Python methods that start with ``test_``.
671
671
 
672
672
  With a SeleniumBase [pytest.ini](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/pytest.ini) file present, you can modify default discovery settings. The Python class name can be anything because ``seleniumbase.BaseCase`` inherits ``unittest.TestCase`` to trigger autodiscovery.
673
673
 
674
- <p>✅ You can do a pre-flight check to see which tests would get discovered by <code>pytest</code> before the real flight:</p>
674
+ <p>✅ You can do a pre-flight check to see which tests would get discovered by <code translate="no">pytest</code> before the real flight:</p>
675
675
 
676
676
  ```bash
677
677
  pytest --collect-only -q
678
678
  ```
679
679
 
680
- <p>✅ You can be more specific when calling <code>pytest</code> or <code>pynose</code> on a file:</p>
680
+ <p>✅ You can be more specific when calling <code translate="no">pytest</code> or <code translate="no">pynose</code> on a file:</p>
681
681
 
682
682
  ```bash
683
683
  pytest [FILE_NAME.py]::[CLASS_NAME]::[METHOD_NAME]
@@ -685,7 +685,7 @@ pytest [FILE_NAME.py]::[CLASS_NAME]::[METHOD_NAME]
685
685
  pynose [FILE_NAME.py]:[CLASS_NAME].[METHOD_NAME]
686
686
  ```
687
687
 
688
- <p>✅ No More Flaky Tests! SeleniumBase methods automatically wait for page elements to finish loading before interacting with them (<i>up to a timeout limit</i>). This means <b>you no longer need random <span><code>time.sleep()</code></span> statements</b> in your scripts.</p>
688
+ <p>✅ No More Flaky Tests! SeleniumBase methods automatically wait for page elements to finish loading before interacting with them (<i>up to a timeout limit</i>). This means <b>you no longer need random <span><code translate="no">time.sleep()</code></span> statements</b> in your scripts.</p>
689
689
  <img src="https://img.shields.io/badge/Flaky%20Tests%3F-%20NO%21-11BBDD.svg" alt="NO MORE FLAKY TESTS!" />
690
690
 
691
691
  ✅ SeleniumBase supports all major browsers and operating systems:
@@ -746,7 +746,7 @@ pytest test_coffee_cart.py --trace
746
746
  <h2>🔵 Command-line Options:</h2>
747
747
 
748
748
  <a id="pytest_options"></a>
749
- ✅ Here are some useful command-line options that come with <code>pytest</code>:
749
+ ✅ Here are some useful command-line options that come with <code translate="no">pytest</code>:
750
750
 
751
751
  ```bash
752
752
  -v # Verbose mode. Prints the full name of each test and shows more details.
@@ -763,7 +763,7 @@ pytest test_coffee_cart.py --trace
763
763
  ```
764
764
 
765
765
  <a id="new_pytest_options"></a>
766
- ✅ SeleniumBase provides additional <code>pytest</code> command-line options for tests:
766
+ ✅ SeleniumBase provides additional <code translate="no">pytest</code> command-line options for tests:
767
767
 
768
768
  ```bash
769
769
  --browser=BROWSER # (The web browser to use. Default: "chrome".)
@@ -1109,7 +1109,7 @@ pytest user_agent_test.py --agent="Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1
1109
1109
 
1110
1110
  <h3><img src="https://seleniumbase.github.io/img/logo7.png" title="SeleniumBase" width="32" /> Handling Pop-Up / Pop Up Alerts:</h3>
1111
1111
 
1112
- 🔵 <code>self.accept_alert()</code> automatically waits for and accepts alert pop-ups. <code>self.dismiss_alert()</code> automatically waits for and dismisses alert pop-ups. On occasion, some methods like <code>self.click(SELECTOR)</code> might dismiss a pop-up on its own because they call JavaScript to make sure that the <code>readyState</code> of the page is <code>complete</code> before advancing. If you're trying to accept a pop-up that got dismissed this way, use this workaround: Call <code>self.find_element(SELECTOR).click()</code> instead, (which will let the pop-up remain on the screen), and then use <code>self.accept_alert()</code> to accept the pop-up (<a href="https://github.com/seleniumbase/SeleniumBase/issues/600#issuecomment-647270426">more on that here</a>). If pop-ups are intermittent, wrap code in a try/except block.
1112
+ 🔵 <code translate="no">self.accept_alert()</code> automatically waits for and accepts alert pop-ups. <code translate="no">self.dismiss_alert()</code> automatically waits for and dismisses alert pop-ups. On occasion, some methods like <code translate="no">self.click(SELECTOR)</code> might dismiss a pop-up on its own because they call JavaScript to make sure that the <code translate="no">readyState</code> of the page is <code translate="no">complete</code> before advancing. If you're trying to accept a pop-up that got dismissed this way, use this workaround: Call <code translate="no">self.find_element(SELECTOR).click()</code> instead, (which will let the pop-up remain on the screen), and then use <code translate="no">self.accept_alert()</code> to accept the pop-up (<a href="https://github.com/seleniumbase/SeleniumBase/issues/600#issuecomment-647270426">more on that here</a>). If pop-ups are intermittent, wrap code in a try/except block.
1113
1113
 
1114
1114
 
1115
1115
  <h3><img src="https://seleniumbase.github.io/img/logo7.png" title="SeleniumBase" width="32" /> Building Guided Tours for Websites:</h3>
@@ -1135,7 +1135,7 @@ pytest user_agent_test.py --agent="Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1
1135
1135
 
1136
1136
  <li>If you're using the <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/mysql_installation.md">SeleniumBase MySQL feature</a> to save results from tests running on a server machine, you can install <a href="https://dev.mysql.com/downloads/tools/workbench/">MySQL Workbench</a> to help you read & write from your DB more easily.</li>
1137
1137
 
1138
- <li>If you're using AWS, you can set up an <a href="https://aws.amazon.com/s3/" target="_blank">Amazon S3</a> account for saving log files and screenshots from your tests. To activate this feature, modify <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/config/settings.py">settings.py</a> with connection details in the S3 section, and add <code>--with-s3-logging</code> on the command-line when running your tests.</li>
1138
+ <li>If you're using AWS, you can set up an <a href="https://aws.amazon.com/s3/" target="_blank">Amazon S3</a> account for saving log files and screenshots from your tests. To activate this feature, modify <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/config/settings.py">settings.py</a> with connection details in the S3 section, and add <code translate="no">--with-s3-logging</code> on the command-line when running your tests.</li>
1139
1139
  </ul>
1140
1140
 
1141
1141
  Here's an example of running tests with some additional features enabled:
@@ -1166,7 +1166,7 @@ self.get_current_url() # This method returns the current page URL.
1166
1166
  self.get_page_source() # This method returns the current page source.
1167
1167
  ```
1168
1168
 
1169
- <b>ProTip™:</b> You can use the <code>self.get_page_source()</code> method with Python's <code>find()</code> command to parse through HTML to find something specific. (For more advanced parsing, see the <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_parse_soup.py">BeautifulSoup example</a>.)
1169
+ <b>ProTip™:</b> You can use the <code translate="no">self.get_page_source()</code> method with Python's <code translate="no">find()</code> command to parse through HTML to find something specific. (For more advanced parsing, see the <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_parse_soup.py">BeautifulSoup example</a>.)
1170
1170
 
1171
1171
  ```python
1172
1172
  source = self.get_page_source()
@@ -1187,13 +1187,13 @@ self.click("div#my_id")
1187
1187
 
1188
1188
  🔵 **Typing Text:**
1189
1189
 
1190
- <code>self.type(selector, text)</code> # updates the text from the specified element with the specified value. An exception is raised if the element is missing or if the text field is not editable. Example:
1190
+ <code translate="no">self.type(selector, text)</code> # updates the text from the specified element with the specified value. An exception is raised if the element is missing or if the text field is not editable. Example:
1191
1191
 
1192
1192
  ```python
1193
1193
  self.type("input#id_value", "2012")
1194
1194
  ```
1195
1195
 
1196
- You can also use <code>self.add_text()</code> or the <a href="https://www.selenium.dev/documentation/webdriver/" target="_blank">WebDriver</a> <code>.send_keys()</code> command, but those won't clear the text box first if there's already text inside.
1196
+ You can also use <code translate="no">self.add_text()</code> or the <a href="https://www.selenium.dev/documentation/webdriver/" target="_blank">WebDriver</a> <code translate="no">.send_keys()</code> command, but those won't clear the text box first if there's already text inside.
1197
1197
 
1198
1198
  🔵 **Getting the text from an element on a page:**
1199
1199
 
@@ -1295,7 +1295,7 @@ if self.is_text_visible("You Shall Not Pass!", "h1"):
1295
1295
 
1296
1296
  <div></div>
1297
1297
  <details>
1298
- <summary> ▶️ Click for a longer example of <code>is_text_visible():</code></summary>
1298
+ <summary> ▶️ Click for a longer example of <code translate="no">is_text_visible():</code></summary>
1299
1299
 
1300
1300
  ```python
1301
1301
  def get_mirror_universe_captain_picard_superbowl_ad(superbowl_year):
@@ -1335,7 +1335,7 @@ if self.is_link_text_visible("Stop! Hammer time!"):
1335
1335
 
1336
1336
  <h3>🔵 Switching Tabs:</h3>
1337
1337
 
1338
- <p>If your test opens up a new tab/window, you can switch to it. (SeleniumBase automatically switches to new tabs that don't open to <code>about:blank</code> URLs.)</p>
1338
+ <p>If your test opens up a new tab/window, you can switch to it. (SeleniumBase automatically switches to new tabs that don't open to <code translate="no">about:blank</code> URLs.)</p>
1339
1339
 
1340
1340
  ```python
1341
1341
  self.switch_to_window(1) # This switches to the new tab (0 is the first one)
@@ -1424,7 +1424,7 @@ self.execute_script('''document.body.innerHTML = \"%s\"''' % referral_link)
1424
1424
  self.click("a.analytics") # Clicks the generated button
1425
1425
  ```
1426
1426
 
1427
- (Due to popular demand, this traffic generation example has been included in SeleniumBase with the <code>self.generate_referral(start_page, end_page)</code> and the <code>self.generate_traffic(start_page, end_page, loops)</code> methods.)
1427
+ (Due to popular demand, this traffic generation example has been included in SeleniumBase with the <code translate="no">self.generate_referral(start_page, end_page)</code> and the <code translate="no">self.generate_traffic(start_page, end_page, loops)</code> methods.)
1428
1428
 
1429
1429
  </details>
1430
1430
 
@@ -1449,8 +1449,8 @@ class MyTestClass(BaseCase):
1449
1449
  self.process_deferred_asserts()
1450
1450
  ```
1451
1451
 
1452
- <code>deferred_assert_element()</code> and <code>deferred_assert_text()</code> will save any exceptions that would be raised.
1453
- To flush out all the failed deferred asserts into a single exception, make sure to call <code>self.process_deferred_asserts()</code> at the end of your test method. If your test hits multiple pages, you can call <code>self.process_deferred_asserts()</code> before navigating to a new page so that the screenshot from your log files matches the URL where the deferred asserts were made.
1452
+ <code translate="no">deferred_assert_element()</code> and <code translate="no">deferred_assert_text()</code> will save any exceptions that would be raised.
1453
+ To flush out all the failed deferred asserts into a single exception, make sure to call <code translate="no">self.process_deferred_asserts()</code> at the end of your test method. If your test hits multiple pages, you can call <code translate="no">self.process_deferred_asserts()</code> before navigating to a new page so that the screenshot from your log files matches the URL where the deferred asserts were made.
1454
1454
 
1455
1455
  <h3>🔵 How to access raw <a href="https://www.selenium.dev/documentation/webdriver/" target="_blank">WebDriver</a>:</h3>
1456
1456
 
@@ -1466,13 +1466,13 @@ self.driver.find_elements("partial link text", "GitHub")
1466
1466
 
1467
1467
  <h3>🔵 How to retry failing tests automatically:</h3>
1468
1468
 
1469
- <p>You can use <code>pytest --reruns=NUM</code> to retry failing tests that many times. Add <code>--reruns-delay=SECONDS</code> to wait that many seconds between retries. Example:</p>
1469
+ <p>You can use <code translate="no">pytest --reruns=NUM</code> to retry failing tests that many times. Add <code translate="no">--reruns-delay=SECONDS</code> to wait that many seconds between retries. Example:</p>
1470
1470
 
1471
1471
  ```bash
1472
1472
  pytest --reruns=1 --reruns-delay=1
1473
1473
  ```
1474
1474
 
1475
- <p>You can use the <code>@retry_on_exception()</code> decorator to retry failing methods. (First import: <code>from seleniumbase import decorators</code>). To learn more about SeleniumBase decorators, <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/seleniumbase/common">click here</a>.</p>
1475
+ <p>You can use the <code translate="no">@retry_on_exception()</code> decorator to retry failing methods. (First import: <code translate="no">from seleniumbase import decorators</code>). To learn more about SeleniumBase decorators, <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/seleniumbase/common">click here</a>.</p>
1476
1476
 
1477
1477
  --------
1478
1478
 
@@ -1,20 +1,20 @@
1
1
  sbase/ReadMe.txt,sha256=F_8szskzdRlPQ5DChxbsFTA0GOszvxtVQs6W8GCv6gw,90
2
2
  sbase/__init__.py,sha256=Kgq4COxq3G8FCBJHrLAMXQG3wGrmKjJ6L9tlaUi5PYo,562
3
3
  sbase/__main__.py,sha256=G0bVB1-DM4PGwQ1KyOupaWCs4ePbChZNNWuX2htim5U,647
4
- sbase/steps.py,sha256=RCZ_tKo7kFvgzVrHpIHb090c0on14ObIEkmMHjDURWE,38261
4
+ sbase/steps.py,sha256=XoRFgYGa0NADBZ0Pw1JhN_8bojMWox5-oRN0FwyfP5s,41310
5
5
  seleniumbase/ReadMe.md,sha256=5Bnv8gsyKQGABhLj0S4HXZdtVic98puQlIGYc7YHUm8,3612
6
6
  seleniumbase/__init__.py,sha256=Mw4ShIWUF2Efjx-JuwUQLWF9nIbxcX-vu9AOGBp32ec,2123
7
7
  seleniumbase/__main__.py,sha256=dn1p6dgCchmcH1zzTzzQvFwwdQQqnTGH6ULV9m4hv24,654
8
- seleniumbase/__version__.py,sha256=_7oerA3YA9SLP8w8I3BJPFBh-eCnM3iwGXzX4AnJEf8,46
8
+ seleniumbase/__version__.py,sha256=2vuiqA-1G2Xu3shpTtw2R0gqBpuJZonOgvvlB-gFTns,46
9
9
  seleniumbase/behave/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- seleniumbase/behave/behave_helper.py,sha256=KQ4rgOcWkMFSbD8QBUmevxO47M9UoSDenfoBHy9VaPk,22206
10
+ seleniumbase/behave/behave_helper.py,sha256=LVQlVEQjNHbYmG42njlg58cLv1QtPV5x86cWWqouM60,23415
11
11
  seleniumbase/behave/behave_sb.py,sha256=TtTFIZpUfDpElNmoBDB46QVbCZDPJPgvl9XWZab8MkM,54130
12
12
  seleniumbase/behave/steps.py,sha256=8-N-NB2tnDsxaP4LSg-uSBgbwZYMS6ZEL1oggO1PCoU,390
13
13
  seleniumbase/common/ReadMe.md,sha256=PwQsRSPRCXejL-fg4YyDzED_Yr6e7ddmGu3g2OcDrcQ,3286
14
14
  seleniumbase/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  seleniumbase/common/decorators.py,sha256=LJnAgg0RG3kDOFb8tpyq1zjmpv9ks6Tjg8GwgIn1YuY,7633
16
16
  seleniumbase/common/encryption.py,sha256=IfAuE0hdrd3y-_qAQUWdSOKRGQ4QN24uTOBiQ9Eeq2s,5593
17
- seleniumbase/common/exceptions.py,sha256=XnY6wGtCfgTvh0T7ExM4wZwBjRMv4HbRb9bQSosjttI,3119
17
+ seleniumbase/common/exceptions.py,sha256=SbdHOTbg7ycrioWleAVw9kG9vBtDfbYoj3e7ikkYYz0,3257
18
18
  seleniumbase/common/obfuscate.py,sha256=VrwPbVigPH_Jk6ADCk5_miMoq1VK4M9SKnYScDkk-DQ,1204
19
19
  seleniumbase/common/unobfuscate.py,sha256=MgP6MMT9Wam6ECFVIA84WsQczfl_dFiumFu9m3eXFDg,771
20
20
  seleniumbase/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -29,7 +29,7 @@ seleniumbase/console_scripts/run.py,sha256=IQRoIlIK0_JJqX7RRQ_qY0mWgk3Uh-ZlTZZr2
29
29
  seleniumbase/console_scripts/sb_behave_gui.py,sha256=GjM8NsTgcjte3Rwvl6fTWhWVSniKKF9tOugHH8iLToE,15153
30
30
  seleniumbase/console_scripts/sb_caseplans.py,sha256=ykweMa0fbd-C7fBeE7JUrRfl8GmXdi71NGhJh0nS-EE,18023
31
31
  seleniumbase/console_scripts/sb_commander.py,sha256=zM39kzAYp3b8V9aoqZ7ED2_Ns5dbqbMAnMpjUaYBD3s,13210
32
- seleniumbase/console_scripts/sb_install.py,sha256=WiegprAyy-WaXBw6CHFdJW_l7lBl6wPOTxmyx3PkngY,41222
32
+ seleniumbase/console_scripts/sb_install.py,sha256=EbdPeS1YZlSRcFBZs79FfMmb6XKuTwp7KqrPxtH3s3o,41857
33
33
  seleniumbase/console_scripts/sb_mkchart.py,sha256=BYzgzxRA66MeIBhEjeJKa9BqvViWX8YHSqjquWMLh1w,11044
34
34
  seleniumbase/console_scripts/sb_mkdir.py,sha256=UkD3TqaObvsItE7UwIERXOSFlQQqSjf0lUkwaJbN7I8,29782
35
35
  seleniumbase/console_scripts/sb_mkfile.py,sha256=wvv22cYCVVmFNEE4TDws1S6Rdd8vGhl9beebVvyXl7U,15515
@@ -40,7 +40,7 @@ seleniumbase/console_scripts/sb_print.py,sha256=PJyZ3jnaI6y1A-wL_PmuNhDwjIFSnKsD
40
40
  seleniumbase/console_scripts/sb_recorder.py,sha256=hKJXYLEd2sGKjc_mhUGI9rYHRqTD4kkzPc1G6xqw72Y,10628
41
41
  seleniumbase/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
42
  seleniumbase/core/application_manager.py,sha256=e_0sjtI8cjY5BNyZj1QBR0j6_oCScxGmSXYEpcYwuZE,576
43
- seleniumbase/core/browser_launcher.py,sha256=S_MI54eO5Q1jtaQqAHYLXMRhJyo3Gxr2Mc0_DZGdVRM,137957
43
+ seleniumbase/core/browser_launcher.py,sha256=iAUwvBLaPM0psL8CdDReeB2NYLpXCG_pPqE2PLvqSY4,140059
44
44
  seleniumbase/core/capabilities_parser.py,sha256=lu2W7O1JrU9tLgvhx5gQ_Baqnkf3IjcPDzze0P2Ou-Y,5736
45
45
  seleniumbase/core/colored_traceback.py,sha256=DrRWfg7XEnKcgY59Xj7Jdk09H-XqHYBSUpB-DiZt6iY,2020
46
46
  seleniumbase/core/create_db_tables.sql,sha256=VWPtrdiW_HQ6yETHjqTu-VIrTwvd8I8o1NfBeaVSHpU,972
@@ -51,7 +51,7 @@ seleniumbase/core/jqc_helper.py,sha256=-_GvIoKXJsOb7DBZ2WH8c7cAxAn0x3-U0HeZaIqdk
51
51
  seleniumbase/core/log_helper.py,sha256=EhN1QKxmD4gp0_F1wAWYP1bK9nJblYX50xpvdfDePQc,21822
52
52
  seleniumbase/core/mysql.py,sha256=BaOdm8KB89grfwyFUQ7Qt_p65kDivrEVoXH0WBpi9R4,3482
53
53
  seleniumbase/core/proxy_helper.py,sha256=R00kmFWlj5yew9Yid_P4HWv7G6VKu2AQq0Ee5GbQ7Gs,7594
54
- seleniumbase/core/recorder_helper.py,sha256=YMtUc8lHSPuIQnuDssVEKgyq5khOaMCKiCtsgrcxhq8,23020
54
+ seleniumbase/core/recorder_helper.py,sha256=Tme-mnxvlWMvJJvM_3tjtIUJIcRc2SvdLOmPKlxdASg,24207
55
55
  seleniumbase/core/report_helper.py,sha256=AIl6Qava2yW1uSzbLpJBlPlYDz0KE-rVhogh8hsGWBo,12201
56
56
  seleniumbase/core/s3_manager.py,sha256=bkeI8I4y19ebWuQG1oEZV5qJbotC6eN8vin31OCNWJk,3521
57
57
  seleniumbase/core/session_helper.py,sha256=0mhZWOJxHpWR8t0Wo1-jwofQBGVJebLXS8Gr8rlWvxo,686
@@ -69,16 +69,16 @@ seleniumbase/extensions/disable_csp.zip,sha256=YMifIIgEBiLrEFrS1sfW4Exh4br1V4oK1
69
69
  seleniumbase/extensions/recorder.zip,sha256=wAyF8K9vPkmMyDAqpgKUEmL_WprHWuesv38FMidmgwQ,11876
70
70
  seleniumbase/extensions/sbase_ext.zip,sha256=3s1N8zrVaMz8RQEOIoBzC3KDjtmHwVZRvVsX25Odr_s,8175
71
71
  seleniumbase/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
- seleniumbase/fixtures/base_case.py,sha256=BWhGrCMjnaYdLcpeURL38nvcIOjJFZDYoUkNWBKfPnc,658068
72
+ seleniumbase/fixtures/base_case.py,sha256=FC-flPWDb_8DlU7k5-RouFZLCwgmPyYxOI0bTODCAZE,667720
73
73
  seleniumbase/fixtures/constants.py,sha256=jBbLJQgDnQdx8OjVsxysiRM35N1NruKzFiUIqzcL6o0,11886
74
74
  seleniumbase/fixtures/css_to_xpath.py,sha256=9ouDB1xl4MJ2os6JOgTIAyHKOQfuxtxvXC3O5hSnEKA,1954
75
75
  seleniumbase/fixtures/errors.py,sha256=KyxuEVx_e3MPhVrJfNIa_3ltMpbCFxfy_jxK8RFNTns,555
76
76
  seleniumbase/fixtures/js_utils.py,sha256=u-zvTRpYwjABB8aO1fUDEcEBzcF2glybWSOaZha_LDs,44528
77
- seleniumbase/fixtures/page_actions.py,sha256=HHuRLsJIQiYMDQsATty9H6nWznMQ82rulnc0HhCFYuE,48797
77
+ seleniumbase/fixtures/page_actions.py,sha256=UsCpRXaUkVBxhljRVmnX1n0ocAG8pZ0ENy2db8A11XM,53389
78
78
  seleniumbase/fixtures/page_utils.py,sha256=4n1HhzUYNRqs3Ci_YjZ9nJKEqeeqMiTaaMq_8xx2gd4,9639
79
- seleniumbase/fixtures/shared_utils.py,sha256=gjcPRKTp8iN_H8mnkBTf17Sps24pmhd5niM7KAScSoA,5378
79
+ seleniumbase/fixtures/shared_utils.py,sha256=zWly5TqDr-zQ6oPjqLopi3SF0dKEh68VHNldc_o0kF8,5653
80
80
  seleniumbase/fixtures/unittest_helper.py,sha256=sfZ92rZeBAn_sF_yQ3I6_I7h3lyU5-cV_UMegBNoEm8,1294
81
- seleniumbase/fixtures/words.py,sha256=YkdUA51Bt51YHalFFtsCVVGke2AYrEhtWo8QE41Jir0,7117
81
+ seleniumbase/fixtures/words.py,sha256=FOA4mAYvl3EPVpBTvgvK6YwCL8BdlRCmed685kEe7Vg,7827
82
82
  seleniumbase/fixtures/xpath_to_css.py,sha256=SIqctvTav-sGZPfDMPpzLyO4fxOrmLVpW8vuQW9SKX0,8875
83
83
  seleniumbase/js_code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
84
  seleniumbase/js_code/active_css_js.py,sha256=EGIGYnfh_Tcmp10dYSdtUXSu0tU_p0U44gx8HUerGxw,9777
@@ -102,22 +102,22 @@ seleniumbase/resources/ReadMe.md,sha256=uminnO5_Uv-UZDKcc9a9s9kxisaYUps-H98Fp5PJ
102
102
  seleniumbase/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
103
  seleniumbase/resources/favicon.ico,sha256=QPf_YK0QXa_--C4_CH-odh6OTHRQ9k-4O6WcCpXSdwM,1150
104
104
  seleniumbase/translate/__init__.py,sha256=N2i5XntTwJZmwr9-qvdX5gC6Rdm5-ClIbnQ8yyPn4Oo,459
105
- seleniumbase/translate/chinese.py,sha256=s1MLfIaZwySFMuVsyfTZqjxKEnj8_RpkAINM4lyeRoc,24545
106
- seleniumbase/translate/dutch.py,sha256=-F4EGdjqWvVOQumBESuBWmi-Mb6t2fwj9YbxNUe3N9Y,25176
107
- seleniumbase/translate/french.py,sha256=cUTU6bOXP-z52OjaZVb4m6vByOdZlyNBP2lyaPMfm84,25430
108
- seleniumbase/translate/italian.py,sha256=d5r3elrzIwxCGw38l9YkQi8xl6b-UVl8HIYmRZSacUw,25263
109
- seleniumbase/translate/japanese.py,sha256=PksHrAvkUrh1smFH-UyMrmR8LeYX9SLfHIi1muid5YM,26818
110
- seleniumbase/translate/korean.py,sha256=7UrhNQrwkxWRV9uUCA_laPAJZS6HwnvG0kvpaMG7UfU,25738
111
- seleniumbase/translate/master_dict.py,sha256=1Owurb9fLS71I0d18o0eIqsyPBJl3Imx3WBIwJyJ208,121637
112
- seleniumbase/translate/portuguese.py,sha256=8tYWSdz6qJ2Y1vzfq3zgDHv9F0aMpxz3p1r5Ck_kLFA,25208
113
- seleniumbase/translate/russian.py,sha256=idzTrmmpgL-aFbfVxb9Xc7S3Bk58XhMuTbDkkvocW0k,27793
114
- seleniumbase/translate/spanish.py,sha256=dw88vKa1GF0QTSb70RGDgHuXsqxQ3MKionbl9TdjVwY,25368
105
+ seleniumbase/translate/chinese.py,sha256=0QhK2eadtsdN4KCvwki1J7jBCe8I4xxWbKzteJKJozY,24698
106
+ seleniumbase/translate/dutch.py,sha256=-sazERTpITu8rGsiDrA5sDdbviitnNeBc1wyaVsoksI,25338
107
+ seleniumbase/translate/french.py,sha256=oAvfj7G5jMNnZJXaiRv5bzbo77QOs14y9tJhpbKsB2c,25589
108
+ seleniumbase/translate/italian.py,sha256=e-f8D34VHCp4p_T9XNny8Mjh5VkJu-DrCGHyOecaEY0,25424
109
+ seleniumbase/translate/japanese.py,sha256=Rk4F3M8m4e4ThCxZWcuKbwb1OjxVELb63XfTqB__8K8,26995
110
+ seleniumbase/translate/korean.py,sha256=m9_dMMBrqFeL6YDQ_4eHutWqIKvXwZRth0m31eUJhxI,25916
111
+ seleniumbase/translate/master_dict.py,sha256=LJxFoQN7qZ32Dp9dtcM5DymtAJw5ycfJsJHe10Uf2ZM,123039
112
+ seleniumbase/translate/portuguese.py,sha256=x3P4qxp56UiI41GoaL7JbUvFRYsgXU1EKjTgrt2GFtM,25369
113
+ seleniumbase/translate/russian.py,sha256=TyN9n0b4GRWDEYnHRGw1rfNAscdDmP3F3Y3aySM3C7s,27978
114
+ seleniumbase/translate/spanish.py,sha256=hh3xgW1Pq122SHYVvJAxFaXhFrjniOVncVbJbfWqOUM,25528
115
115
  seleniumbase/translate/translator.py,sha256=lM9ISYjrTE9WAnqJPq2NJaUTJjkbxcOycgDZlMH42tc,49211
116
116
  seleniumbase/undetected/__init__.py,sha256=DSvC5DmY9DKgzgfh8byTw8_gBU2yO0omfjRD5TtYKzE,19440
117
117
  seleniumbase/undetected/cdp.py,sha256=EralLQm8diG5i6EoHFXHIQEc7Uf7PWtzyPH_upS5RIs,4047
118
118
  seleniumbase/undetected/dprocess.py,sha256=WWQ_X_-Q7Lfx1m6oxkYHU0eTIc76Jodph4n1QnK4GEE,1706
119
119
  seleniumbase/undetected/options.py,sha256=SGuz8iqlVPYN7IexNiGauupWF0xP3mqO72-9tgIqeuI,2999
120
- seleniumbase/undetected/patcher.py,sha256=lKjLOQjyOKc-u1AChv08IjTXsYY7izaVZuqAyC9_MWo,10378
120
+ seleniumbase/undetected/patcher.py,sha256=kBInbMf_Z2uhF4o4eiYOAkaSg4-4jiGjZVuXDhKPH3U,10605
121
121
  seleniumbase/undetected/reactor.py,sha256=4_SVkQvc7d_S6sj0OMSGBx3PkbeAEXq1aAEFPws4QPY,2882
122
122
  seleniumbase/undetected/webelement.py,sha256=QBf53_F9Bd_d3gAbhSFu8bU8Za7W32tjyfg42lB6qYs,417
123
123
  seleniumbase/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -136,9 +136,9 @@ seleniumbase/utilities/selenium_grid/start-grid-hub.sh,sha256=KADv0RUHONLL2_I443
136
136
  seleniumbase/utilities/selenium_ide/ReadMe.md,sha256=hznGeuMpkIimqMiZBW-4goIy2ltW4l8X9kb0YSPUQfE,4483
137
137
  seleniumbase/utilities/selenium_ide/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
138
  seleniumbase/utilities/selenium_ide/convert_ide.py,sha256=pZFnqEJQEKZPyNFjkLD29s2HPQgCrWW9XJWpCPhWOoM,31691
139
- seleniumbase-4.16.1.dist-info/LICENSE,sha256=9CweYVs2pqSWEApWewHooJ5p5F44GV0wSXi-jV0kA_U,1085
140
- seleniumbase-4.16.1.dist-info/METADATA,sha256=_ETTfQ1PZOrRjOiYU2kV51l57z7SmU-GbzRm7jMkTRA,81908
141
- seleniumbase-4.16.1.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
142
- seleniumbase-4.16.1.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
143
- seleniumbase-4.16.1.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
144
- seleniumbase-4.16.1.dist-info/RECORD,,
139
+ seleniumbase-4.16.3.dist-info/LICENSE,sha256=9CweYVs2pqSWEApWewHooJ5p5F44GV0wSXi-jV0kA_U,1085
140
+ seleniumbase-4.16.3.dist-info/METADATA,sha256=aeLr4frADJ73swcKLpdH5ITwCH-2c_HrlpzLb8pzblA,82763
141
+ seleniumbase-4.16.3.dist-info/WHEEL,sha256=AtBG6SXL3KF_v0NxLf0ehyVOh0cold-JbJYXNGorC6Q,92
142
+ seleniumbase-4.16.3.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
143
+ seleniumbase-4.16.3.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
144
+ seleniumbase-4.16.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.40.0)
2
+ Generator: bdist_wheel (0.41.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5