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.
- seleniumbase/__version__.py +1 -1
- seleniumbase/core/browser_launcher.py +0 -2
- seleniumbase/core/sb_cdp.py +28 -7
- seleniumbase/fixtures/base_case.py +8 -0
- seleniumbase/undetected/cdp_driver/_contradict.py +3 -3
- seleniumbase/undetected/cdp_driver/browser.py +8 -6
- seleniumbase/undetected/cdp_driver/element.py +9 -6
- {seleniumbase-4.33.9.dist-info → seleniumbase-4.33.11.dist-info}/METADATA +59 -68
- {seleniumbase-4.33.9.dist-info → seleniumbase-4.33.11.dist-info}/RECORD +13 -13
- {seleniumbase-4.33.9.dist-info → seleniumbase-4.33.11.dist-info}/LICENSE +0 -0
- {seleniumbase-4.33.9.dist-info → seleniumbase-4.33.11.dist-info}/WHEEL +0 -0
- {seleniumbase-4.33.9.dist-info → seleniumbase-4.33.11.dist-info}/entry_points.txt +0 -0
- {seleniumbase-4.33.9.dist-info → seleniumbase-4.33.11.dist-info}/top_level.txt +0 -0
seleniumbase/__version__.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
# seleniumbase package
|
2
|
-
__version__ = "4.33.
|
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)
|
seleniumbase/core/sb_cdp.py
CHANGED
@@ -519,7 +519,20 @@ class CDPMethods():
|
|
519
519
|
try:
|
520
520
|
return element.get_js_attributes()[attribute]
|
521
521
|
except Exception:
|
522
|
-
|
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
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
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
|
-
|
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,
|
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=
|
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
|
-
|
121
|
-
|
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
|
-
|
442
|
-
if
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
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.
|
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.
|
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
|
-
|
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
|
-
|
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
|
-
|
243
|
+
--------
|
244
244
|
|
245
|
-
<p align="left">📗 Here's <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/
|
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
|
-
```
|
248
|
-
|
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
|
-
|
258
|
+
> `python raw_google.py`
|
252
259
|
|
253
|
-
|
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"
|
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"
|
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"
|
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 =
|
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/
|
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
|
-
|
550
|
+
~/github/SeleniumBase/seleniumbase/drivers/
|
551
|
+
chromedriver
|
561
552
|
|
562
|
-
Making [chromedriver
|
563
|
-
[chromedriver
|
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=
|
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=
|
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=
|
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=
|
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=
|
118
|
-
seleniumbase/undetected/cdp_driver/browser.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
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=
|
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.
|
139
|
-
seleniumbase-4.33.
|
140
|
-
seleniumbase-4.33.
|
141
|
-
seleniumbase-4.33.
|
142
|
-
seleniumbase-4.33.
|
143
|
-
seleniumbase-4.33.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|