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.
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.33.7"
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")
@@ -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
- attributes = self.get_element_attributes(selector)
1017
- return attributes[attribute]
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() and ":contains(" not in selector:
6055
- self.cdp.highlight(selector)
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.wait_for_ready_state_complete()
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):
@@ -125,7 +125,6 @@ class Config:
125
125
  "--deny-permission-prompts",
126
126
  "--disable-infobars",
127
127
  "--disable-breakpad",
128
- "--disable-component-update",
129
128
  "--disable-prompt-on-repost",
130
129
  "--disable-password-generation",
131
130
  "--disable-ipc-flooding-protection",
@@ -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
- json.loads(
391
- await self.apply(
392
- """
393
- function (e) {
394
- let o = {}
395
- for(let k in e){
396
- o[k] = e[k]
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
- return JSON.stringify(o)
399
- }
400
- """
401
- )
398
+ """
402
399
  )
403
400
  )
404
401
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.33.7
3
+ Version: 4.33.8
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
@@ -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=nUNoxjUDcXHP7bgCzQttf4Edyro2DVTDgt8rIwb4KXs,46
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=0J5J7kXG30aptlPQ3JdFcu8-U4lC_Y6U_47kkHbyKoo,224666
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=Z2do1FqwfFAK-xgrZ6f_-wTMf3DSbI-ShHRZ34nFy5w,70437
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=KokVXpCiGZhJ-D4Bo-hizPz5r-iefzWoiTANu9zNaq4,7504
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=6MVQDcQ8woA3sis2hH6epDaVNjefsd2m1xzjJn9mugs,718550
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=Rjvde7V-XJ0ihZdTmOmHEVWSuDWm3SprQ3njg8SN3Go,12087
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=610eW609khWp2hFn9gKUx4DDxeJdPZ5jb0Vxe1W-9PY,40426
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.7.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
139
- seleniumbase-4.33.7.dist-info/METADATA,sha256=iP-VXv10VT9xAD7UJPlD8tTJi7J88s6D3GCy1gvec6E,86528
140
- seleniumbase-4.33.7.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
141
- seleniumbase-4.33.7.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
- seleniumbase-4.33.7.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
- seleniumbase-4.33.7.dist-info/RECORD,,
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,,