Skip to content

Commit 8daf349

Browse files
committed
Add methods for saving data to the logs
1 parent 3a08471 commit 8daf349

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed

help_docs/method_summary.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,10 @@ self.save_screenshot(name, folder=None, selector=None, by="css selector")
311311

312312
self.save_screenshot_to_logs(name=None, selector=None, by="css selector")
313313

314+
self.save_data_to_logs(data, file_name=None)
315+
316+
self.append_data_to_logs(data, file_name=None)
317+
314318
self.save_page_source(name, folder=None)
315319

316320
self.save_cookies(name="cookies.txt")

seleniumbase/fixtures/base_case.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ def __initialize_variables(self):
128128
self.__start_time_ms = int(time.time() * 1000.0)
129129
self.__requests_timeout = None
130130
self.__screenshot_count = 0
131+
self.__logs_data_count = 0
132+
self.__last_data_file = None
131133
self.__level_0_visual_f = False
132134
self.__will_be_skipped = False
133135
self.__passed_then_skipped = False
@@ -4002,6 +4004,49 @@ def save_screenshot_to_logs(
40024004
sb_config._has_logs = True
40034005
return page_actions.save_screenshot(self.driver, name, test_logpath)
40044006

4007+
def save_data_to_logs(self, data, file_name=None):
4008+
"""Saves data to the "latest_logs/" data folder of the current test.
4009+
If no file_name, file_name becomes: "data_1.txt", "data_2.txt", etc.
4010+
Useful variables for getting the "latest_logs/" or test data folders:
4011+
self.log_path OR self.log_abspath (For the top-level folder)
4012+
self.data_path OR self.data_abspath (Individual test folders)
4013+
If a file_name is given with no extension, adds ".txt" to the end."""
4014+
test_logpath = os.path.join(self.log_path, self.__get_test_id())
4015+
self.__create_log_path_as_needed(test_logpath)
4016+
if file_name:
4017+
file_name = str(file_name)
4018+
if not file_name or len(file_name) == 0:
4019+
self.__logs_data_count += 1
4020+
file_name = "data_%s.txt" % self.__logs_data_count
4021+
elif "." not in file_name:
4022+
file_name = "%s.txt" % file_name
4023+
self.__last_data_file = file_name
4024+
sb_config._has_logs = True
4025+
destination_folder = test_logpath
4026+
page_utils._save_data_as(data, destination_folder, file_name)
4027+
4028+
def append_data_to_logs(self, data, file_name=None):
4029+
"""Saves data to the "latest_logs/" folder of the current test.
4030+
If no file_name, file_name becomes the last data file used in
4031+
save_data_to_logs() or append_data_to_logs().
4032+
If neither method was called before, creates "data_1.txt"."""
4033+
test_logpath = os.path.join(self.log_path, self.__get_test_id())
4034+
self.__create_log_path_as_needed(test_logpath)
4035+
if file_name:
4036+
file_name = str(file_name)
4037+
if (not file_name or len(file_name) == 0) and self.__last_data_file:
4038+
file_name = self.__last_data_file
4039+
elif not file_name or len(file_name) == 0:
4040+
if self.__logs_data_count == 0:
4041+
self.__logs_data_count += 1
4042+
file_name = "data_%s.txt" % self.__logs_data_count
4043+
elif "." not in file_name:
4044+
file_name = "%s.txt" % file_name
4045+
self.__last_data_file = file_name
4046+
sb_config._has_logs = True
4047+
destination_folder = test_logpath
4048+
page_utils._append_data_to_file(data, destination_folder, file_name)
4049+
40054050
def save_page_source(self, name, folder=None):
40064051
"""Saves the page HTML to the current directory (or given subfolder).
40074052
If the folder specified doesn't exist, it will get created.
@@ -14389,6 +14434,7 @@ def __process_dashboard(self, has_exception, init=False):
1438914434
has_exception
1439014435
or self.save_screenshot_after_test
1439114436
or self.__screenshot_count > 0
14437+
or self.__logs_data_count > 0
1439214438
or self.__level_0_visual_f
1439314439
or self.__will_be_skipped
1439414440
):

0 commit comments

Comments
 (0)