/selenium_screenshots

python package which helps in creation of many screenshots for selenium.webdriver

Primary LanguagePythonMIT LicenseMIT

selenium_screenshots

GitHub last commit GitHub license<space><space> Documentation Status https://travis-ci.org/stas-prokopiev/selenium_screenshots.svg?branch=master PyPI PyPI - Python Version

selenium_screenshots is a python package that helps to create many screenshots for selenium webdrivers.

from selenium import webdriver
from selenium_screenshots import make_screenshot
# Please define here any webdriver which you would like to use E.G. driver = webdriver.Chrome()
# When you would want to create a screenshot, just call
make_screenshot(driver)
make_screenshot(driver, "some_description")
make_screenshot(driver, "characters_%%forbidden_in_the_..filename")

As the result you will get screenshots in the directory: ./screenshots/...

  • 1.png
  • 2_some_description.png
  • 3_characters___forbidden_in_the___filename.png

If you run this code some other time then you'll get 3 more screenshots:

  • 1.png
  • 2_some_description.png
  • 3_characters___forbidden_in_the___filename.png
  • 4.png
  • 5_some_description.png
  • 6_characters___forbidden_in_the___filename.png

As you can see user shouldn't worry about screenshot's numbers as they will be handled automatically.

pip install selenium_screenshots
from selenium_screenshots import make_screenshot

make_screenshot(
    webdriver,
    str_description="",
    str_path_dir_with_screenshots="screenshots",
)
  1. webdriver:

    The only mandatary argument. Any selenium webdriver which to use for making of screenshot.

  2. str_description="":
    Description of the screenshot to add to the screenshot filename.
    If in the screenshot description will be used symbols forbidden in the filenames they will be replaced on "_".
    If filename of a new screenshot is longer than 50 symbols then it will be cut to 50.
  3. str_path_dir_with_screenshots="screenshots":

    Path to the directory where you want to save a new screenshot

Firstly, you have to define an object of class Screenshots to be able to handle screenshots.
This object will be named screenshots_handler in the code below.
from selenium import webdriver
from selenium_screenshots.main import Screenshots

# Please define here any webdriver which you would like to use E.G. driver = webdriver.Chrome()
screenshots_handler = Screenshots(
        webdriver,
        str_path_dir_with_screenshots="screenshots",
        int_screenshots_to_delete_half=9999,
        int_max_length_of_filename=50,
)
  1. webdriver:

    The only mandatary argument. Any selenium webdriver which to use for making of screenshots.

  2. str_path_dir_with_screenshots="screenshots":

    Path to directory where to save screenshots.

  3. int_screenshots_to_delete_half=9999:

    Number of the screenshots in the directory when try to delete most old half

  4. int_max_length_of_filename=50:
    Max length of a new screenshot filename.
    If filename of a new screenshot is longer then filename will be cut.

This method do exactly the same as selenium_screenshots.make_screenshot(...) in the Basic Usage

screenshots_handler.create_screenshot(str_description="")
  1. str_description="":
    Description of the screenshot to add to the screenshot filename.
    If in the screenshot description is used symbols forbidden in the filenames they will be replaced on "_".
    If filename of a new screenshot is longer than N symbols then it will be cut to N.
This method will delete all screenshots in the directory.
Max used screenshot number won't be lost, so new screenshot will have next number rather than 1.
screenshots_handler.delete_all_screenshots()
This method will delete screenshots with not unique descriptions.
screenshots_handler.delete_not_unique_screenshots(
    is_to_delete_screenshots_without_description=False)
  1. is_to_delete_screenshots_without_description=False:
    Flag if to delete screenshots without description
You can use this python package to make screenshots for every exception
with preserved description of an error in the screenshot filename.
from selenium_screenshots import make_screenshot

try:
    # Some code which you would like to test
except Exception as ex:
    make_screenshot(webdriver, str_description=str(ex))
    raise

This project is licensed under the MIT License.