Skip to content

Commit 1a6a2ba

Browse files
committed
Initial commit of screenshot return base64 string
1 parent f9e9792 commit 1a6a2ba

File tree

1 file changed

+24
-16
lines changed

1 file changed

+24
-16
lines changed

src/SeleniumLibrary/keywords/screenshot.py

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
DEFAULT_FILENAME_PAGE = "selenium-screenshot-{index}.png"
2828
DEFAULT_FILENAME_ELEMENT = "selenium-element-screenshot-{index}.png"
2929
EMBED = "EMBED"
30+
BASE64 = "BASE64"
31+
EMBEDDED_OPTIONS = [EMBED, BASE64]
3032
DEFAULT_FILENAME_PDF = "selenium-page-{index}.pdf"
3133

3234

@@ -111,8 +113,9 @@ def capture_page_screenshot(self, filename: str = DEFAULT_FILENAME_PAGE) -> str:
111113
if not self.drivers.current:
112114
self.info("Cannot capture screenshot because no browser is open.")
113115
return
114-
if self._decide_embedded(filename):
115-
return self._capture_page_screen_to_log()
116+
is_embedded, method = self._decide_embedded(filename)
117+
if is_embedded:
118+
return self._capture_page_screen_to_log(method)
116119
return self._capture_page_screenshot_to_file(filename)
117120

118121
def _capture_page_screenshot_to_file(self, filename):
@@ -123,9 +126,11 @@ def _capture_page_screenshot_to_file(self, filename):
123126
self._embed_to_log_as_file(path, 800)
124127
return path
125128

126-
def _capture_page_screen_to_log(self):
129+
def _capture_page_screen_to_log(self, return_val):
127130
screenshot_as_base64 = self.driver.get_screenshot_as_base64()
128-
self._embed_to_log_as_base64(screenshot_as_base64, 800)
131+
base64_str = self._embed_to_log_as_base64(screenshot_as_base64, 800)
132+
if return_val == BASE64:
133+
return_val base64_str
129134
return EMBED
130135

131136
@keyword
@@ -159,8 +164,9 @@ def capture_element_screenshot(
159164
)
160165
return
161166
element = self.find_element(locator, required=True)
162-
if self._decide_embedded(filename):
163-
return self._capture_element_screen_to_log(element)
167+
is_embedded, method = self._decide_embedded(filename)
168+
if is_embedded:
169+
return self._capture_element_screen_to_log(element, method)
164170
return self._capture_element_screenshot_to_file(element, filename)
165171

166172
def _capture_element_screenshot_to_file(self, element, filename):
@@ -171,8 +177,10 @@ def _capture_element_screenshot_to_file(self, element, filename):
171177
self._embed_to_log_as_file(path, 400)
172178
return path
173179

174-
def _capture_element_screen_to_log(self, element):
175-
self._embed_to_log_as_base64(element.screenshot_as_base64, 400)
180+
def _capture_element_screen_to_log(self, element, return_val):
181+
base64_str = self._embed_to_log_as_base64(element.screenshot_as_base64, 400)
182+
if return_val == BASE64:
183+
return base64_str
176184
return EMBED
177185

178186
@property
@@ -184,20 +192,20 @@ def _screenshot_root_directory(self, value):
184192
self.ctx.screenshot_root_directory = value
185193

186194
def _decide_embedded(self, filename):
187-
filename = filename.lower()
195+
filename = filename.upper()
188196
if (
189197
filename == DEFAULT_FILENAME_PAGE
190-
and self._screenshot_root_directory == EMBED
198+
and self._screenshot_root_directory in EMBEDDED_OPTIONS
191199
):
192-
return True
200+
return True, self._screenshot_root_directory
193201
if (
194202
filename == DEFAULT_FILENAME_ELEMENT
195-
and self._screenshot_root_directory == EMBED
203+
and self._screenshot_root_directory in EMBEDDED_OPTIONS
196204
):
197-
return True
198-
if filename == EMBED.lower():
199-
return True
200-
return False
205+
return True, self._screenshot_root_directory
206+
if filename in EMBEDDED_OPTIONS:
207+
return True, self._screenshot_root_directory
208+
return False, None
201209

202210
def _get_screenshot_path(self, filename):
203211
if self._screenshot_root_directory != EMBED:

0 commit comments

Comments
 (0)