seleniumbase 4.33.4__py3-none-any.whl → 4.34.2__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.
- seleniumbase/__version__.py +1 -1
- seleniumbase/behave/behave_sb.py +10 -2
- seleniumbase/console_scripts/run.py +6 -2
- seleniumbase/console_scripts/sb_commander.py +5 -5
- seleniumbase/console_scripts/sb_install.py +235 -6
- seleniumbase/console_scripts/sb_mkdir.py +1 -0
- seleniumbase/core/browser_launcher.py +358 -105
- seleniumbase/core/log_helper.py +33 -12
- seleniumbase/core/proxy_helper.py +35 -30
- seleniumbase/core/sb_cdp.py +277 -74
- seleniumbase/core/settings_parser.py +2 -0
- seleniumbase/core/style_sheet.py +10 -0
- seleniumbase/fixtures/base_case.py +216 -127
- seleniumbase/fixtures/constants.py +3 -0
- seleniumbase/fixtures/js_utils.py +2 -0
- seleniumbase/fixtures/page_actions.py +7 -2
- seleniumbase/fixtures/shared_utils.py +25 -0
- seleniumbase/plugins/driver_manager.py +28 -0
- seleniumbase/plugins/pytest_plugin.py +110 -0
- seleniumbase/plugins/sb_manager.py +41 -0
- seleniumbase/plugins/selenium_plugin.py +9 -0
- seleniumbase/undetected/cdp_driver/_contradict.py +3 -3
- seleniumbase/undetected/cdp_driver/browser.py +8 -6
- seleniumbase/undetected/cdp_driver/cdp_util.py +3 -0
- seleniumbase/undetected/cdp_driver/config.py +0 -1
- seleniumbase/undetected/cdp_driver/element.py +22 -20
- seleniumbase/undetected/patcher.py +20 -5
- {seleniumbase-4.33.4.dist-info → seleniumbase-4.34.2.dist-info}/LICENSE +1 -1
- {seleniumbase-4.33.4.dist-info → seleniumbase-4.34.2.dist-info}/METADATA +111 -86
- {seleniumbase-4.33.4.dist-info → seleniumbase-4.34.2.dist-info}/RECORD +33 -33
- {seleniumbase-4.33.4.dist-info → seleniumbase-4.34.2.dist-info}/WHEEL +1 -1
- {seleniumbase-4.33.4.dist-info → seleniumbase-4.34.2.dist-info}/entry_points.txt +0 -0
- {seleniumbase-4.33.4.dist-info → seleniumbase-4.34.2.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.2
|
2
2
|
Name: seleniumbase
|
3
|
-
Version: 4.
|
3
|
+
Version: 4.34.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
|
@@ -62,50 +62,56 @@ License-File: LICENSE
|
|
62
62
|
Requires-Dist: pip>=24.3.1
|
63
63
|
Requires-Dist: packaging>=24.2
|
64
64
|
Requires-Dist: setuptools~=70.2; python_version < "3.10"
|
65
|
-
Requires-Dist: setuptools>=75.
|
65
|
+
Requires-Dist: setuptools>=75.8.0; python_version >= "3.10"
|
66
66
|
Requires-Dist: wheel>=0.45.1
|
67
|
-
Requires-Dist: attrs>=24.
|
68
|
-
Requires-Dist: certifi>=2024.
|
67
|
+
Requires-Dist: attrs>=24.3.0
|
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
|
-
Requires-Dist: websockets>=14.
|
72
|
-
Requires-Dist: filelock
|
71
|
+
Requires-Dist: websockets>=14.2; python_version >= "3.9"
|
72
|
+
Requires-Dist: filelock~=3.16.1; python_version < "3.9"
|
73
|
+
Requires-Dist: filelock>=3.17.0; python_version >= "3.9"
|
73
74
|
Requires-Dist: fasteners>=0.19
|
74
75
|
Requires-Dist: mycdp>=1.1.0
|
75
76
|
Requires-Dist: pynose>=1.5.3
|
76
77
|
Requires-Dist: platformdirs>=4.3.6
|
77
78
|
Requires-Dist: typing-extensions>=4.12.2
|
78
|
-
Requires-Dist: sbvirtualdisplay>=1.
|
79
|
+
Requires-Dist: sbvirtualdisplay>=1.4.0
|
80
|
+
Requires-Dist: MarkupSafe==2.1.5; python_version < "3.9"
|
81
|
+
Requires-Dist: MarkupSafe>=3.0.2; python_version >= "3.9"
|
82
|
+
Requires-Dist: Jinja2>=3.1.5
|
79
83
|
Requires-Dist: six>=1.17.0
|
80
84
|
Requires-Dist: parse>=1.20.2
|
81
85
|
Requires-Dist: parse-type>=0.6.4
|
82
86
|
Requires-Dist: colorama>=0.4.6
|
83
87
|
Requires-Dist: pyyaml>=6.0.2
|
84
|
-
Requires-Dist: pygments>=2.
|
88
|
+
Requires-Dist: pygments>=2.19.1
|
85
89
|
Requires-Dist: pyreadline3>=3.5.3; platform_system == "Windows"
|
86
90
|
Requires-Dist: tabcompleter>=1.4.0
|
87
91
|
Requires-Dist: pdbp>=1.6.1
|
88
92
|
Requires-Dist: idna==3.10
|
89
93
|
Requires-Dist: chardet==5.2.0
|
90
|
-
Requires-Dist: charset-normalizer==3.4.
|
94
|
+
Requires-Dist: charset-normalizer==3.4.1
|
91
95
|
Requires-Dist: urllib3<2,>=1.26.20; python_version < "3.10"
|
92
|
-
Requires-Dist: urllib3<2.
|
96
|
+
Requires-Dist: urllib3<2.4.0,>=1.26.20; python_version >= "3.10"
|
93
97
|
Requires-Dist: requests==2.32.3
|
94
98
|
Requires-Dist: sniffio==1.3.1
|
95
99
|
Requires-Dist: h11==0.14.0
|
96
100
|
Requires-Dist: outcome==1.3.0.post0
|
97
|
-
Requires-Dist: trio==0.27.0
|
101
|
+
Requires-Dist: trio==0.27.0; python_version < "3.9"
|
102
|
+
Requires-Dist: trio==0.28.0; python_version >= "3.9"
|
98
103
|
Requires-Dist: trio-websocket==0.11.1
|
99
104
|
Requires-Dist: wsproto==1.2.0
|
100
105
|
Requires-Dist: websocket-client==1.8.0
|
101
|
-
Requires-Dist: selenium==4.27.1
|
106
|
+
Requires-Dist: selenium==4.27.1; python_version < "3.9"
|
107
|
+
Requires-Dist: selenium==4.28.1; python_version >= "3.9"
|
102
108
|
Requires-Dist: cssselect==1.2.0
|
103
109
|
Requires-Dist: sortedcontainers==2.4.0
|
104
110
|
Requires-Dist: execnet==2.1.1
|
105
111
|
Requires-Dist: iniconfig==2.0.0
|
106
112
|
Requires-Dist: pluggy==1.5.0
|
107
113
|
Requires-Dist: pytest==8.3.4
|
108
|
-
Requires-Dist: pytest-html==4.
|
114
|
+
Requires-Dist: pytest-html==4.0.2
|
109
115
|
Requires-Dist: pytest-metadata==3.1.1
|
110
116
|
Requires-Dist: pytest-ordering==0.6
|
111
117
|
Requires-Dist: pytest-rerunfailures==14.0; python_version < "3.9"
|
@@ -126,7 +132,7 @@ Requires-Dist: allure-python-commons>=2.13.5; extra == "allure"
|
|
126
132
|
Requires-Dist: allure-behave>=2.13.5; extra == "allure"
|
127
133
|
Provides-Extra: coverage
|
128
134
|
Requires-Dist: coverage>=7.6.1; python_version < "3.9" and extra == "coverage"
|
129
|
-
Requires-Dist: coverage>=7.6.
|
135
|
+
Requires-Dist: coverage>=7.6.10; python_version >= "3.9" and extra == "coverage"
|
130
136
|
Requires-Dist: pytest-cov>=5.0.0; python_version < "3.9" and extra == "coverage"
|
131
137
|
Requires-Dist: pytest-cov>=6.0.0; python_version >= "3.9" and extra == "coverage"
|
132
138
|
Provides-Extra: flake8
|
@@ -150,7 +156,7 @@ Requires-Dist: cffi==1.17.1; extra == "pdfminer"
|
|
150
156
|
Requires-Dist: pycparser==2.22; extra == "pdfminer"
|
151
157
|
Provides-Extra: pillow
|
152
158
|
Requires-Dist: Pillow>=10.4.0; python_version < "3.9" and extra == "pillow"
|
153
|
-
Requires-Dist: Pillow>=11.
|
159
|
+
Requires-Dist: Pillow>=11.1.0; python_version >= "3.9" and extra == "pillow"
|
154
160
|
Provides-Extra: pip-system-certs
|
155
161
|
Requires-Dist: pip-system-certs==4.0; platform_system == "Windows" and extra == "pip-system-certs"
|
156
162
|
Provides-Extra: proxy
|
@@ -173,6 +179,18 @@ Requires-Dist: hyperframe==6.0.1; extra == "selenium-wire"
|
|
173
179
|
Requires-Dist: kaitaistruct==0.10; extra == "selenium-wire"
|
174
180
|
Requires-Dist: pyasn1==0.6.1; extra == "selenium-wire"
|
175
181
|
Requires-Dist: zstandard==0.23.0; extra == "selenium-wire"
|
182
|
+
Dynamic: author
|
183
|
+
Dynamic: author-email
|
184
|
+
Dynamic: classifier
|
185
|
+
Dynamic: home-page
|
186
|
+
Dynamic: keywords
|
187
|
+
Dynamic: license
|
188
|
+
Dynamic: maintainer
|
189
|
+
Dynamic: platform
|
190
|
+
Dynamic: provides-extra
|
191
|
+
Dynamic: requires-dist
|
192
|
+
Dynamic: requires-python
|
193
|
+
Dynamic: summary
|
176
194
|
|
177
195
|
<!-- SeleniumBase Docs -->
|
178
196
|
|
@@ -236,21 +254,76 @@ Requires-Dist: zstandard==0.23.0; extra == "selenium-wire"
|
|
236
254
|
|
237
255
|
📚 Learn from [**over 200 examples** in the **SeleniumBase/examples/** folder](https://github.com/seleniumbase/SeleniumBase/tree/master/examples).
|
238
256
|
|
239
|
-
|
257
|
+
🐙 Note that <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md"><b>UC Mode</b></a> / <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md"><b>CDP Mode</b></a> (Stealth Mode) have their own ReadMe files.
|
240
258
|
|
241
|
-
|
259
|
+
ℹ️ 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
260
|
|
243
|
-
|
261
|
+
--------
|
244
262
|
|
245
|
-
<p align="left">📗 Here's <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/
|
263
|
+
<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
264
|
|
247
|
-
```
|
248
|
-
|
265
|
+
```python
|
266
|
+
from seleniumbase import SB
|
267
|
+
|
268
|
+
with SB(test=True) as sb:
|
269
|
+
sb.open("https://google.com/ncr")
|
270
|
+
sb.type('[title="Search"]', "SeleniumBase GitHub page\n")
|
271
|
+
sb.click('[href*="github.com/seleniumbase/"]')
|
272
|
+
sb.save_screenshot_to_logs() # ./latest_logs/
|
273
|
+
print(sb.get_page_title())
|
249
274
|
```
|
250
275
|
|
251
|
-
|
276
|
+
> `python raw_google.py`
|
277
|
+
|
278
|
+
<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="420" /></a>
|
279
|
+
|
280
|
+
--------
|
281
|
+
|
282
|
+
<p align="left">📗 Here's an example of bypassing Cloudflare's challenge page: <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_gitlab.py">SeleniumBase/examples/cdp_mode/raw_gitlab.py</a></p>
|
252
283
|
|
253
|
-
|
284
|
+
```python
|
285
|
+
from seleniumbase import SB
|
286
|
+
|
287
|
+
with SB(uc=True, test=True, locale_code="en") as sb:
|
288
|
+
url = "https://gitlab.com/users/sign_in"
|
289
|
+
sb.activate_cdp_mode(url)
|
290
|
+
sb.uc_gui_click_captcha()
|
291
|
+
sb.sleep(2)
|
292
|
+
```
|
293
|
+
|
294
|
+
<img src="https://seleniumbase.github.io/other/cf_sec.jpg" title="SeleniumBase" width="332"> <img src="https://seleniumbase.github.io/other/gitlab_bypass.png" title="SeleniumBase" width="288">
|
295
|
+
|
296
|
+
--------
|
297
|
+
|
298
|
+
<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 an e-commerce site:</p>
|
299
|
+
|
300
|
+
```python
|
301
|
+
from seleniumbase import BaseCase
|
302
|
+
BaseCase.main(__name__, __file__) # Call pytest
|
303
|
+
|
304
|
+
class MyTestClass(BaseCase):
|
305
|
+
def test_swag_labs(self):
|
306
|
+
self.open("https://www.saucedemo.com")
|
307
|
+
self.type("#user-name", "standard_user")
|
308
|
+
self.type("#password", "secret_sauce\n")
|
309
|
+
self.assert_element("div.inventory_list")
|
310
|
+
self.click('button[name*="backpack"]')
|
311
|
+
self.click("#shopping_cart_container a")
|
312
|
+
self.assert_text("Backpack", "div.cart_item")
|
313
|
+
self.click("button#checkout")
|
314
|
+
self.type("input#first-name", "SeleniumBase")
|
315
|
+
self.type("input#last-name", "Automation")
|
316
|
+
self.type("input#postal-code", "77123")
|
317
|
+
self.click("input#continue")
|
318
|
+
self.click("button#finish")
|
319
|
+
self.assert_text("Thank you for your order!")
|
320
|
+
```
|
321
|
+
|
322
|
+
> `pytest test_get_swag.py`
|
323
|
+
|
324
|
+
<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="480" /></a>
|
325
|
+
|
326
|
+
> (The default browser is ``--chrome`` if not set.)
|
254
327
|
|
255
328
|
--------
|
256
329
|
|
@@ -260,7 +333,7 @@ pytest my_first_test.py
|
|
260
333
|
pytest test_coffee_cart.py --demo
|
261
334
|
```
|
262
335
|
|
263
|
-
<p align="left"><a href="https://seleniumbase.io/coffee/" target="_blank"><img src="https://seleniumbase.github.io/cdn/gif/coffee_cart.gif" width="
|
336
|
+
<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>
|
264
337
|
|
265
338
|
> <p>(<code translate="no">--demo</code> mode slows down tests and highlights actions)</p>
|
266
339
|
|
@@ -274,7 +347,7 @@ pytest test_coffee_cart.py --demo
|
|
274
347
|
pytest test_demo_site.py
|
275
348
|
```
|
276
349
|
|
277
|
-
<p align="left"><a href="https://seleniumbase.io/demo_page" target="_blank"><img src="https://seleniumbase.github.io/cdn/gif/demo_page_5.gif" width="
|
350
|
+
<p align="left"><a href="https://seleniumbase.io/demo_page" target="_blank"><img src="https://seleniumbase.github.io/cdn/gif/demo_page_5.gif" width="480" alt="SeleniumBase Example" title="SeleniumBase Example" /></a></p>
|
278
351
|
|
279
352
|
> Easy to type, click, select, toggle, drag & drop, and more.
|
280
353
|
|
@@ -344,7 +417,7 @@ With raw Selenium, that requires more code:<br />
|
|
344
417
|
|
345
418
|
<p>📚 <b>Learn about different ways of writing tests:</b></p>
|
346
419
|
|
347
|
-
<p align="left"
|
420
|
+
<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
421
|
|
349
422
|
```python
|
350
423
|
from seleniumbase import BaseCase
|
@@ -363,22 +436,7 @@ class TestSimpleLogin(BaseCase):
|
|
363
436
|
self.assert_text("signed out", "#top_message")
|
364
437
|
```
|
365
438
|
|
366
|
-
<p align="left"
|
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>
|
439
|
+
<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
440
|
|
383
441
|
```python
|
384
442
|
from seleniumbase import SB
|
@@ -395,24 +453,7 @@ with SB() as sb:
|
|
395
453
|
sb.assert_text("signed out", "#top_message")
|
396
454
|
```
|
397
455
|
|
398
|
-
<p align="left"
|
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>
|
456
|
+
<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
457
|
|
417
458
|
```python
|
418
459
|
from seleniumbase import Driver
|
@@ -432,23 +473,6 @@ finally:
|
|
432
473
|
driver.quit()
|
433
474
|
```
|
434
475
|
|
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
476
|
--------
|
453
477
|
|
454
478
|
<a id="python_installation"></a>
|
@@ -547,20 +571,21 @@ pip install -e .
|
|
547
571
|
<summary> ▶️ Here's sample output from a chromedriver download. (<b>click to expand</b>)</summary>
|
548
572
|
|
549
573
|
```bash
|
550
|
-
*** chromedriver to download =
|
574
|
+
*** chromedriver to download = 131.0.6778.108 (Latest Stable)
|
551
575
|
|
552
576
|
Downloading chromedriver-mac-arm64.zip from:
|
553
|
-
https://storage.googleapis.com/chrome-for-testing-public/
|
577
|
+
https://storage.googleapis.com/chrome-for-testing-public/131.0.6778.108/mac-arm64/chromedriver-mac-arm64.zip ...
|
554
578
|
Download Complete!
|
555
579
|
|
556
580
|
Extracting ['chromedriver'] from chromedriver-mac-arm64.zip ...
|
557
581
|
Unzip Complete!
|
558
582
|
|
559
583
|
The file [chromedriver] was saved to:
|
560
|
-
|
584
|
+
~/github/SeleniumBase/seleniumbase/drivers/
|
585
|
+
chromedriver
|
561
586
|
|
562
|
-
Making [chromedriver
|
563
|
-
[chromedriver
|
587
|
+
Making [chromedriver 131.0.6778.108] executable ...
|
588
|
+
[chromedriver 131.0.6778.108] is now ready for use!
|
564
589
|
```
|
565
590
|
|
566
591
|
</details>
|
@@ -578,9 +603,9 @@ cd examples/
|
|
578
603
|
pytest my_first_test.py
|
579
604
|
```
|
580
605
|
|
581
|
-
<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="
|
606
|
+
<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="480" /></a>
|
582
607
|
|
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>
|
608
|
+
<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
609
|
|
585
610
|
```python
|
586
611
|
from seleniumbase import BaseCase
|
@@ -996,7 +1021,7 @@ You can run it from the ``examples/`` folder like this:
|
|
996
1021
|
pytest test_fail.py
|
997
1022
|
```
|
998
1023
|
|
999
|
-
🔵 You'll notice that a logs folder,
|
1024
|
+
🔵 You'll notice that a logs folder, ``./latest_logs/``, was created to hold information (and screenshots) about the failing test. During test runs, past results get moved to the archived_logs folder if you have ARCHIVE_EXISTING_LOGS set to True in [settings.py](https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/config/settings.py), or if your run tests with ``--archive-logs``. If you choose not to archive existing logs, they will be deleted and replaced by the logs of the latest test run.
|
1000
1025
|
|
1001
1026
|
--------
|
1002
1027
|
|
@@ -3,10 +3,10 @@ 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=
|
6
|
+
seleniumbase/__version__.py,sha256=7MfqwQmRqETlKWexc8yLVDnkE1CWZHELfUUA-N5IZ8g,46
|
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
|
-
seleniumbase/behave/behave_sb.py,sha256
|
9
|
+
seleniumbase/behave/behave_sb.py,sha256=qQF85LoohJBfrPK5ZcPi50v-pWtOrC9qcN1B3Ki_3tY,59401
|
10
10
|
seleniumbase/behave/steps.py,sha256=8-N-NB2tnDsxaP4LSg-uSBgbwZYMS6ZEL1oggO1PCoU,390
|
11
11
|
seleniumbase/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
12
|
seleniumbase/common/decorators.py,sha256=DYdjtF8Y7YJj0JS33WtmsIn4yddPoniNwcPyrgt522o,7857
|
@@ -21,13 +21,13 @@ seleniumbase/config/settings.py,sha256=cAMmoFBQ6g8GCJIsRsSwGsP1_fJxhADxjHq30lFB1
|
|
21
21
|
seleniumbase/console_scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
22
|
seleniumbase/console_scripts/logo_helper.py,sha256=ZqS9TAwpcu5mM5ll-a0wTbXLs2Sbcsyo3EoC4jwtnME,2927
|
23
23
|
seleniumbase/console_scripts/rich_helper.py,sha256=U_zvXpalxVV8rtg8c8EnNNmnh45tii3AV5ZV3O3KbGA,2234
|
24
|
-
seleniumbase/console_scripts/run.py,sha256=
|
24
|
+
seleniumbase/console_scripts/run.py,sha256=6Q9kbpOY40kTczcQVrD-x6thb3QO9-2wfse7DpL3Hik,59052
|
25
25
|
seleniumbase/console_scripts/sb_behave_gui.py,sha256=3Zl7_QQczvkkQW_UuaqYEUlEjiZ6AJzHR9GeNyVVXkc,15147
|
26
26
|
seleniumbase/console_scripts/sb_caseplans.py,sha256=qlmvjQ49bOBE1Q29fVmabimkVibCVr25GNtJhFPTMrc,18145
|
27
|
-
seleniumbase/console_scripts/sb_commander.py,sha256=
|
28
|
-
seleniumbase/console_scripts/sb_install.py,sha256=
|
27
|
+
seleniumbase/console_scripts/sb_commander.py,sha256=exQGKzqRAoGqRmQtDmlmoHnSG9eSy9eh8HVy-tXw6s4,13343
|
28
|
+
seleniumbase/console_scripts/sb_install.py,sha256=GgOqQZZhjwbSle9aB-6Fyf3x6Xlj78uKQ6PkPq-3VEE,55346
|
29
29
|
seleniumbase/console_scripts/sb_mkchart.py,sha256=ep9g-9CSIwaOJKVxhB3xjRQpfsuApyN8-Dr129cNXwQ,10941
|
30
|
-
seleniumbase/console_scripts/sb_mkdir.py,sha256=
|
30
|
+
seleniumbase/console_scripts/sb_mkdir.py,sha256=SaI2wnjE5eQLxX8RPdjFjM_ghBbMm4r_vBUzU5t5dzY,29819
|
31
31
|
seleniumbase/console_scripts/sb_mkfile.py,sha256=OWYd4yFccmjrd-gNn1t1una-HDRU2_N2-r4Tg3nHsj0,17744
|
32
32
|
seleniumbase/console_scripts/sb_mkpres.py,sha256=EWFRVacjYTX49y-fEiYTZacM9_01IxuuaO4nMjHrIGo,11015
|
33
33
|
seleniumbase/console_scripts/sb_mkrec.py,sha256=PrizjTmyrROYPO0yDm-zQS3QSfsZNeAmcJKKUvfgLhc,11966
|
@@ -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=
|
39
|
+
seleniumbase/core/browser_launcher.py,sha256=4XvJ-oppY02wIrMm8nKeGQH5rZ1MCO95vQLiYT9vXL0,233436
|
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
|
@@ -44,17 +44,17 @@ seleniumbase/core/detect_b_ver.py,sha256=RxeGRMbBUTMrXh5KsS1P1SH7eEKYbzL1vQw1gTd
|
|
44
44
|
seleniumbase/core/download_helper.py,sha256=qSR54kQISucF4RQaLCOuuerSu6DR41juGi_30HVvWYY,2943
|
45
45
|
seleniumbase/core/encoded_images.py,sha256=rDKJ4cNJSuKiRcFViYU7bjyTS9_moI57gUPRXVg3u2k,14209
|
46
46
|
seleniumbase/core/jqc_helper.py,sha256=2DDQr9Q2jSSZqFzX588jLlUM9oJvyrRWq2aORSIPUdI,10322
|
47
|
-
seleniumbase/core/log_helper.py,sha256=
|
47
|
+
seleniumbase/core/log_helper.py,sha256=SW8wx2f2HfU3ERbANjxEC-jDbjy_IzaNYRKPlayfRRI,23442
|
48
48
|
seleniumbase/core/mysql.py,sha256=8Fzj3p5dhtDWfMpFqFYxpSwa9s1UltiHsWJ56_aPOqk,3993
|
49
|
-
seleniumbase/core/proxy_helper.py,sha256=
|
49
|
+
seleniumbase/core/proxy_helper.py,sha256=kZnfkflB3XhuL2h-3inmx3UOLS8VAZ385BGCc4H8TvU,8267
|
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=
|
53
|
+
seleniumbase/core/sb_cdp.py,sha256=5MVZ21faTNm6v_Yc11ZXVdVQgfimEjMZvgLFp0EEw9Q,76034
|
54
54
|
seleniumbase/core/sb_driver.py,sha256=NGa4adi8OAi2WFtFkEguXg3JCd1p-JuZweIpGNifEfU,13488
|
55
55
|
seleniumbase/core/session_helper.py,sha256=s9zD3PVZEWVzG2h81cCUskbNWLfdjC_LwwQjKptHCak,558
|
56
|
-
seleniumbase/core/settings_parser.py,sha256=
|
57
|
-
seleniumbase/core/style_sheet.py,sha256=
|
56
|
+
seleniumbase/core/settings_parser.py,sha256=gqVohHVlE_5L5Cqe2L24uYrRzvoK-saX8E_Df7_-_3I,7609
|
57
|
+
seleniumbase/core/style_sheet.py,sha256=QsfTBtgedfM3uTqgxtd53bhq202p9fwLMbFl9mPZgVg,11892
|
58
58
|
seleniumbase/core/testcase_manager.py,sha256=TblCfo8Zfap1Bayip-qTu9gqT-KALSwXAX4awBpnEHg,4633
|
59
59
|
seleniumbase/core/tour_helper.py,sha256=kj2cz-DGKlw9SX3tWnVp-snpk6Flvqj81-xmKdKDtg0,42555
|
60
60
|
seleniumbase/core/visual_helper.py,sha256=Dj5iJKw-bT_3e6KDqMf0sJi7xs_D96yqLcNc8fqhrjI,3408
|
@@ -65,14 +65,14 @@ 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=
|
69
|
-
seleniumbase/fixtures/constants.py,sha256=
|
68
|
+
seleniumbase/fixtures/base_case.py,sha256=Pj28EBINaL1gL8O--YyCfn8YhmcH2jaQrJm5uiMZB20,720825
|
69
|
+
seleniumbase/fixtures/constants.py,sha256=WMrItuNyKq3XVJ64NluLIRc4gJCxDw8K8qXED0b9S2w,13752
|
70
70
|
seleniumbase/fixtures/css_to_xpath.py,sha256=9ouDB1xl4MJ2os6JOgTIAyHKOQfuxtxvXC3O5hSnEKA,1954
|
71
71
|
seleniumbase/fixtures/errors.py,sha256=KyxuEVx_e3MPhVrJfNIa_3ltMpbCFxfy_jxK8RFNTns,555
|
72
|
-
seleniumbase/fixtures/js_utils.py,sha256=
|
73
|
-
seleniumbase/fixtures/page_actions.py,sha256=
|
72
|
+
seleniumbase/fixtures/js_utils.py,sha256=asZJ0LDFv2BPQOzUVKK_9ie8ToGcmFousDnGdb3Vabg,51534
|
73
|
+
seleniumbase/fixtures/page_actions.py,sha256=LPcFSkUvBkxLrOt4laQHHN-NLmqInT41E2vlPiOlLFY,66753
|
74
74
|
seleniumbase/fixtures/page_utils.py,sha256=5m7iXpikLs80TJoRO6_gEfXE1AKeQgcH1aFbR8o1C9A,12034
|
75
|
-
seleniumbase/fixtures/shared_utils.py,sha256=
|
75
|
+
seleniumbase/fixtures/shared_utils.py,sha256=G6CsE-Adt-GfuZF-71jXWKSIQW7YZPx8FIM24pVd_yI,8368
|
76
76
|
seleniumbase/fixtures/unittest_helper.py,sha256=sfZ92rZeBAn_sF_yQ3I6_I7h3lyU5-cV_UMegBNoEm8,1294
|
77
77
|
seleniumbase/fixtures/words.py,sha256=FOA4mAYvl3EPVpBTvgvK6YwCL8BdlRCmed685kEe7Vg,7827
|
78
78
|
seleniumbase/fixtures/xpath_to_css.py,sha256=lML56k656fElXJ4NJF07r35FjctrbgQkXUotNk7A-as,8876
|
@@ -86,13 +86,13 @@ seleniumbase/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
86
86
|
seleniumbase/plugins/base_plugin.py,sha256=FemdftNhOaTfQIw5bWcJQPPPGQ3P0_sMEI_YYDuzZgU,14972
|
87
87
|
seleniumbase/plugins/basic_test_info.py,sha256=8ov6n417gPbqqvrlT4zrch7l2XcRt-GF2ny6rR9AMWk,2108
|
88
88
|
seleniumbase/plugins/db_reporting_plugin.py,sha256=En09qUCoojrk9-vbcnsoHdSELoGmag2GDIyu3jTiJas,7331
|
89
|
-
seleniumbase/plugins/driver_manager.py,sha256=
|
89
|
+
seleniumbase/plugins/driver_manager.py,sha256=56uzORwS0VV4E0LuY89g3OSzakoVVigcVaXXWk9z9cY,35468
|
90
90
|
seleniumbase/plugins/page_source.py,sha256=loTnXxOj4kxEukuTZEiGyvKBhY3KDVDMnNlHHheTBDE,1889
|
91
|
-
seleniumbase/plugins/pytest_plugin.py,sha256=
|
91
|
+
seleniumbase/plugins/pytest_plugin.py,sha256=dWng0-21PR0bU76J4ipkjCKxlrt6OjUvxW4pGdiWCeQ,107658
|
92
92
|
seleniumbase/plugins/s3_logging_plugin.py,sha256=WDfertQgGOW_SRJpFMaekYD6vBVW9VO62POtXXy2HCM,2319
|
93
|
-
seleniumbase/plugins/sb_manager.py,sha256=
|
93
|
+
seleniumbase/plugins/sb_manager.py,sha256=xyQrtXrKju11DIlrzcOjSk4BI1wdUcpAIJDIuSMl-Tg,55847
|
94
94
|
seleniumbase/plugins/screen_shots.py,sha256=1hrXw-hzuZ1BR6Yh7AyWX2ABnvnP73-RCbwdz958gj4,1127
|
95
|
-
seleniumbase/plugins/selenium_plugin.py,sha256=
|
95
|
+
seleniumbase/plugins/selenium_plugin.py,sha256=J0H2TPAATEal06eQ-kchiLnBGRyjHzDzjoAfWVvNyuM,59374
|
96
96
|
seleniumbase/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
97
97
|
seleniumbase/translate/__init__.py,sha256=N2i5XntTwJZmwr9-qvdX5gC6Rdm5-ClIbnQ8yyPn4Oo,459
|
98
98
|
seleniumbase/translate/chinese.py,sha256=0QhK2eadtsdN4KCvwki1J7jBCe8I4xxWbKzteJKJozY,24698
|
@@ -110,16 +110,16 @@ seleniumbase/undetected/__init__.py,sha256=PSaAVgWU-yU1zwts2-UIJMWS6Mwo1YwAw0pMl
|
|
110
110
|
seleniumbase/undetected/cdp.py,sha256=RLpwZnhUvmK9tgXcZIBBQedwk2q7Jj_EXZkmzI8WUqk,4023
|
111
111
|
seleniumbase/undetected/dprocess.py,sha256=83EV8ZHJWHG1TSUv9JNClBhdgiBXlkCc6mJ--HsoP3k,1681
|
112
112
|
seleniumbase/undetected/options.py,sha256=BoNuwhrG7oOvuLvTwkvsWCF36pMkS1tHCG-XpP4_EkI,3001
|
113
|
-
seleniumbase/undetected/patcher.py,sha256=
|
113
|
+
seleniumbase/undetected/patcher.py,sha256=fXh99P2D9XPdYTFtsDYXk1ZUSh8Elkg-dGeMhUihmu4,11445
|
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=
|
118
|
-
seleniumbase/undetected/cdp_driver/browser.py,sha256=
|
119
|
-
seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=
|
120
|
-
seleniumbase/undetected/cdp_driver/config.py,sha256=
|
117
|
+
seleniumbase/undetected/cdp_driver/_contradict.py,sha256=lP4b0h5quAy573ETn_TBbYV889cL1AuPLVInpJ0ZkiU,3183
|
118
|
+
seleniumbase/undetected/cdp_driver/browser.py,sha256=quD0e2aoehXQrs9zxGsobF0kZY11gmJ58Q_JQhheQYg,30144
|
119
|
+
seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=X7bd5qt-kegTiOEcsoLUHrAJ5YTruEub-9oL4TBDTYk,16886
|
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=
|
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.
|
139
|
-
seleniumbase-4.
|
140
|
-
seleniumbase-4.
|
141
|
-
seleniumbase-4.
|
142
|
-
seleniumbase-4.
|
143
|
-
seleniumbase-4.
|
138
|
+
seleniumbase-4.34.2.dist-info/LICENSE,sha256=BRblZsX7HyPUjQmYTiyWr_e9tzWvmR3R4SFclM2R3W0,1085
|
139
|
+
seleniumbase-4.34.2.dist-info/METADATA,sha256=tvfGcEsVci8OW-lRVq2-uKFxkyM97KAMiN7hDbS90qI,86522
|
140
|
+
seleniumbase-4.34.2.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
141
|
+
seleniumbase-4.34.2.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
|
142
|
+
seleniumbase-4.34.2.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
|
143
|
+
seleniumbase-4.34.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|