Skip to content

Commit 8f3c398

Browse files
committed
Add save_screenshot()
1 parent a9abc49 commit 8f3c398

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

seleniumbase/fixtures/base_case.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,9 @@ def wait_for_and_dismiss_alert(self, timeout=settings.LARGE_TIMEOUT):
214214
def wait_for_and_switch_to_alert(self, timeout=settings.LARGE_TIMEOUT):
215215
return page_actions.wait_for_and_switch_to_alert(self.driver, timeout)
216216

217+
def save_screenshot(self, name, folder=None):
218+
return page_actions.save_screenshot(self.driver, name, folder)
219+
217220
# PyTest-Specific Code #
218221

219222
def setUp(self):

seleniumbase/fixtures/page_actions.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
By.PARTIAL_LINK_TEXT
2020
"""
2121

22+
import os
2223
import time
2324
from seleniumbase.config import settings
2425
from selenium.webdriver.common.by import By
@@ -276,6 +277,22 @@ def find_visible_elements(driver, selector, by=By.CSS_SELECTOR):
276277
return [element for element in elements if element.is_displayed()]
277278

278279

280+
def save_screenshot(driver, name, folder=None):
281+
"""
282+
Saves a screenshot to the current directory (or to a subfolder if provided)
283+
If the folder provided doesn't exist, it will get created.
284+
"""
285+
if folder:
286+
abs_path = os.path.abspath('.')
287+
file_path = abs_path + "/%s" % folder
288+
if not os.path.exists(file_path):
289+
os.makedirs(file_path)
290+
screenshot_file = "%s/%s" % (file_path, name)
291+
else:
292+
screenshot_file = name
293+
driver.get_screenshot_as_file(screenshot_file)
294+
295+
279296
def wait_for_ready_state_complete(driver, timeout=settings.EXTREME_TIMEOUT):
280297
"""
281298
The DOM (Document Object Model) has a property called "readyState".

0 commit comments

Comments
 (0)