@@ -132,6 +132,7 @@ def __initialize_variables(self):
132
132
self.__called_teardown = False
133
133
self.__start_time_ms = int(time.time() * 1000.0)
134
134
self.__requests_timeout = None
135
+ self.__page_source_count = 0
135
136
self.__screenshot_count = 0
136
137
self.__logs_data_count = 0
137
138
self.__last_data_file = None
@@ -4512,6 +4513,40 @@ def save_screenshot_to_logs(
4512
4513
sb_config._has_logs = True
4513
4514
return page_actions.save_screenshot(self.driver, name, test_logpath)
4514
4515
4516
+ def save_page_source_to_logs(self, name=None):
4517
+ """Saves the page HTML to the "latest_logs/" folder.
4518
+ Naming is automatic:
4519
+ If NO NAME provided: "_1_source.html", "_2_source.html", etc.
4520
+ If NAME IS provided, then: "_1_name.html", "_2_name.html", etc.
4521
+ (The last_page / failure page_source is always "page_source.html")"""
4522
+ if not self.__is_cdp_swap_needed():
4523
+ self.wait_for_ready_state_complete()
4524
+ test_logpath = os.path.join(self.log_path, self.__get_test_id())
4525
+ self.__create_log_path_as_needed(test_logpath)
4526
+ if name:
4527
+ name = str(name)
4528
+ self.__page_source_count += 1
4529
+ if not name or len(name) == 0:
4530
+ name = "_%s_source.html" % self.__page_source_count
4531
+ else:
4532
+ pre_name = "_%s_" % self.__page_source_count
4533
+ if len(name) >= 4 and name[-4:].lower() == ".html":
4534
+ name = name[:-4]
4535
+ if len(name) == 0:
4536
+ name = "source"
4537
+ name = "%s%s.html" % (pre_name, name)
4538
+ if self.recorder_mode:
4539
+ url = self.get_current_url()
4540
+ if url and len(url) > 0:
4541
+ if ("http:") in url or ("https:") in url or ("file:") in url:
4542
+ if self.get_session_storage_item("pause_recorder") == "no":
4543
+ time_stamp = self.execute_script("return Date.now();")
4544
+ origin = self.get_origin()
4545
+ action = ["spstl", "", origin, time_stamp]
4546
+ self.__extra_actions.append(action)
4547
+ sb_config._has_logs = True
4548
+ return page_actions.save_page_source(self.driver, name, test_logpath)
4549
+
4515
4550
def save_data_to_logs(self, data, file_name=None):
4516
4551
"""Saves data to the "latest_logs/" data folder of the current test.
4517
4552
If no file_name, file_name becomes: "data_1.txt", "data_2.txt", etc.
@@ -5470,6 +5505,7 @@ def __process_recorded_actions(self):
5470
5505
ext_actions.append("s_scr")
5471
5506
ext_actions.append("ss_tf")
5472
5507
ext_actions.append("ss_tl")
5508
+ ext_actions.append("spstl")
5473
5509
ext_actions.append("da_el")
5474
5510
ext_actions.append("da_ep")
5475
5511
ext_actions.append("da_te")
0 commit comments