The following example show how easy you could make screenshots with Python Selenium Webdriver.
Precondition
- selenium module installed
Example
# -*- coding: utf-8 -*- import unittest from selenium import webdriver from selenium.common.exceptions import NoSuchElementException from MyLibrary import MyLibrary class Example(unittest.TestCase): """Example class for screen shot""" def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(1) self.driver.get('http://softwaretester.info') def test_something(self): elem_id = 'is_not_there' try: elem = self.driver.find_element_by_id(elem_id) elem.click() except NoSuchElementException: MyLibrary.save_screenshot_picture(self.driver, elem_id) raise def tearDown(self): self.driver.close() if __name__ == '__main__': unittest.main(verbosity=1)
The MyLibrary.py could be used on different places.
# -*- coding: utf-8 -*- import os import datetime import time class MyLibrary(object): """Simple screenshot class""" @staticmethod def get_date_time(): """Return date_time""" dt_format = '%Y%m%d_%H%M%S' return datetime.datetime.fromtimestamp(time.time()).strftime(dt_format) @staticmethod def save_screenshot_picture(driver, file_name): """Make screenshot and save""" date_time = MyLibrary.get_date_time() current_location = os.getcwd() screenshot_folder = current_location + '/screenshot/' if not os.path.exists(screenshot_folder): os.mkdir(screenshot_folder) picture = screenshot_folder + file_name + ' ' + date_time + '.png' driver.save_screenshot(picture)
After running the test you should see the folder “/screenshot” with the picture.