Skip to content

Commit 929da2b

Browse files
committed
Refactor error logging
1 parent b3e4f2f commit 929da2b

File tree

2 files changed

+58
-14
lines changed

2 files changed

+58
-14
lines changed

seleniumbase/core/log_helper.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,14 @@ def log_screenshot(test_logpath, driver, screenshot=None, get=False):
2525
print("WARNING: Unable to get screenshot for failure logs!")
2626

2727

28-
def log_test_failure_data(test, test_logpath, driver, browser):
28+
def log_test_failure_data(test, test_logpath, driver, browser, url=None):
2929
basic_info_name = settings.BASIC_INFO_NAME
3030
basic_file_path = "%s/%s" % (test_logpath, basic_info_name)
3131
log_file = codecs.open(basic_file_path, "w+", "utf-8")
32-
last_page = get_last_page(driver)
32+
if url:
33+
last_page = url
34+
else:
35+
last_page = get_last_page(driver)
3336
data_to_save = []
3437
data_to_save.append("Last Page: %s" % last_page)
3538
data_to_save.append(" Browser: %s" % browser)
@@ -56,13 +59,16 @@ def log_test_failure_data(test, test_logpath, driver, browser):
5659
log_file.close()
5760

5861

59-
def log_page_source(test_logpath, driver):
62+
def log_page_source(test_logpath, driver, source=None):
6063
html_file_name = settings.PAGE_SOURCE_NAME
61-
try:
62-
page_source = driver.page_source
63-
except Exception:
64-
# Since we can't get the page source from here, skip saving it
65-
return
64+
if source:
65+
page_source = source
66+
else:
67+
try:
68+
page_source = driver.page_source
69+
except Exception:
70+
# Since we can't get the page source from here, skip saving it
71+
return
6672
html_file_path = "%s/%s" % (test_logpath, html_file_name)
6773
html_file = codecs.open(html_file_path, "w+", "utf-8")
6874
rendered_source = get_html_source_with_base_href(driver, page_source)

seleniumbase/fixtures/base_case.py

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ def __init__(self, *args, **kwargs):
8080
self.__last_page_load_url = "data:,"
8181
self.__last_page_screenshot = None
8282
self.__last_page_screenshot_png = None
83+
self.__last_page_url = None
84+
self.__last_page_source = None
8385
self.__added_pytest_html_extra = None
8486
self.__delayed_assert_count = 0
8587
self.__delayed_assert_failures = []
@@ -4548,6 +4550,22 @@ def __set_last_page_screenshot(self):
45484550
except Exception:
45494551
pass
45504552

4553+
def __set_last_page_url(self):
4554+
if not self.__last_page_url:
4555+
try:
4556+
self.__last_page_url = log_helper.get_last_page(self.driver)
4557+
except Exception:
4558+
self.__last_page_url = None
4559+
4560+
def __set_last_page_source(self):
4561+
if not self.__last_page_source:
4562+
try:
4563+
self.__last_page_source = (
4564+
log_helper.get_html_source_with_base_href(
4565+
self.driver, self.driver.page_source))
4566+
except Exception:
4567+
self.__last_page_source = None
4568+
45514569
def __insert_test_result(self, state, err):
45524570
data_payload = TestcaseDataPayload()
45534571
data_payload.runtime = int(time.time() * 1000) - self.case_start_time
@@ -4574,6 +4592,8 @@ def __add_pytest_html_extra(self):
45744592
if self.with_selenium:
45754593
if not self.__last_page_screenshot:
45764594
self.__set_last_page_screenshot()
4595+
self.__set_last_page_url()
4596+
self.__set_last_page_source()
45774597
if self.report_on:
45784598
extra_url = {}
45794599
extra_url['name'] = 'URL'
@@ -4655,6 +4675,8 @@ def save_teardown_screenshot(self):
46554675
test_logpath = self.log_path + "/" + test_id
46564676
self.__create_log_path_as_needed(test_logpath)
46574677
self.__set_last_page_screenshot()
4678+
self.__set_last_page_url()
4679+
self.__set_last_page_source()
46584680
if self.is_pytest:
46594681
self.__add_pytest_html_extra()
46604682

