0
0
Selenium Pythontesting~20 mins

Element-level screenshot in Selenium Python - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Element Screenshot Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this element-level screenshot code?
Consider the following Selenium Python code snippet that takes a screenshot of a specific element on a webpage. What will be the result of running this code?
Selenium Python
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.get('https://example.com')
element = browser.find_element(By.TAG_NAME, 'h1')
element.screenshot('header.png')
browser.quit()
print('Screenshot saved')
AScreenshot saved (and a file named 'header.png' is created with the element's image)
BNo file is created; code runs without error and prints 'Screenshot saved'
CRaises NoSuchElementException because 'h1' tag does not exist
DSyntaxError due to incorrect method usage
Attempts:
2 left
💡 Hint
Remember that element.screenshot() saves the image of the element to the given filename.
locator
intermediate
1:30remaining
Which locator is best to capture an element for screenshot?
You want to take a screenshot of a button with text 'Submit' on a webpage. Which locator is the best choice to find this button uniquely and reliably?
ABy.XPATH, "//button[text()='Submit']" - finds button by exact text
BBy.CLASS_NAME, 'btn' - finds any element with class 'btn'
CBy.TAG_NAME, 'button' - finds the first button element
DBy.CSS_SELECTOR, 'div > button' - finds any button inside a div
Attempts:
2 left
💡 Hint
Choose the locator that uniquely identifies the button by its visible text.
assertion
advanced
1:30remaining
Which assertion correctly verifies the element screenshot file exists after saving?
After taking an element-level screenshot saved as 'element.png', which assertion correctly checks the file was created?
Selenium Python
import os

# Assume element.screenshot('element.png') was called before
Aassert os.path.isfile('element.png') == false
Bassert os.path.exists('element.png') == false
Cassert os.path.isfile('element.png')
Dassert os.path.isdir('element.png')
Attempts:
2 left
💡 Hint
Check if the file exists and is a file, not a directory.
🔧 Debug
advanced
2:00remaining
Why does this element screenshot code raise an error?
This Selenium Python code raises an error. Identify the cause.
Selenium Python
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.get('https://example.com')
element = browser.find_element(By.ID, 'nonexistent')
element.screenshot('elem.png')
browser.quit()
ATimeoutException because page did not load
BNoSuchElementException because element with ID 'nonexistent' does not exist
CTypeError because screenshot method requires a file object, not a string
DWebDriverException due to invalid browser driver
Attempts:
2 left
💡 Hint
Check if the element locator matches any element on the page.
framework
expert
3:00remaining
How to integrate element-level screenshot in pytest for failure debugging?
You want to automatically take a screenshot of a specific element when a pytest test fails. Which pytest fixture setup correctly implements this?
Selenium Python
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By

@pytest.fixture()
def browser():
    driver = webdriver.Chrome()
    yield driver
    driver.quit()

@pytest.hookimpl(tryfirst=True, hookwrapper=True)
def pytest_runtest_makereport(item, call, when):
    # Implementation to capture element screenshot on failure
    outcome = yield
    rep = outcome.get_result()
    if rep.when == 'call' and rep.failed():
        driver = item.funcargs['browser']
        try:
            elem = driver.find_element(By.ID, 'target')
            elem.screenshot('fail_elem.png')
        except Exception:
            pass
AUse pytest.mark.parametrize to pass screenshot filename to tests
BUse pytest.skip to skip tests that fail to capture screenshots
CUse pytest.fixture to capture screenshot after each test regardless of result
DUse pytest_runtest_makereport hook to check test failure and capture element screenshot
Attempts:
2 left
💡 Hint
Look for a hook that runs after each test and can detect failure.