seleniumbase 4.34.7__py3-none-any.whl → 4.34.9__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.34.7"
2
+ __version__ = "4.34.9"
@@ -1251,6 +1251,10 @@ def _uc_gui_click_captcha(
1251
1251
  )
1252
1252
  ):
1253
1253
  frame = '[data-testid*="challenge-"] div'
1254
+ elif driver.is_element_present(
1255
+ "form.turnstile div#turnstile-widget div:not([class])"
1256
+ ):
1257
+ frame = "form.turnstile #turnstile-widget div:not([class])"
1254
1258
  elif driver.is_element_present(
1255
1259
  'form div:not([class]):has(input[name*="cf-turn"])'
1256
1260
  ):
@@ -1291,6 +1295,23 @@ def _uc_gui_click_captcha(
1291
1295
  driver.cdp.evaluate(script)
1292
1296
  else:
1293
1297
  driver.execute_script(script)
1298
+ elif (
1299
+ driver.is_element_present("form")
1300
+ and driver.is_element_present(
1301
+ "form.turnstile #turnstile-widget > div:not([class])"
1302
+ )
1303
+ ):
1304
+ script = (
1305
+ """var $elements = document.querySelectorAll(
1306
+ 'form.turnstile #turnstile-widget');
1307
+ var index = 0, length = $elements.length;
1308
+ for(; index < length; index++){
1309
+ $elements[index].setAttribute('align', 'left');}"""
1310
+ )
1311
+ if __is_cdp_swap_needed(driver):
1312
+ driver.cdp.evaluate(script)
1313
+ else:
1314
+ driver.execute_script(script)
1294
1315
  if not is_in_frame or needs_switch:
1295
1316
  # Currently not in frame (or nested frame outside CF one)
1296
1317
  try:
@@ -877,8 +877,13 @@ class CDPMethods():
877
877
 
878
878
  def evaluate(self, expression):
879
879
  """Run a JavaScript expression and return the result."""
880
- if expression.startswith("return "):
881
- expression = expression[len("return "):]
880
+ expression = expression.strip()
881
+ exp_list = expression.split("\n")
882
+ if exp_list and exp_list[-1].strip().startswith("return "):
883
+ expression = (
884
+ "\n".join(exp_list[0:-1]) + "\n"
885
+ + exp_list[-1].strip()[len("return "):]
886
+ ).strip()
882
887
  return self.loop.run_until_complete(
883
888
  self.page.evaluate(expression)
884
889
  )
@@ -3256,7 +3256,7 @@ class BaseCase(unittest.TestCase):
3256
3256
  html_string = "\n".join(new_lines)
3257
3257
  soup = self.get_beautiful_soup(html_string)
3258
3258
  found_base = False
3259
- links = soup.findAll("link")
3259
+ links = soup.find_all("link")
3260
3260
  href = None
3261
3261
  for link in links:
3262
3262
  if link.get("rel") == ["canonical"] and link.get("href"):
@@ -3272,7 +3272,7 @@ class BaseCase(unittest.TestCase):
3272
3272
  "<head>", '<head><base href="%s">' % href
3273
3273
  )
3274
3274
  elif not found_base:
3275
- bases = soup.findAll("base")
3275
+ bases = soup.find_all("base")
3276
3276
  for base in bases:
3277
3277
  if base.get("href"):
3278
3278
  href = base.get("href")
@@ -3280,7 +3280,7 @@ class BaseCase(unittest.TestCase):
3280
3280
  html_string = html_string.replace('base: "."', 'base: "%s"' % href)
3281
3281
 
3282
3282
  soup = self.get_beautiful_soup(html_string)
3283
- scripts = soup.findAll("script")
3283
+ scripts = soup.find_all("script")
3284
3284
  for script in scripts:
3285
3285
  if script.get("type") != "application/json":
3286
3286
  html_string = html_string.replace(str(script), "")
@@ -452,14 +452,19 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
452
452
  self.service.start()
453
453
  with suppress(Exception):
454
454
  self.start_session()
455
+ time.sleep(0.0075)
455
456
  with suppress(Exception):
456
- if self.current_url.startswith("chrome-extension://"):
457
- self.close()
458
- if self.service.is_connectable():
459
- self.stop_client()
460
- self.service.stop()
461
- self.service.start()
462
- self.start_session()
457
+ for i in range(5):
458
+ if self.current_url.startswith("chrome-extension://"):
459
+ self.close()
460
+ if self.service.is_connectable():
461
+ self.stop_client()
462
+ self.service.stop()
463
+ self.service.start()
464
+ self.start_session()
465
+ time.sleep(0.0075)
466
+ else:
467
+ break
463
468
  self._is_connected = True
