Bird
Raised Fist0
Selenium Pythontesting~15 mins

Element screenshot in Selenium Python - Build an Automation Script

Choose your learning style10 modes available
Capture screenshot of a specific element on a webpage
Preconditions (2)
Step 1: Open the browser and navigate to 'https://example.com'
Step 2: Locate the element with id 'logo' on the page
Step 3: Capture a screenshot of this element only
Step 4: Save the screenshot as 'logo_element.png' in the current directory
✅ Expected Result: A file named 'logo_element.png' is created containing the screenshot of the element with id 'logo'
Automation Requirements - Selenium with Python
Assertions Needed:
Verify the element with id 'logo' is present before taking screenshot
Verify the screenshot file 'logo_element.png' is created after the test
Best Practices:
Use explicit waits to ensure the element is present and visible before interaction
Use By.ID locator for element identification
Handle exceptions if element is not found
Close the browser after test execution
Automated Solution
Selenium Python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import os

# Initialize WebDriver
with webdriver.Chrome() as driver:
    driver.get('https://example.com')

    # Wait for the element with id 'logo' to be visible
    wait = WebDriverWait(driver, 10)
    element = wait.until(EC.visibility_of_element_located((By.ID, 'logo')))

    # Take screenshot of the element
    screenshot_path = os.path.join(os.getcwd(), 'logo_element.png')
    element.screenshot(screenshot_path)

    # Assert the screenshot file exists
    assert os.path.isfile(screenshot_path), f"Screenshot file {screenshot_path} was not created"

This script uses Selenium WebDriver with Python to automate the task.

First, it opens the Chrome browser and navigates to 'https://example.com'.

It waits explicitly up to 10 seconds for the element with id 'logo' to be visible on the page, ensuring the element is ready for interaction.

Once found, it captures a screenshot of only that element and saves it as 'logo_element.png' in the current working directory.

Finally, it asserts that the screenshot file was created successfully.

The browser is automatically closed after the with block ends.

Common Mistakes - 4 Pitfalls
Using time.sleep() instead of explicit waits
Using a broad or incorrect locator like XPath without necessity
Not checking if the element exists before taking screenshot
Not closing the browser after test execution
Bonus Challenge

Now add data-driven testing to capture screenshots of elements with ids 'logo', 'header', and 'footer' saving each with the respective name.

Show Hint

Practice

(1/5)
1. What does the element.screenshot('file.png') method do in Selenium Python?
easy
A. Captures a screenshot of only the specific web element.
B. Captures a screenshot of the entire browser window.
C. Saves the HTML source of the element to a file.
D. Highlights the element on the page without saving an image.

Solution

  1. Step 1: Understand the method purpose

    The element.screenshot() method captures an image of the specific element, not the whole page.
  2. Step 2: Compare with other screenshot methods

    driver.save_screenshot() captures the full page, but element.screenshot() targets only one element.
  3. Final Answer:

    Captures a screenshot of only the specific web element. -> Option A
  4. Quick Check:

    element.screenshot() = element image capture [OK]
Hint: Remember: element.screenshot saves only that element's image [OK]
Common Mistakes:
  • Confusing element screenshot with full page screenshot
  • Thinking it saves HTML instead of image
  • Using driver.screenshot instead of element.screenshot
2. Which of the following is the correct syntax to save a screenshot of a web element stored in variable button as 'button.png'?
easy
A. driver.screenshot('button.png')
B. button.save_screenshot('button.png')
C. button.screenshot('button.png')
D. button.capture('button.png')

Solution

  1. Step 1: Identify the correct method for element screenshot

    The method to save an element's screenshot is element.screenshot(filename).
  2. Step 2: Check the variable and filename usage

    Since the element is stored in button, calling button.screenshot('button.png') is correct syntax.
  3. Final Answer:

    button.screenshot('button.png') -> Option C
  4. Quick Check:

    element.screenshot(filename) = correct syntax [OK]
Hint: Use element.screenshot('file.png') exactly to save element image [OK]
Common Mistakes:
  • Using driver.screenshot() for element instead of element.screenshot()
  • Using non-existent methods like save_screenshot on element
  • Wrong method name like capture()
3. What will happen if you run this code snippet?
element = driver.find_element(By.ID, 'logo')
element.screenshot('logo.png')
print('Screenshot saved')
medium
A. Saves a screenshot of the whole page and prints confirmation.
B. Saves a screenshot of the element with ID 'logo' and prints confirmation.
C. Throws an error because screenshot method is not valid for elements.
D. Prints 'Screenshot saved' but does not save any image.

Solution

  1. Step 1: Locate element and call screenshot

    The code finds the element with ID 'logo' and calls element.screenshot('logo.png'), which saves the element's image.
  2. Step 2: Confirm output message

    After saving, it prints 'Screenshot saved' confirming the action.
  3. Final Answer:

    Saves a screenshot of the element with ID 'logo' and prints confirmation. -> Option B
  4. Quick Check:

    element.screenshot() saves image + print confirms [OK]
Hint: element.screenshot saves image; print confirms success [OK]
Common Mistakes:
  • Assuming screenshot method is invalid for elements
  • Thinking it saves full page instead of element
  • Ignoring the print statement output
4. You wrote this code but no screenshot file is created. What is the likely error?
element = driver.find_element(By.CLASS_NAME, 'submit-btn')
element.screenshot()
medium
A. File path is invalid but filename is provided.
B. Incorrect locator type used for find_element.
C. screenshot() method does not exist for elements.
D. Missing filename argument in screenshot() method.

Solution

  1. Step 1: Check screenshot method usage

    The screenshot() method requires a filename argument to save the image.
  2. Step 2: Identify missing filename

    Since no filename is given, no file is created, causing the issue.
  3. Final Answer:

    Missing filename argument in screenshot() method. -> Option D
  4. Quick Check:

    screenshot() needs filename to save file [OK]
Hint: Always provide filename in element.screenshot('file.png') [OK]
Common Mistakes:
  • Calling screenshot() without filename argument
  • Assuming locator type is wrong without checking
  • Thinking screenshot() method is invalid for elements
5. You want to verify visually that a specific button is rendered correctly on different browsers by saving its screenshot. Which approach is best to automate this using Selenium Python?
hard
A. Locate the button element and use element.screenshot('button.png') to save its image for comparison.
B. Use driver.save_screenshot('button.png') to capture the whole page and crop manually later.
C. Extract the button's HTML and compare it as text across browsers.
D. Use JavaScript to highlight the button but do not save any image.

Solution

  1. Step 1: Identify the goal - visual verification of a button

    To check how the button looks, capturing its image directly is best.
  2. Step 2: Choose the method that captures only the button

    element.screenshot() saves the button's image exactly, making comparison easy and automated.
  3. Final Answer:

    Locate the button element and use element.screenshot('button.png') to save its image for comparison. -> Option A
  4. Quick Check:

    element.screenshot() = best for visual element checks [OK]
Hint: Use element.screenshot() for focused visual testing [OK]
Common Mistakes:
  • Capturing full page screenshot and cropping manually
  • Comparing HTML text instead of visual appearance
  • Not saving any image for visual verification
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard