Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →To capture a mobile-style website screenshot with Selenium, start ChromeDriver with Chrome’s mobileEmulation option, open the page, wait for the content you need, and save a screenshot with your Selenium binding’s WebDriver API. Use a recognized device profile for quick setup or specify your own viewport metrics for repeatable tests. This emulates a mobile browser environment; it does not make a desktop computer equivalent to a physical phone.
Choose a mobile emulation profile
ChromeDriver supports two ways to configure mobile emulation: select a known device profile by name, or provide custom device attributes. The right choice depends on whether you want a quick approximation of a listed device or precise control over the viewport.
Use a predefined device name
A device profile is the quicker option when the profile you need appears in the device list supported by your active ChromeDriver and Chrome versions. That list can differ between versions. If ChromeDriver does not recognize the name, session creation fails with an invalid-device error. Check the current ChromeDriver guide before choosing a name: ChromeDriver mobile emulation.
Set custom device metrics
For a specific viewport or a profile not available by name, define deviceMetrics with a screen width, height, and pixelRatio. Touch and mobile behavior, client hints, and a user-agent value can also affect how the site responds. These settings influence rendering and browser signals, but do not reproduce physical-device hardware or browser UI.
#1 Best Overall
- 【Strong Adsorption】The inspiration of the silicone phone suction case comes from the adhesive force of the octopus. Each suction cup phone mount is 3.15 inches long and 2.17 inches wide, with 24 independent suction cups providing a stronger and more stable suction force, so you don't have to worry about your phone falling during use.
- 【Back of Phone Suction Grip】Remove the adhesive film on the phone suction cup and stick it on the phone case. You can then fix the phone on any smooth surface, which is very convenient. (The phone suction cup cannot be removed and reused after being attached to the phone case. It is recommended to attach it to a regular phone case, not a valuable one.)
- 【Widely Used】Our non-slip silicone phone sticky grip mount attaches to almost any flat phone case and make it compatible with common mobile phones such as iPhone and Android.You can shoot, watch videos or video calls in the kitchen, gym, dance studio, bathroom and other places.
- 【Capture the Wonderful Picture】Whether you are a TikTok creator or just like to share videos and photos, this phone suction cup can help you hands-free capture wonderful videos and photos for sharing with friends.
- 【Note】You can fix the phone suction cup on a smooth surface such as a mirror or glass. If necessary, wipe the suction cup with a damp cloth to obtain stronger suction. Before releasing your hand, make sure the phone is firmly fixed. (Not applicable to rough walls, wooden surfaces, and other uneven surfaces)
Client hints can describe the platform and whether the browser should request mobile or desktop resources. ChromeDriver can infer user-agent information from client hints on supported listed platforms. Inferring client hints from an older user-agent string is unreliable because that string format is ambiguous. Set the values deliberately when the site’s behavior depends on them, and record them with the test.
Configure ChromeDriver and capture a screenshot
The following Python example uses Selenium’s Chrome options with custom metrics, then saves a screenshot of the current viewport. Install Selenium and ensure a compatible Chrome browser and ChromeDriver setup are available in your environment. The exact driver setup depends on your Selenium release and how your project manages browser drivers.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
options = Options()
options.add_experimental_option("mobileEmulation", {
"deviceMetrics": {
"width": 390,
"height": 844,
"pixelRatio": 3.0
},
"mobile": True,
"touch": True
})
driver = webdriver.Chrome(options=options)
try:
driver.get("https://example.com")
# Replace this with a selector that indicates the page state you need.
WebDriverWait(driver, 20).until(
lambda d: d.find_element("css selector", "body").is_displayed()
)
driver.save_screenshot("mobile-viewport.png")
finally:
driver.quit()
The sample waits for the body element to be displayed, but that is only a basic readiness check. For a client-rendered page, wait for a meaningful element or state specific to the content you want to capture; a generic page-load event does not guarantee that asynchronous content is ready.
Capture a named device profile instead
Replace the custom metrics object with a profile name recognized by the ChromeDriver/Chrome combination in use:
Rank #2
- SUPERIOR COMFORT — Unlike traditional circular ear buds, the design of EarPods is defined by the geometry of the ear. Which makes them more comfortable for more people than any other ear bud–style headphones.
- HIGH-QUALITY AUDIO — The speakers inside EarPods have been engineered to maximize sound output and minimize sound loss, which means you get high-quality audio.
- BUILT-IN REMOTE — EarPods with USB-C plug also include a built-in remote that lets you adjust the volume, control the playback of music and video, and answer or end calls with a pinch of the cord.
- COMPATIBILITY — Works with all devices that have a USB-C port.
- INTEGRATED MICROPHONE — A built-in microphone precisely captures your voice while you’re on the phone, taking a FaceTime call, or summoning Siri — so you’re always heard loud and clear.
options.add_experimental_option("mobileEmulation", {
"deviceName": "KNOWN_DEVICE_NAME"
})
Use the exact device name from the supported list for that version. Do not assume a name works across all browser and driver releases.
Use your binding’s documented APIs
Selenium screenshot method names and signatures vary by language binding. The JavaScript Chromium Options API, for example, exposes setMobileEmulation for a predefined device name or custom screen metrics; passing null disables emulation. Consult the API reference for the binding and release used by your project rather than transferring a method signature from another language: Selenium JavaScript Chromium Options.
Choose viewport or full-page capture
A standard WebDriver screenshot generally captures the current browser view according to the semantics of the binding and browser in use. Decide whether you need that viewport or an image of the full document, and verify the behavior documented for your specific Selenium binding. Do not assume that a viewport screenshot automatically includes content below the fold.
For Chrome-specific lower-level control, the Chrome DevTools Protocol Page domain documents Page.captureScreenshot, along with commands to override or clear device metrics. The protocol documentation is live and labeled tot; verify the command support and behavior against your Chrome version: Chrome DevTools Protocol: Page.
Rank #3
- Secure Hold: Our PopSockets adhesive phone grip gives your cell phone a secure, comfortable hold in hand to help prevent drops while texting, taking photos, or scrolling on the go. Designed to stick firmly to most phone cases and devices.
- Hands-Free Made Easy: Easily turn your PopSocket into a phone stand to prop up your phone anywhere, perfect for watching videos, video calls, or following recipes. A must-have phone holder that keeps your device secure and ready for anything.
- Compatibility: Works with all phones, tablets, and Kindles. Sticks best to smooth, hard plastic cases and may not adhere to silicone or textured cases. Easily swap your PopTop to change up your style.
- Black PopSockets: Simple, refined, and endlessly versatile. A timeless essential for any phone.
- Travel Must-Have for People On the Go: A must-have travel accessory for flights, flying, airports, air travel, airplanes, planes, international trips, cruises, and long travel days. Key gadget for your airport haul, travel accessories and must-haves.
Make captures reproducible
- Choose and record the profile. Note the device name or the width, height, pixel ratio, and any touch, mobile, client-hint, or user-agent settings.
- Set emulation before creating the session. Configure Chrome options before starting ChromeDriver; the Selenium JavaScript API also documents a way to disable emulation by passing
null. - Wait for the state under test. Use an explicit wait for the element, application state, or content that should be visible in the image.
- Save and label the artifact. Record Chrome, ChromeDriver, Selenium binding and version, viewport settings, and relevant test state alongside the screenshot. These details make later comparisons interpretable.
- Validate on hardware when necessary. If the result depends on actual device characteristics, repeat the check on a physical device.
Understand emulation’s limits
Chrome for Developers describes desktop mobile emulation as helpful but “not a perfect replication of testing on the actual device.” It identifies differences that can matter to a test: mobile GPU behavior, browser UI such as address-bar effects on page height, missing disambiguation popups for nearby touch targets, and unavailable hardware APIs such as some orientation events.
Use emulation for repeatable responsive-layout checks and screenshot automation. Use physical devices when the question involves actual hardware, browser chrome, real touch behavior, or device APIs that emulation does not reproduce. A screenshot from one emulated viewport does not establish that a site works across devices.
ChromeDriver, CDP, and WebDriver BiDi
The mobile-emulation settings and lower-level screenshot commands described here are documented through ChromeDriver and Chrome’s DevTools Protocol, so the guidance is Chrome-specific. Selenium describes WebDriver BiDi as its standards-based, bidirectional direction for cross-browser event streaming over WebSocket. Selenium’s documentation says its CDP functionality is currently limited and that CDP support is temporary while BiDi is implemented. Do not assume the particular mobile emulation or screenshot commands shown here have portable BiDi equivalents in every browser or binding: Selenium WebDriver BiDi.
Troubleshoot common failures
ChromeDriver reports an invalid device
The requested deviceName is not in the device list recognized by the active ChromeDriver/Chrome version. Check the version-specific supported list or switch to custom device metrics.
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 glitchesRank #4
- [360 ° Flexible Rotation Design] Comes with a rotatable lanyard ring that supports 360 ° free rotation, effectively solving the problem of twisted and tangled lanyards
- [Wide compatibility] The ultra-thin 0.02-inch design does not block the charging port at all, and both wired and wireless charging can be used directly without removing the pad. Compatible with most smartphones such as iPhone, compatible with various wristbands, lanyards, crossbody straps, and keychains
- [Durable and Portable Material] Premium rust-resistant stainless steel material with good flexibility, which not only avoids scratching the phone case, but also has excellent anti rust and anti fading performance
- [Multi scenario Practical] Paired with a lanyard or wristband, hands-free use can be achieved. The phone is within reach and not easily dropped, ideal for daily commuting and outdoor activities. Suitable for full coverage phone cases, does not support half coverage phone cases
- [Quality Service] If you find any damage or other issues with the product upon receipt, please contact us immediately. We will handle it quickly
The page still looks like a desktop site
Check that mobileEmulation was configured before the driver session started. If the site uses client hints, platform detection, or user-agent checks, verify the relevant values and whether the page requested mobile resources. Setting viewport dimensions alone does not guarantee mobile-specific server responses.
The screenshot is blank or missing content
The capture may have occurred before client-rendered content appeared. Wait for a specific element or state rather than relying only on navigation completion, then capture again.
The screenshot cuts off content below the fold
You may have captured only the current viewport. Check your binding’s screenshot semantics and use a documented full-page method if the whole document is required. Chrome’s Page domain provides a screenshot command, but its behavior and availability should be checked for the Chrome version in use.
The image does not match a real phone
Emulation does not reproduce all mobile GPU, browser UI, touch-target, or hardware-API behavior. For issues that depend on those characteristics, use a physical device rather than trying to tune viewport values until the desktop result appears identical.
Best Value
- 【PKYAA Double Sided Silicone Suction Phone Case Mount】PKYAA With Double Sided 40 Strong and Reliable individual suction cups, PKYAA provides a thicken and upgraded universal silicon suction mount for your phone.
- 【Friendly to Content Creators】If you are a content creator or an online influencer, you can create videos anywhere with this suction mount completely hands free with this silicone cell phone mount for cases.
- 【HANDS-FREE & Adhere to Mirrors】This Double Sided silicone suction phone case mount allows you to stick your phone to the mirror easily. No longer holding your phone in one hand to watch video tutorials while making up.
- 【Strong Grip on the Smooth Surface】You can easily hang your phone anywhere with a smooth surface. All you do is you clean off your phone and smooth surface. It is STURDY and it not only sticks to mirrors, it also sticks to windows, it sticks to refrigerators, tiles and other clean, flat surfaces.
- 【Press Down Firmly Every 30 Minutes】Use your palm or fingers to press the phone down firmly and check it's secure before letting go. Apply even pressure for a few seconds to allow the suction cup to adhere properly. To maintain the grip and prevent accidental falls, it's a good practice to periodically reapply pressure to the suction cup.
Or skip the browser setup
If your goal is a website screenshot rather than a Selenium test session, ScreenshotNeo is a screenshot API and MCP server. A single GET request can return a PNG, JPEG, WebP, or PDF; its documented API options include viewport and device presets.
curl -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 API documentation for the request options. ScreenshotNeo accepts cookie or consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing status. Its MCP server offers take_screenshot, get_page_info, and capture_pdf for AI agents using Claude, Cursor, or another MCP client. The free plan includes 1,000 screenshots per month without a card; paid plans start at $5 for 3,000 shots.
Sign up for ScreenshotNeo free to get 1,000 screenshots a month with no card.
Frequently Asked Questions
Can I capture mobile screenshots with Selenium without a phone?
Yes. ChromeDriver mobile emulation can produce screenshots at a mobile-style viewport without a physical phone, but it does not reproduce every hardware, browser UI, touch, or device API behavior.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Does Selenium mobile emulation work in every browser?
The configuration and protocol commands in this guide are Chrome-specific. Other browsers and Selenium bindings may expose different capabilities and APIs.
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.