464
469
 
465
470
  def disconnect(self):
@@ -480,14 +485,19 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
480
485
  self.service.start()
481
486
  with suppress(Exception):
482
487
  self.start_session()
488
+ time.sleep(0.0075)
483
489
  with suppress(Exception):
484
- if self.current_url.startswith("chrome-extension://"):
485
- self.close()
486
- if self.service.is_connectable():
487
- self.stop_client()
488
- self.service.stop()
489
- self.service.start()
490
- self.start_session()
490
+ for i in range(5):
491
+ if self.current_url.startswith("chrome-extension://"):
492
+ self.close()
493
+ if self.service.is_connectable():
494
+ self.stop_client()
495
+ self.service.stop()
496
+ self.service.start()
497
+ self.start_session()
498
+ time.sleep(0.0075)
499
+ else:
500
+ break
491
501
  self._is_connected = True
492
502
 
493
503
  def start_session(self, capabilities=None):
@@ -226,7 +226,11 @@ async def start_async(*args, **kwargs) -> Browser:
226
226
  binary_location = None
227
227
  if "browser_executable_path" in kwargs:
228
228
  binary_location = kwargs["browser_executable_path"]
229
- if shared_utils.is_chrome_130_or_newer(binary_location):
229
+ if (
230
+ shared_utils.is_chrome_130_or_newer(binary_location)
231
+ and "user_data_dir" in kwargs
232
+ and kwargs["user_data_dir"]
233
+ ):
230
234
  if "headless" in kwargs:
231
235
  headless = kwargs["headless"]
232
236
  decoy_args = kwargs
@@ -241,12 +245,27 @@ async def start_async(*args, **kwargs) -> Browser:
241
245
 
242
246
 
243
247
  def start_sync(*args, **kwargs) -> Browser:
244
- loop = asyncio.get_event_loop()
248
+ loop = None
249
+ if (
250
+ "loop" in kwargs
251
+ and kwargs["loop"]
252
+ and hasattr(kwargs["loop"], "create_task")
253
+ ):
254
+ loop = kwargs["loop"]
255
+ else:
256
+ try:
257
+ loop = asyncio.get_event_loop()
258
+ except RuntimeError:
259
+ loop = asyncio.new_event_loop()
245
260
  headless = False
246
261
  binary_location = None
247
262
  if "browser_executable_path" in kwargs:
248
263
  binary_location = kwargs["browser_executable_path"]
249
- if shared_utils.is_chrome_130_or_newer(binary_location):
264
+ if (
265
+ shared_utils.is_chrome_130_or_newer(binary_location)
266
+ and "user_data_dir" in kwargs
267
+ and kwargs["user_data_dir"]
268
+ ):
250
269
  if "headless" in kwargs:
251
270
  headless = kwargs["headless"]
252
271
  decoy_args = kwargs
