@@ -132,6 +132,7 @@ def __initialize_variables(self):
132132 self.__called_teardown = False
133133 self.__start_time_ms = int(time.time() * 1000.0)
134134 self.__requests_timeout = None
135+ self.__page_source_count = 0
135136 self.__screenshot_count = 0
136137 self.__logs_data_count = 0
137138 self.__last_data_file = None
@@ -4512,6 +4513,40 @@ def save_screenshot_to_logs(
45124513 sb_config._has_logs = True
45134514 return page_actions.save_screenshot(self.driver, name, test_logpath)
45144515
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+
45154550 def save_data_to_logs(self, data, file_name=None):
45164551 """Saves data to the "latest_logs/" data folder of the current test.
45174552 If no file_name, file_name becomes: "data_1.txt", "data_2.txt", etc.
@@ -5470,6 +5505,7 @@ def __process_recorded_actions(self):
54705505 ext_actions.append("s_scr")
54715506 ext_actions.append("ss_tf")
54725507 ext_actions.append("ss_tl")
5508+ ext_actions.append("spstl")
54735509 ext_actions.append("da_el")
54745510 ext_actions.append("da_ep")
54755511 ext_actions.append("da_te")
0 commit comments