Short answer: SeleniumLibrary’s Capture Page Screenshot is the normal starting point, but it usually captures only the visible browser viewport. To save the whole document as one image, use a browser/driver full-page command when your driver supports one. Otherwise, measure the document, resize the window for a single capture, or capture overlapping scroll segments and stitch them. Always wait for dynamic content and restore the original window size.
What Robot Framework captures by default
SeleniumLibrary documents Capture Page Screenshot as taking a screenshot of the current page and embedding it into the log file. With an optional filename, it writes to the configured screenshot directory (or the Robot Framework log directory by default) and returns the path. In ordinary use, the result is a viewport screenshot, not a guaranteed image of every pixel in the document.
That distinction explains why a long page can appear to be missing its lower sections. A failure screenshot may show exactly what the browser viewport contained at the instant of failure. Full-document coverage depends on the browser driver and on how you implement the capture.
Prepare a repeatable SeleniumLibrary test
Set an explicit output directory, use indexed names, and wait for the page’s meaningful content before measuring or capturing it.
Recommended Free Tools
#1 Best Overall
- BUILD, CODE & DRIVE YOUR OWN ROBOT CAR: Turn coding, electronics and engineering into a working programmable robot car you can assemble, program and drive; ideal for weekend family projects, STEM classrooms, coding clubs, robotics lessons and maker challenges
- EXPLORE FPV, LINE TRACKING & OBSTACLE AVOIDANCE: Control the robot with the ELEGOO app or IR remote, view live FPV video through the onboard camera, follow black lines, avoid obstacles with the ultrasonic sensor and explore multiple interactive driving modes
- BEGINNER-FRIENDLY BUILD WITH GUIDED WIRING: Keyed XH2.54 connectors help reduce wiring mistakes, while the illustrated tutorial and example programs guide beginners step by step from chassis assembly and module connection to programming and the first successful run
- GO BEYOND ASSEMBLY WITH CREATIVE CODING: Program with Arduino IDE to explore movement, sensors and control logic, then modify example code to create custom routes, reactions and robotics experiments that develop coding, problem-solving and engineering skills
- COMPLETE RECHARGEABLE STEM ROBOTICS KIT: Includes an ELEGOO UNO R3 controller board, ESP32-WROVER-based camera and Wi-Fi module, line-tracking and ultrasonic sensors, motors, IR remote and a 2000 mAh rechargeable lithium-ion battery; recommended for ages 8+ with adult guidance for first-time builders
*** Settings ***
Library SeleniumLibrary
*** Variables ***
${URL} https://example.com
*** Test Cases ***
Capture viewport evidence
Open Browser ${URL} chrome
Set Screenshot Directory ${OUTPUTDIR}/screenshots
Wait Until Page Contains Element css:main 30s
Capture Page Screenshot example-viewport-{index}.png
[Teardown] Close All Browsers
{index} is replaced with an incrementing number, preventing repeated runs from overwriting earlier artifacts. SeleniumLibrary also supports EMBED to place the image in log.html and, in supported versions, BASE64 to return an encoded image while embedding it. Use a stable directory when CI needs to publish the files separately from Robot’s HTML report.
Method 1: use a driver-specific full-page command
Some browser drivers expose a native full-page screenshot operation. This is the most faithful approach when available because the driver performs the capture rather than relying on a window that may be subject to operating-system limits. The exact command and support vary by browser, driver version, and headless mode, so keep this path behind a small custom keyword and verify it on every browser/driver combination in your matrix.
Do not describe Capture Page Screenshot itself as a universal full-page command. If your selected driver has no document-screenshot capability, use the resizing or stitching patterns below.
Method 2: resize to the document dimensions
A practical fallback is to read the document’s total dimensions, enlarge the browser window, capture, and restore the original size. The JavaScript values document.documentElement.scrollWidth and scrollHeight include content outside the current viewport.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →*** Settings ***
Library SeleniumLibrary
*** Test Cases ***
Capture resized full page
Open Browser https://example.com chrome
Set Screenshot Directory ${OUTPUTDIR}/screenshots
Wait Until Page Contains Element css:main 30s
Sleep 1s
${old_width} ${old_height}= Get Window Size
${page_width}= Execute Javascript return Math.max(document.documentElement.scrollWidth, document.body ? document.body.scrollWidth : 0);
${page_height}= Execute Javascript return Math.max(document.documentElement.scrollHeight, document.body ? document.body.scrollHeight : 0);
Set Window Size ${page_width} ${page_height}
Capture Page Screenshot example-full-{index}.png
Set Window Size ${old_width} ${old_height}
[Teardown] Close All Browsers
This is an implementation pattern, not a Selenium guarantee. Window managers and headless drivers can impose maximum dimensions; a very tall page can exceed image-memory limits; and resizing can trigger responsive breakpoints. Record the resulting image dimensions and inspect a representative long page in the same environment used by CI.
Rank #2
- 35+ Guided Electronics Projects: Progress from LEDs and buttons to RFID access, real-time clocks, motion and distance sensing, environmental monitoring, motor control and interactive displays for STEM learning, coding clubs and maker projects
- More I/O and Memory for Larger Builds: The MEGA 2560 R3 provides 54 digital I/O pins, including 15 PWM outputs, 16 analog inputs, 4 hardware serial ports and 256 KB flash for projects that combine more sensors, controls and displays
- 200+ Components for Prototyping: Includes LCD1602, RC522 RFID, RTC, DHT11, HC-SR501 PIR, ultrasonic and water-level sensors, GY-521, MAX7219, keypad, joystick, rotary encoder, relay, SG90 servo, stepper motor, DC motor, breadboard and more
- Learn, Modify and Create: Follow 35+ guided lessons with example code, then adjust sensor thresholds, timing, display text, motor behavior and control logic to turn structured exercises into access systems, monitors, alarms and interactive projects
- Organized for Repeatable Learning: Pre-soldered modules, a solderless breadboard, storage case and small-parts box reduce setup time and keep sensors, LEDs, ICs, wires and other components easy to find between projects
Wait before measuring
Measure only after asynchronous content has settled. Wait for a stable landmark, then account for images, fonts, advertisements, and JavaScript that add height after the initial DOM appears.
- Wait for a page-specific element such as
css:mainor a “loaded” marker. - Use an explicit delay only when the application has no reliable readiness signal.
- For lazy-loaded sections, scroll through the page first so content is requested before taking the final measurement.
- Disable animations or apply test CSS where animation changes layout during capture.
Restore the browser in every outcome
If a later assertion fails while the window is enlarged, subsequent tests can inherit the wrong dimensions. Put restoration in a teardown or a custom keyword with a guaranteed cleanup path. Keep the original width and height, not just a hard-coded default.
Method 3: scroll, capture, and stitch
When a driver cannot create a sufficiently large surface, capture overlapping viewport segments and combine them in a Python keyword. Overlap is important: sticky headers, fractional pixel rounding, and asynchronous layout can otherwise create seams or missing rows.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstall- Read the viewport width and height and the document’s scroll height.
- Scroll to the first position and wait for layout to settle.
- Capture a viewport image.
- Advance by less than one viewport height, retaining an overlap.
- Repeat until the bottom is covered, then stitch the segments in document order.
During the pass, scrolling may trigger lazy images and alter the page height. Re-read the height after the first sweep, or perform a warm-up scroll from top to bottom and back before collecting final segments. Fixed headers should be cropped from subsequent segments or accounted for by the stitching code; otherwise they appear repeatedly. This method is slower and requires image-processing code, but it avoids asking the browser for an impractically tall window.
Choosing between the approaches
| Approach | Document coverage | Driver dependence | Lazy content and sticky headers | CI reproducibility | Typical trade-off |
|---|---|---|---|---|---|
| Native driver full-page command | Potentially the whole document | High; support varies | Still requires page readiness | Good when pinned and tested | Best fidelity where implemented |
| Resize and capture | Whole document when limits allow | Medium | Responsive layout can change; lazy content needs warm-up | Depends on headless window limits | Simple, but very tall pages can fail |
| Scroll and stitch | Whole document after overlap coverage | Low to medium | Needs explicit handling | More moving parts | Works when large surfaces do not |
| Capture Page Screenshot | Normally viewport only | SeleniumLibrary standard keyword | Captures the current state only | High for ordinary evidence | Fastest, but not a full-page solution |
Element and desktop screenshots are different
Capture Element Screenshot targets one located element. SeleniumLibrary warns that element screenshot support is limited by browser-vendor implementation, so it is not a reliable substitute for a whole-document capture.
Robot Framework’s built-in Screenshot library captures the machine desktop. Its documentation requires a physical or virtual display plus a supported operating-system tool or Python module. It is useful for desktop evidence, but it does not guarantee a complete browser document and may include other windows, browser chrome, or the desktop background.
Rank #3
- 🎁Ideal Gift for Kids & Teens: Celebrate child’s growing skills and important milestones with this 5-in-1 Programmable robot set. Whether for birthdays, holidays, or achievements, it’s the perfect gift that encourages learning and hands-on fun—a gift that grows with them
- ✨STEM Educational Toys: The robot set for kids ages 8+ combines the fun of STEM learning. It encourages hands-on learning and early programming as they build, which can spark creativity and imagination and provide hours of screen-free play
- 📱Flexible Dual Control Modes: Control the Robotic kit with the intuitive app (Bluetooth) or remote. Enjoy fun features like basic programming, path, and precise movement, exploring endless interactive play
- 🔄 5-in-1 Buildable with Varying Difficulty: The Robot Kit with Progressive Difficulty! From simple robots to complex models, kids can build a robot, dinosaur, car, tank, and more. Adjustable head, arms, and tail allow for fun, playful poses. Perfect for kids 8-12 to develop skills step by step and ignite creativity
- 🛠️Clear & Detailed Build Instructions: This robot kit includes 488 pieces, with clear, colorful step-by-step instructions to make assembly easy. Kids can build their own robots independently or with family, enjoying quality time together and a confidence-boosting building experience
Full-page failures and fixes
The image stops at the fold
Cause: the standard keyword captured the viewport. Fix: use a native driver command, the resize pattern, or scroll-and-stitch; confirm the output height rather than trusting the filename.
The bottom is blank or missing
Cause: lazy loading or scripts had not completed when dimensions were read. Fix: wait for a stable selector, warm-scroll the page, wait for images or application-specific readiness, then measure again.
Resizing fails or the image is truncated
Cause: operating-system, headless-driver, or image-memory limits. Fix: use a smaller viewport and stitching, or a driver-native full-page operation. Pin browser and driver versions in CI.
Repeated headers or visible seams appear
Cause: fixed or sticky elements are present in every segment, or segments do not overlap. Fix: crop fixed regions in the stitcher, use a consistent scroll position, and retain an overlap between captures.
The page changes after scrolling
Cause: scrolling activated lazy content, ads, animations, or infinite scrolling. Fix: freeze or disable moving components where possible, complete a warm-up pass, and define a stopping condition for infinite pages.
Free tools Windows power users keep installed
One-click scans. No signup required.
Files overwrite one another
Cause: a fixed filename is reused. Fix: set the screenshot directory and use SeleniumLibrary’s {index} replacement or include a unique test identifier.
Rank #4
- 🎁 Ideal Gift for Kids & Teens: This STEM solar robot kit celebrates child’s growing skills and important milestones. Whether for birthdays, holidays, it’s the perfect gift that grows with them and offers screen-free fun
- 📚 STEM Educational Toy: This solar educational toy brings science to life! The fun DIY building experience sparks children's curiosity in engineering and renewable energy, while nurturing their problem-solving skills
- ☀️ Powered by the Sun: Enjoy outdoor play with solar power or switch to a strong artificial light source indoors, such as a flashlight, ensuring uninterrupted play for children. This solar build bot toy encourages kids to have fun while exploring renewable energy
- ⚡ Upgraded Larger Solar Panel: Features a large sun-catching surface to harvest more sunlight and deliver stronger power output. Kids discover renewable energy principles through play - a fun educational toy for ages 8+
- 🤖 12-in-1 Buildable with Increasing Challenge: With 190 parts, kids can build 12 models like robots, cars, and more. From simple beginners to advanced builds, the varying difficulty levels allow it to grow with your child’s skills. Each robot sparks children’s creativity
The desktop library cannot run in CI
Cause: no physical or virtual display or no supported capture dependency. Fix: configure a virtual display for desktop evidence, or use SeleniumLibrary/browser-document capture when only the page is required.
Make captures reliable in headless CI
- Pin the browser and driver versions and use the same viewport and device scale factor on every worker.
- Wait on application state, not an arbitrary “page loaded” event alone.
- Capture after fonts and images settle; otherwise text reflow changes the result.
- Log the URL, viewport, document dimensions, browser version, and capture method beside the artifact.
- Keep a small set of long, lazy-loaded, sticky-header pages as regression fixtures.
- Compare dimensions and key landmarks in addition to performing a visual review.
Or skip the browser setup:
ScreenshotNeo provides a website screenshot API and MCP server. One GET request returns PNG, JPEG, WebP, or PDF. It accepts cookie and consent banners as a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each cleanup step can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and response headers report the page verdict and whether the shot was billed. Its MCP tools—take_screenshot, get_page_info, and capture_pdf—work with Claude, Cursor, and other MCP clients.
The API includes full-page capture with lazy images loaded, CSS-selector element capture, dark mode, device presets or custom viewports, retina scale, PDF paper and page-range controls, custom CSS and JavaScript, clicks before capture, selector/delay/network-idle waits, request and resource blocking, headers, cookies, user-agent and Authorization settings, timezone and geolocation, transparent backgrounds, resizing, selectable cache TTLs, signed image links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, a usage API, and an OpenAPI specification. Common screenshot-API parameter names are accepted to ease migration.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchescurl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo documentation for options and response headers. Equivalent requests:
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
The Free plan includes 1,000 shots per month with no card. Paid plans start at $5 for 3,000 shots; yearly billing provides two months free, and every feature is on every plan. Create a free ScreenshotNeo account.
FAQ
Does a full-page screenshot include content below an iframe?
Not necessarily. Cross-origin or separately rendered content may be controlled by the embedded frame’s browser context. Treat iframe coverage as a separate compatibility case and verify it with the exact driver or API you deploy.
Best Value
- Build your own awesome, wearable mechanical hand that you operate with your own fingers.
- No motors, no batteries — just the power of air pressure, water, and your own hands!
- Hydraulic pistons enable the mechanical fingers to open and close and grip objects with enough force to lift them. Every finger joint can be adjusted to different angles for precision movement.
- Three configurations: right hand, left hand, and claw-like; adjustable to fit virtually any human hand.
- Learn how pneumatic and hydraulic systems are used in industrial robots such as automobile components..2021 The Toy Association's STEAM Toy Of The Year Winner
Should I prefer PNG, JPEG, or WebP for Robot artifacts?
Choose according to your evidence pipeline: lossless PNG preserves text edges, while JPEG or WebP can reduce file size. The Robot keyword’s output is generally determined by the filename and driver support; validate the format produced in your environment.
How can I prove that the capture was really full page?
Record the measured document width and height, the final image dimensions, browser and driver versions, and the capture method. Check landmarks near the top, middle, and bottom rather than relying only on a thumbnail.
Frequently Asked Questions
Does a full-page screenshot include content below an iframe?
Not necessarily. Cross-origin or separately rendered content may be controlled by the embedded frame’s browser context. Treat iframe coverage as a separate compatibility case and verify it with the exact driver or API you deploy.
Should I prefer PNG, JPEG, or WebP for Robot artifacts?
Choose according to your evidence pipeline: lossless PNG preserves text edges, while JPEG or WebP can reduce file size. Validate the format produced by your browser and driver.
How can I prove that the capture was really full page?
Record document and image dimensions, browser and driver versions, and the capture method; then inspect landmarks near the top, middle, and bottom.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