@@ -896,6 +896,10 @@ class Tab(Connection):
896
896
  """
897
897
  return await self.set_window_state(left, top, width, height)
898
898
 
899
+ async def set_window_rect(self, left=0, top=0, width=1280, height=1024):
900
+ """Same as set_window_size(). Uses a different naming convention."""
901
+ return await self.set_window_state(left, top, width, height)
902
+
899
903
  async def activate(self):
900
904
  """Active this target (Eg: tab, window, page)"""
901
905
  await self.send(cdp.target.activate_target(self.target.target_id))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: seleniumbase
3
- Version: 4.34.7
3
+ Version: 4.34.9
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=a2SoHkz6n8erxVZsDwi5dbqUIYmriCG_deZpTT4m-hk,46
6
+ seleniumbase/__version__.py,sha256=lYiyjOWgbGT6PKF2swCq_LRy9Qn2s4pgHJi1iNo8Ot4,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=qQF85LoohJBfrPK5ZcPi50v-pWtOrC9qcN1B3Ki_3tY,59401
@@ -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=s14LkLpCPmyeD4Wvt2i5ua3aP1qQv71_A-NqEr6t2Ag,233856
39
+ seleniumbase/core/browser_launcher.py,sha256=L7pvPQDMoQ8Mh0rrv3xvVxqsaeavdNp9IShfHpn6DP0,234824
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=fXq6gHebFPY1YO2sAQ9y4_F_Brv0yYbprmNlC9qil-U,76172
53
+ seleniumbase/core/sb_cdp.py,sha256=R4EkU-2BaJZetebW4zYgYHp945LGmuNvHjVrKebA2wA,76378
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=FujnBdiBgMSRdznydNCwD7-CYP3xL8FDit7w17WXmoE,720999
68
+ seleniumbase/fixtures/base_case.py,sha256=7fRj9u0zlOwsHpvyG5Oob7yXXWu8kt3sPAAAk4ZBfi8,721002
69
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
@@ -106,7 +106,7 @@ seleniumbase/translate/portuguese.py,sha256=x3P4qxp56UiI41GoaL7JbUvFRYsgXU1EKjTg
106
106
  seleniumbase/translate/russian.py,sha256=TyN9n0b4GRWDEYnHRGw1rfNAscdDmP3F3Y3aySM3C7s,27978
107
107
  seleniumbase/translate/spanish.py,sha256=hh3xgW1Pq122SHYVvJAxFaXhFrjniOVncVbJbfWqOUM,25528
108
108
  seleniumbase/translate/translator.py,sha256=wPhZH6e5NhmebYL1kP2eGxUcVy1gfTb6XCH8ATEPpxE,49238
109
- seleniumbase/undetected/__init__.py,sha256=BceRx0ZcKi9ghI3fRHZP3fRJC39uYUEgC7VGbAWsq6k,23652
109
+ seleniumbase/undetected/__init__.py,sha256=j_5aK0cQrOiPAa8zKKB6bRnOHWb8HD1r-YcVsoGgPYA,24016
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
@@ -116,11 +116,11 @@ seleniumbase/undetected/webelement.py,sha256=_s6evgUkdWJpwOnzX4qR9i796PoVbz3txlz
116
116
  seleniumbase/undetected/cdp_driver/__init__.py,sha256=c0TjMwPfVFyoqYOJ7PQ-Jln_L_dpN3ebHyaD-juQoM0,64
117
117
  seleniumbase/undetected/cdp_driver/_contradict.py,sha256=lP4b0h5quAy573ETn_TBbYV889cL1AuPLVInpJ0ZkiU,3183
118
118
  seleniumbase/undetected/cdp_driver/browser.py,sha256=quD0e2aoehXQrs9zxGsobF0kZY11gmJ58Q_JQhheQYg,30144
119
- seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=X7bd5qt-kegTiOEcsoLUHrAJ5YTruEub-9oL4TBDTYk,16886
119
+ seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=XXpl1tGtbtR5U60Gzq8Lv7pcgpV3un-FLsmGw9lhSnU,17354
120
120
  seleniumbase/undetected/cdp_driver/config.py,sha256=oHFJ3UH0OmLmEGgG5S6SZwbyBs9ZYMsbUJ02QCA7iZc,12044
121
121
  seleniumbase/undetected/cdp_driver/connection.py,sha256=sOTUGjbUqKA2hPvDcRCdqw1VQjVGJs7mbgVvzS7ldtE,23360
122
122
  seleniumbase/undetected/cdp_driver/element.py,sha256=FIC6v7OmumLCT-_vIc3H4oju_oBbaLpWJUJIKm2c_q4,40467
123
- seleniumbase/undetected/cdp_driver/tab.py,sha256=cmSUg9fRnIVYgeqs-t8Tcg1FrSVIrM5IBQmCMzvl4OQ,50678
123
+ seleniumbase/undetected/cdp_driver/tab.py,sha256=rcASsWY_mC7L0wXpFSWM5mtojzA47qG9BWEMXe7ZGF8,50906
124
124
  seleniumbase/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
125
125
  seleniumbase/utilities/selenium_grid/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
126
  seleniumbase/utilities/selenium_grid/download_selenium_server.py,sha256=ZdoInIbhtmdKCIPxxtJHhd2sqotqcNXWMYbwWrkh9O0,1727
@@ -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.34.7.dist-info/LICENSE,sha256=BRblZsX7HyPUjQmYTiyWr_e9tzWvmR3R4SFclM2R3W0,1085
139
- seleniumbase-4.34.7.dist-info/METADATA,sha256=x5gb6DKkZFjMbcI0uWvmI6dLF7aLS7aQlrx4zp_k8C0,86519
140
- seleniumbase-4.34.7.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
141
- seleniumbase-4.34.7.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
- seleniumbase-4.34.7.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
- seleniumbase-4.34.7.dist-info/RECORD,,
138
+ seleniumbase-4.34.9.dist-info/LICENSE,sha256=BRblZsX7HyPUjQmYTiyWr_e9tzWvmR3R4SFclM2R3W0,1085
139
+ seleniumbase-4.34.9.dist-info/METADATA,sha256=clXFKbRCvsQnCh9H60fDWCbyhuR8oTt1VmdGlaoysAE,86519
140
+ seleniumbase-4.34.9.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
141
+ seleniumbase-4.34.9.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
+ seleniumbase-4.34.9.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
+ seleniumbase-4.34.9.dist-info/RECORD,,