Add method for saving test failure data from a browser

This commit is contained in:
Michael Mintz 2016-05-08 17:31:25 -04:00
parent 416bce9f68
commit bc3baa0815
1 changed files with 39 additions and 0 deletions

View File

@ -19,8 +19,11 @@ By.TAG_NAME
By.PARTIAL_LINK_TEXT
"""
import codecs
import os
import sys
import time
import traceback
from seleniumbase.config import settings
from selenium.webdriver.common.by import By
from selenium.webdriver.remote.errorhandler import ElementNotVisibleException
@ -293,6 +296,42 @@ def save_screenshot(driver, name, folder=None):
driver.get_screenshot_as_file(screenshot_file)
def _get_last_page(driver):
try:
last_page = driver.current_url
except Exception:
last_page = '[WARNING! Browser Not Open!]'
if len(last_page) < 5:
last_page = '[WARNING! Browser Not Open!]'
return last_page
def save_test_failure_data(driver, name, browser_type, folder=None):
"""
Saves failure data to the current directory (or to a subfolder if provided)
If the folder provided doesn't exist, it will get created.
"""
if folder:
abs_path = os.path.abspath('.')
file_path = abs_path + "/%s" % folder
if not os.path.exists(file_path):
os.makedirs(file_path)
failure_data_file_path = "%s/%s" % (file_path, name)
else:
failure_data_file_path = name
failure_data_file = codecs.open(failure_data_file_path, "w+", "utf-8")
last_page = _get_last_page(driver)
data_to_save = []
data_to_save.append("Last_Page: %s" % last_page)
data_to_save.append("Browser: %s " % browser_type)
data_to_save.append("Traceback: " + ''.join(
traceback.format_exception(sys.exc_info()[0],
sys.exc_info()[1],
sys.exc_info()[2])))
failure_data_file.writelines("\r\n".join(data_to_save))
failure_data_file.close()
def wait_for_ready_state_complete(driver, timeout=settings.EXTREME_TIMEOUT):
"""
The DOM (Document Object Model) has a property called "readyState".