seleniumbase 4.33.7__py3-none-any.whl → 4.33.8__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- seleniumbase/__version__.py +1 -1
- seleniumbase/core/browser_launcher.py +1 -2
- seleniumbase/core/sb_cdp.py +13 -7
- seleniumbase/core/settings_parser.py +2 -0
- seleniumbase/fixtures/base_case.py +4 -5
- seleniumbase/undetected/cdp_driver/config.py +0 -1
- seleniumbase/undetected/cdp_driver/element.py +9 -12
- {seleniumbase-4.33.7.dist-info → seleniumbase-4.33.8.dist-info}/METADATA +1 -1
- {seleniumbase-4.33.7.dist-info → seleniumbase-4.33.8.dist-info}/RECORD +13 -13
- {seleniumbase-4.33.7.dist-info → seleniumbase-4.33.8.dist-info}/LICENSE +0 -0
- {seleniumbase-4.33.7.dist-info → seleniumbase-4.33.8.dist-info}/WHEEL +0 -0
- {seleniumbase-4.33.7.dist-info → seleniumbase-4.33.8.dist-info}/entry_points.txt +0 -0
- {seleniumbase-4.33.7.dist-info → seleniumbase-4.33.8.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.8"
|
@@ -658,6 +658,7 @@ def uc_open_with_cdp_mode(driver, url=None):
|
|
658
658
|
cdp.get_window = CDPM.get_window
|
659
659
|
cdp.get_element_attributes = CDPM.get_element_attributes
|
660
660
|
cdp.get_element_attribute = CDPM.get_element_attribute
|
661
|
+
cdp.get_attribute = CDPM.get_attribute
|
661
662
|
cdp.get_element_html = CDPM.get_element_html
|
662
663
|
cdp.get_element_rect = CDPM.get_element_rect
|
663
664
|
cdp.get_element_size = CDPM.get_element_size
|
@@ -2321,7 +2322,6 @@ def _set_chrome_options(
|
|
2321
2322
|
chrome_options.add_argument("--disable-ipc-flooding-protection")
|
2322
2323
|
chrome_options.add_argument("--disable-password-generation")
|
2323
2324
|
chrome_options.add_argument("--disable-domain-reliability")
|
2324
|
-
chrome_options.add_argument("--disable-component-update")
|
2325
2325
|
chrome_options.add_argument("--disable-breakpad")
|
2326
2326
|
included_disabled_features = []
|
2327
2327
|
included_disabled_features.append("OptimizationHints")
|
@@ -4071,7 +4071,6 @@ def get_local_driver(
|
|
4071
4071
|
edge_options.add_argument("--disable-ipc-flooding-protection")
|
4072
4072
|
edge_options.add_argument("--disable-password-generation")
|
4073
4073
|
edge_options.add_argument("--disable-domain-reliability")
|
4074
|
-
edge_options.add_argument("--disable-component-update")
|
4075
4074
|
edge_options.add_argument("--disable-breakpad")
|
4076
4075
|
included_disabled_features = []
|
4077
4076
|
included_disabled_features.append("OptimizationHints")
|
seleniumbase/core/sb_cdp.py
CHANGED
@@ -83,6 +83,9 @@ class CDPMethods():
|
|
83
83
|
element.get_position = lambda: self.__get_position(element)
|
84
84
|
element.get_html = lambda: self.__get_html(element)
|
85
85
|
element.get_js_attributes = lambda: self.__get_js_attributes(element)
|
86
|
+
element.get_attribute = (
|
87
|
+
lambda attribute: self.__get_attribute(element, attribute)
|
88
|
+
)
|
86
89
|
return element
|
87
90
|
|
88
91
|
def get(self, url):
|
@@ -440,6 +443,12 @@ class CDPMethods():
|
|
440
443
|
self.loop.run_until_complete(element.get_js_attributes_async())
|
441
444
|
)
|
442
445
|
|
446
|
+
def __get_attribute(self, element, attribute):
|
447
|
+
try:
|
448
|
+
return element.get_js_attributes()[attribute]
|
449
|
+
except Exception:
|
450
|
+
return None
|
451
|
+
|
443
452
|
def __get_x_scroll_offset(self):
|
444
453
|
x_scroll_offset = self.loop.run_until_complete(
|
445
454
|
self.page.evaluate("window.pageXOffset")
|
@@ -1013,8 +1022,10 @@ class CDPMethods():
|
|
1013
1022
|
)
|
1014
1023
|
|
1015
1024
|
def get_element_attribute(self, selector, attribute):
|
1016
|
-
|
1017
|
-
|
1025
|
+
return self.get_element_attributes(selector)[attribute]
|
1026
|
+
|
1027
|
+
def get_attribute(self, selector, attribute):
|
1028
|
+
return self.find_element(selector).get_attribute(attribute)
|
1018
1029
|
|
1019
1030
|
def get_element_html(self, selector):
|
1020
1031
|
selector = self.__convert_to_css_if_xpath(selector)
|
@@ -1774,31 +1785,26 @@ class CDPMethods():
|
|
1774
1785
|
with suppress(Exception):
|
1775
1786
|
self.loop.run_until_complete(self.page.evaluate(js_code))
|
1776
1787
|
self.loop.run_until_complete(self.page.wait())
|
1777
|
-
self.__add_light_pause()
|
1778
1788
|
|
1779
1789
|
def scroll_to_top(self):
|
1780
1790
|
js_code = "window.scrollTo(0, 0);"
|
1781
1791
|
with suppress(Exception):
|
1782
1792
|
self.loop.run_until_complete(self.page.evaluate(js_code))
|
1783
1793
|
self.loop.run_until_complete(self.page.wait())
|
1784
|
-
self.__add_light_pause()
|
1785
1794
|
|
1786
1795
|
def scroll_to_bottom(self):
|
1787
1796
|
js_code = "window.scrollTo(0, 10000);"
|
1788
1797
|
with suppress(Exception):
|
1789
1798
|
self.loop.run_until_complete(self.page.evaluate(js_code))
|
1790
1799
|
self.loop.run_until_complete(self.page.wait())
|
1791
|
-
self.__add_light_pause()
|
1792
1800
|
|
1793
1801
|
def scroll_up(self, amount=25):
|
1794
1802
|
self.loop.run_until_complete(self.page.scroll_up(amount))
|
1795
1803
|
self.loop.run_until_complete(self.page.wait())
|
1796
|
-
self.__add_light_pause()
|
1797
1804
|
|
1798
1805
|
def scroll_down(self, amount=25):
|
1799
1806
|
self.loop.run_until_complete(self.page.scroll_down(amount))
|
1800
1807
|
self.loop.run_until_complete(self.page.wait())
|
1801
|
-
self.__add_light_pause()
|
1802
1808
|
|
1803
1809
|
def save_screenshot(self, name, folder=None, selector=None):
|
1804
1810
|
filename = name
|
@@ -71,6 +71,8 @@ def set_settings(settings_file):
|
|
71
71
|
settings.LARGE_TIMEOUT = override_settings[key]
|
72
72
|
elif key == "EXTREME_TIMEOUT":
|
73
73
|
settings.EXTREME_TIMEOUT = override_settings[key]
|
74
|
+
elif key == "PAGE_LOAD_TIMEOUT":
|
75
|
+
settings.PAGE_LOAD_TIMEOUT = override_settings[key]
|
74
76
|
elif key == "ARCHIVE_EXISTING_LOGS":
|
75
77
|
settings.ARCHIVE_EXISTING_LOGS = override_settings[key]
|
76
78
|
elif key == "ARCHIVE_EXISTING_DOWNLOADS":
|
@@ -6051,10 +6051,8 @@ class BaseCase(unittest.TestCase):
|
|
6051
6051
|
scroll - the option to scroll to the element first (Default: True)
|
6052
6052
|
timeout - the time to wait for the element to appear """
|
6053
6053
|
self.__check_scope()
|
6054
|
-
if self.__is_cdp_swap_needed()
|
6055
|
-
self.
|
6056
|
-
return
|
6057
|
-
self._check_browser()
|
6054
|
+
if not self.__is_cdp_swap_needed():
|
6055
|
+
self._check_browser()
|
6058
6056
|
self.__skip_if_esc()
|
6059
6057
|
if isinstance(selector, WebElement):
|
6060
6058
|
self.__highlight_element(selector, loops=loops, scroll=scroll)
|
@@ -13860,7 +13858,8 @@ class BaseCase(unittest.TestCase):
|
|
13860
13858
|
js_utils.scroll_to_element(self.driver, element)
|
13861
13859
|
|
13862
13860
|
def __highlight_with_js(self, selector, loops, o_bs):
|
13863
|
-
self.
|
13861
|
+
if not self.__is_cdp_swap_needed():
|
13862
|
+
self.wait_for_ready_state_complete()
|
13864
13863
|
js_utils.highlight_with_js(self.driver, selector, loops, o_bs)
|
13865
13864
|
|
13866
13865
|
def __highlight_element_with_js(self, element, loops, o_bs):
|
@@ -1,6 +1,5 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
import asyncio
|
3
|
-
import json
|
4
3
|
import logging
|
5
4
|
import pathlib
|
6
5
|
import secrets
|
@@ -387,18 +386,16 @@ class Element:
|
|
387
386
|
|
388
387
|
async def get_js_attributes_async(self):
|
389
388
|
return ContraDict(
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
389
|
+
await self.apply(
|
390
|
+
"""
|
391
|
+
function (e) {
|
392
|
+
let o = {}
|
393
|
+
for(let k in e){
|
394
|
+
o[k] = e[k]
|
395
|
+
}
|
396
|
+
return o
|
397
397
|
}
|
398
|
-
|
399
|
-
}
|
400
|
-
"""
|
401
|
-
)
|
398
|
+
"""
|
402
399
|
)
|
403
400
|
)
|
404
401
|
|
@@ -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=rd7NUV3t0KKsPu_LnXrJlAcYzq8npXhiWbpSgIR17LE,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
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=FvcxXqCiE4yelqDBQjXVY4b7UubfzhI67IIWvjJMDe4,224583
|
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,10 +50,10 @@ 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=zFFpaQZTBpjMLhVX_Ll9hOqKnZLJstTgmiU8-LFbvwo,70647
|
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=
|
56
|
+
seleniumbase/core/settings_parser.py,sha256=gqVohHVlE_5L5Cqe2L24uYrRzvoK-saX8E_Df7_-_3I,7609
|
57
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
|
@@ -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=DY-UpQRyfl8ZzA-D-5cKJKwm2kAXeE7L06rgMRDz3Xw,718513
|
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
|
@@ -117,9 +117,9 @@ seleniumbase/undetected/cdp_driver/__init__.py,sha256=c0TjMwPfVFyoqYOJ7PQ-Jln_L_
|
|
117
117
|
seleniumbase/undetected/cdp_driver/_contradict.py,sha256=6thDYeoEGiC7Q3tXLgoD_AhxecCFnATzBSjNympyRHA,3184
|
118
118
|
seleniumbase/undetected/cdp_driver/browser.py,sha256=n8GYspU7b0pfBT4AqhqY6IdGVOZ1FC4wJ5emIOl-khQ,30129
|
119
119
|
seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=YhtD2Tm6PLIy9VKbgk8lHdGniS3mObyX4yAC1aG0TgQ,16733
|
120
|
-
seleniumbase/undetected/cdp_driver/config.py,sha256=
|
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=LMnHQO-n0DvBo3Fb5G6X8cOaAvqxHgTZj8JHCTfWZjQ,40377
|
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.8.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
|
139
|
+
seleniumbase-4.33.8.dist-info/METADATA,sha256=ZVgDox3MKzCN1oVyAWbfy8UuHNqF6JRsygiFvUjAGYE,86528
|
140
|
+
seleniumbase-4.33.8.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
141
|
+
seleniumbase-4.33.8.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
|
142
|
+
seleniumbase-4.33.8.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
|
143
|
+
seleniumbase-4.33.8.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|