@@ -4715,6 +4737,8 @@ def tearDown(self):
47154737
self.__create_log_path_as_needed(test_logpath)
47164738
if not self.__last_page_screenshot_png:
47174739
self.__set_last_page_screenshot()
4740+
self.__set_last_page_url()
4741+
self.__set_last_page_source()
47184742
log_helper.log_screenshot(
47194743
test_logpath,
47204744
self.driver,
@@ -4729,27 +4753,35 @@ def tearDown(self):
47294753
# Log everything if nothing specified (if testing_base)
47304754
if not self.__last_page_screenshot_png:
47314755
self.__set_last_page_screenshot()
4756+
self.__set_last_page_url()
4757+
self.__set_last_page_source()
47324758
log_helper.log_screenshot(
47334759
test_logpath,
47344760
self.driver,
47354761
self.__last_page_screenshot_png)
47364762
log_helper.log_test_failure_data(
4737-
self, test_logpath, self.driver, self.browser)
4738-
log_helper.log_page_source(test_logpath, self.driver)
4763+
self, test_logpath, self.driver, self.browser,
4764+
self.__last_page_url)
4765+
log_helper.log_page_source(
4766+
test_logpath, self.driver, self.__last_page_source)
47394767
else:
47404768
if self.with_screen_shots:
47414769
if not self.__last_page_screenshot_png:
47424770
self.__set_last_page_screenshot()
4771+
self.__set_last_page_url()
4772+
self.__set_last_page_source()
47434773
log_helper.log_screenshot(
47444774
test_logpath,
47454775
self.driver,
47464776
self.__last_page_screenshot_png)
47474777
if self.with_basic_test_info:
47484778
log_helper.log_test_failure_data(
4749-
self, test_logpath, self.driver, self.browser)
4779+
self, test_logpath, self.driver, self.browser,
4780+
self.__last_page_url)
47504781
if self.with_page_source:
47514782
log_helper.log_page_source(
4752-
test_logpath, self.driver)
4783+
test_logpath, self.driver,
4784+
self.__last_page_source)
47534785
# (Pytest) Finally close all open browser windows
47544786
self.__quit_all_drivers()
47554787
if self.headless:
@@ -4801,21 +4833,27 @@ def tearDown(self):
48014833
test_logpath = self.log_path + "/" + test_id
48024834
self.__create_log_path_as_needed(test_logpath)
48034835
log_helper.log_test_failure_data(
4804-
self, test_logpath, self.driver, self.browser)
4836+
self, test_logpath, self.driver, self.browser,
4837+
self.__last_page_url)
48054838
if len(self._drivers_list) > 0:
48064839
if not self.__last_page_screenshot_png:
48074840
self.__set_last_page_screenshot()
4841+
self.__set_last_page_url()
4842+
self.__set_last_page_source()
48084843
log_helper.log_screenshot(
48094844
test_logpath,
48104845
self.driver,
48114846
self.__last_page_screenshot_png)
4812-
log_helper.log_page_source(test_logpath, self.driver)
4847+
log_helper.log_page_source(
4848+
test_logpath, self.driver, self.__last_page_source)
48134849
elif self.save_screenshot_after_test:
48144850
test_id = self.__get_test_id()
48154851
test_logpath = self.log_path + "/" + test_id
48164852
self.__create_log_path_as_needed(test_logpath)
48174853
if not self.__last_page_screenshot_png:
48184854
self.__set_last_page_screenshot()
4855+
self.__set_last_page_url()
4856+
self.__set_last_page_source()
48194857
log_helper.log_screenshot(
48204858
test_logpath,
48214859
self.driver,

0 commit comments

Comments
 (0)