@@ -134,6 +134,7 @@ def __initialize_variables(self):
134134 self.__requests_timeout = None
135135 self.__page_source_count = 0
136136 self.__screenshot_count = 0
137+ self.__saved_pdf_count = 0
137138 self.__logs_data_count = 0
138139 self.__last_data_file = None
139140 self.__level_0_visual_f = False
@@ -4492,7 +4493,8 @@ def save_screenshot_to_logs(
44924493 If a provided selector is not found, then takes a full-page screenshot.
44934494 (The last_page / failure screenshot is always "screenshot.png")
44944495 The screenshot will be in PNG format."""
4495- self.wait_for_ready_state_complete()
4496+ if not self.__is_cdp_swap_needed():
4497+ self.wait_for_ready_state_complete()
44964498 test_logpath = os.path.join(self.log_path, self.__get_test_id())
44974499 self.__create_log_path_as_needed(test_logpath)
44984500 if name:
@@ -4510,6 +4512,11 @@ def save_screenshot_to_logs(
45104512 if selector and by:
45114513 selector, by = self.__recalculate_selector(selector, by)
45124514 if page_actions.is_element_present(self.driver, selector, by):
4515+ if self.__is_cdp_swap_needed():
4516+ selector = self.convert_to_css_selector(selector, by=by)
4517+ return self.cdp.save_screenshot(
4518+ name, folder=test_logpath, selector=selector
4519+ )
45134520 return page_actions.save_screenshot(
45144521 self.driver, name, test_logpath, selector, by
45154522 )
@@ -4523,8 +4530,49 @@ def save_screenshot_to_logs(
45234530 action = ["ss_tl", "", origin, time_stamp]
45244531 self.__extra_actions.append(action)
45254532 sb_config._has_logs = True
4533+ if self.__is_cdp_swap_needed():
4534+ return self.cdp.save_screenshot(name, folder=test_logpath)
45264535 return page_actions.save_screenshot(self.driver, name, test_logpath)
45274536
4537+ def save_as_pdf(self, name, folder=None):
4538+ """Same as self.print_to_pdf()"""
4539+ return self.print_to_pdf(name, folder=folder)
4540+
4541+ def save_as_pdf_to_logs(self, name=None):
4542+ """Saves the page as a PDF to the "latest_logs/" folder.
4543+ Naming is automatic:
4544+ If NO NAME provided: "_1_PDF.pdf", "_2_PDF.pdf", etc.
4545+ If NAME IS provided, then: "_1_name.pdf", "_2_name.pdf", etc."""
4546+ if not self.__is_cdp_swap_needed():
4547+ self.wait_for_ready_state_complete()
4548+ test_logpath = os.path.join(self.log_path, self.__get_test_id())
4549+ self.__create_log_path_as_needed(test_logpath)
4550+ if name:
4551+ name = str(name)
4552+ self.__saved_pdf_count += 1
4553+ if not name or len(name) == 0:
4554+ name = "_%s_PDF.pdf" % self.__saved_pdf_count
4555+ else:
4556+ pre_name = "_%s_" % self.__saved_pdf_count
4557+ if len(name) >= 4 and name[-4:].lower() == ".pdf":
4558+ name = name[:-4]
4559+ if len(name) == 0:
4560+ name = "PDF"
4561+ name = "%s%s.pdf" % (pre_name, name)
4562+ if self.recorder_mode:
4563+ url = self.get_current_url()
4564+ if url and len(url) > 0:
4565+ if ("http:") in url or ("https:") in url or ("file:") in url:
4566+ if self.get_session_storage_item("pause_recorder") == "no":
4567+ time_stamp = self.execute_script("return Date.now();")
4568+ origin = self.get_origin()
4569+ action = ["pdftl", "", origin, time_stamp]
4570+ self.__extra_actions.append(action)
4571+ sb_config._has_logs = True
4572+ if self.__is_cdp_swap_needed():
4573+ return self.cdp.print_to_pdf(name, folder=test_logpath)
4574+ return self.print_to_pdf(name, test_logpath)
4575+
45284576 def save_page_source_to_logs(self, name=None):
45294577 """Saves the page HTML to the "latest_logs/" folder.
45304578 Naming is automatic:
@@ -5517,6 +5565,7 @@ def __process_recorded_actions(self):
55175565 ext_actions.append("s_scr")
55185566 ext_actions.append("ss_tf")
55195567 ext_actions.append("ss_tl")
5568+ ext_actions.append("pdftl")
55205569 ext_actions.append("spstl")
55215570 ext_actions.append("da_el")
55225571 ext_actions.append("da_ep")
0 commit comments