Skip to content

Commit 4d8641e

Browse files
committed
Optimize logging
1 parent 8692220 commit 4d8641e

File tree

3 files changed

+31
-10
lines changed

3 files changed

+31
-10
lines changed

seleniumbase/core/log_helper.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,29 @@
55
import sys
66
import time
77
from seleniumbase.config import settings
8+
from seleniumbase.fixtures import constants
89

910

1011
def log_screenshot(test_logpath, driver, screenshot=None, get=False):
1112
screenshot_name = settings.SCREENSHOT_NAME
1213
screenshot_path = "%s/%s" % (test_logpath, screenshot_name)
14+
screenshot_warning = constants.Warnings.SCREENSHOT_UNDEFINED
1315
try:
1416
if not screenshot:
1517
element = driver.find_element_by_tag_name('body')
1618
screenshot = element.screenshot_as_base64
17-
with open(screenshot_path, "wb") as file:
18-
file.write(screenshot)
19+
if screenshot != screenshot_warning:
20+
with open(screenshot_path, "wb") as file:
21+
file.write(screenshot)
22+
else:
23+
print("WARNING: %s" % screenshot_warning)
1924
if get:
2025
return screenshot
2126
except Exception:
2227
try:
2328
driver.get_screenshot_as_file(screenshot_path)
2429
except Exception:
25-
print("WARNING: Unable to get screenshot for failure logs!")
30+
print("WARNING: %s" % screenshot_warning)
2631

2732

2833
def get_master_time():
@@ -72,13 +77,15 @@ def log_test_failure_data(test, test_logpath, driver, browser, url=None):
7277
test_id = get_test_id(test)
7378
data_to_save = []
7479
data_to_save.append("%s" % test_id)
75-
data_to_save.append("----------------------------------------------------")
80+
data_to_save.append(
81+
"--------------------------------------------------------------------")
7682
data_to_save.append("Last Page: %s" % last_page)
7783
data_to_save.append(" Browser: %s" % browser)
7884
data_to_save.append("Timestamp: %s" % timestamp)
7985
data_to_save.append(" Date: %s" % the_date)
8086
data_to_save.append(" Time: %s" % the_time)
81-
data_to_save.append("----------------------------------------------------")
87+
data_to_save.append(
88+
"--------------------------------------------------------------------")
8289
if sys.version_info[0] >= 3 and hasattr(test, '_outcome') and (
8390
hasattr(test._outcome, 'errors') and test._outcome.errors):
8491
try:
@@ -128,6 +135,10 @@ def log_page_source(test_logpath, driver, source=None):
128135
except Exception:
129136
# Since we can't get the page source from here, skip saving it
130137
return
138+
if source == constants.Warnings.PAGE_SOURCE_UNDEFINED:
139+
page_source = "<h3>Warning: " + source + (
140+
"</h3>\n<h4>The browser window was either unreachable, "
141+
"unresponsive, or closed prematurely!</h4>")
131142
html_file_path = "%s/%s" % (test_logpath, html_file_name)
132143
html_file = codecs.open(html_file_path, "w+", "utf-8")
133144
rendered_source = get_html_source_with_base_href(driver, page_source)

seleniumbase/fixtures/base_case.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7495,13 +7495,15 @@ def __set_last_page_screenshot(self):
74957495
self.__last_page_screenshot = (
74967496
self.driver.get_screenshot_as_base64())
74977497
except Exception:
7498-
pass
7498+
self.__last_page_screenshot = (
7499+
constants.Warnings.SCREENSHOT_UNDEFINED)
74997500
if not self.__last_page_screenshot_png:
75007501
try:
75017502
self.__last_page_screenshot_png = (
75027503
self.driver.get_screenshot_as_png())
75037504
except Exception:
7504-
pass
7505+
self.__last_page_screenshot_png = (
7506+
constants.Warnings.SCREENSHOT_UNDEFINED)
75057507

75067508
def __set_last_page_url(self):
75077509
if not self.__last_page_url:
@@ -7517,7 +7519,8 @@ def __set_last_page_source(self):
75177519
log_helper.get_html_source_with_base_href(
75187520
self.driver, self.driver.page_source))
75197521
except Exception:
7520-
self.__last_page_source = None
7522+
self.__last_page_source = (
7523+
constants.Warnings.PAGE_SOURCE_UNDEFINED)
75217524

75227525
def __get_exception_info(self):
75237526
exc_message = None
@@ -7585,8 +7588,10 @@ def __add_pytest_html_extra(self):
75857588
extra_image['mime_type'] = 'image/png'
75867589
extra_image['extension'] = 'png'
75877590
self.__added_pytest_html_extra = True
7588-
self._html_report_extra.append(extra_url)
7589-
self._html_report_extra.append(extra_image)
7591+
if self.__last_page_screenshot != (
7592+
constants.Warnings.SCREENSHOT_UNDEFINED):
7593+
self._html_report_extra.append(extra_url)
7594+
self._html_report_extra.append(extra_image)
75907595
except Exception:
75917596
pass
75927597

seleniumbase/fixtures/constants.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ class Values:
5454
SSMD = 900 # Smooth Scroll Minimum Distance (for advanced slow scroll)
5555

5656

57+
class Warnings:
58+
SCREENSHOT_UNDEFINED = "Unable to get screenshot!"
59+
PAGE_SOURCE_UNDEFINED = "Unable to get page source!"
60+
61+
5762
class JQuery:
5863
VER = "3.5.1"
5964
MIN_JS = (

0 commit comments

Comments
 (0)