ScreenshotNeo

BlogEngineering

Selenium News and Updates: A Smattering of Selenium 105

A look at Adam Goucher’s July 2012 Selenium roundup: nine links on WebDriver, automation practices, developer tools, and Mac OS X.

By the ScreenshotNeo team4 October 20265 min read

A Smattering of Selenium #105 was a short link roundup by Adam Goucher, published on July 30, 2012. It brought together nine items on WebDriver and Selenium, automation practices, developer resources, and Mac OS X setup. The number 105 is the roundup’s sequence number; it is not a Selenium version.

Goucher noted that the post was delayed because he had the flu. The links and his comments reflect the Selenium community and tooling as he saw them in 2012, not current project status. Read the original post on the Selenium blog.

What the roundup covered

  1. OAuth and API providers. Goucher connected an article about OAuth and API providers with Selenium’s movement toward W3C standardization, as he described it at the time.
  2. WordPress error handling. A critique of error handling in a legacy installation base prompted a comment about how difficult intelligent error handling can be in that context.
  3. Heroku Dev Center requests. Heroku asked readers to suggest articles for its developer documentation.
  4. WebDriver and HTTP status codes. Jim Evans answered why WebDriver did not expose HTTP status codes. Goucher recommended considering a proxy for that sort of inspection.
  5. Finding an unused port. A shell script searched for a valid listening port, which Goucher called potentially useful for Selenium Grid nodes.
  6. Downloading files with Selenium. One article discussed downloading files and why browser automation may be the wrong tool for the download itself. The roundup notes its discussion of checking status codes and using proxies.
  7. BIDPOM and Selenium RC. Goucher reported that BIDPOM had dropped Selenium RC support and speculated that other projects might do the same over the following year. This was a prediction in 2012, not a statement of present-day support.
  8. Objective-C. The roundup linked to an Apple Developer article about the language.
  9. Mountain Lion setup and commands. Two Mac OS X 10.7-era items covered PATH and environment settings and new UNIX commands in Mountain Lion, including caffeinate.

Why the post is useful as a historical snapshot

The links show the range of concerns in a Selenium developer’s reading list at the time: standards, browser automation boundaries, test infrastructure, documentation, language tooling, and workstation setup. Several notes are useful to read as questions rather than timeless answers. For example, the roundup raises the practical question of how to inspect HTTP responses when browser automation does not expose the status information a test needs. Its proxy suggestion belongs to that 2012 discussion; check the documentation for the specific tools and versions in a current project before applying it.

Likewise, the Selenium RC comment records one project’s reported decision and Goucher’s forecast. The original post does not establish what happened afterward or describe current Selenium support. The safest reading is as a dated community update.

If you are researching a historical post, an automated browser can capture the source page for notes or an archive. Selenium is one option when you need browser interaction as part of a larger test. For a one-off screenshot, however, setting up a browser driver may be unnecessary.

DIY browser capture with Selenium (Python)

This runnable example uses Selenium 4 with Chrome. Install Selenium, make Chrome available in the environment, and run the script. Selenium Manager can manage the browser driver in supported Selenium setups.

python -m pip install selenium
from pathlib import Path
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

url = "https://www.selenium.dev/blog/2012/a-smattering-of-selenium-105/"
options = Options()
options.add_argument("--headless=new")
options.add_argument("--window-size=1440,1000")

driver = webdriver.Chrome(options=options)
try:
    driver.get(url)
    driver.save_screenshot("smattering-105.png")
finally:
    driver.quit()

print(Path("smattering-105.png").resolve())

This captures the current rendering of the source URL, not a guaranteed reproduction of its 2012 appearance. For a full-page capture, viewport size alone is not enough: browser screenshot APIs generally capture the current viewport unless you use a full-page technique or a service that supports it. Also consider that dynamic content, consent banners, fonts, and remote assets may change the result.

When browser automation is the right fit

  • Use Selenium when the capture is part of an existing end-to-end test or requires clicks, authentication, or other browser interaction.
  • Set the viewport deliberately so screenshots are comparable between runs.
  • Wait for the content your workflow needs rather than assuming the initial page load includes every image or client-rendered section.
  • Always close the driver in a finally block so failed navigation does not leave browser processes behind.

Or skip the browser setup

For a direct page screenshot, ScreenshotNeo provides a website screenshot API and MCP server. It accepts a URL in one GET request and can return PNG, JPEG, WebP, or PDF. Its capture options include full-page screenshots, selector-based element capture, waits, custom headers, and more. See the ScreenshotNeo API documentation.

curl -G "https://api.screenshotneo.com/v1/shot" \
  -d access_key=YOUR_API_KEY \
  --data-urlencode url=https://www.selenium.dev/blog/2012/a-smattering-of-selenium-105/ \
  -o shot.webp
import requests

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={
        "access_key": "YOUR_API_KEY",
        "url": "https://www.selenium.dev/blog/2012/a-smattering-of-selenium-105/",
    },
    timeout=90,
)
r.raise_for_status()
with open("shot.webp", "wb") as f:
    f.write(r.content)
const q = new URLSearchParams({
  access_key: 'YOUR_API_KEY',
  url: 'https://www.selenium.dev/blog/2012/a-smattering-of-selenium-105/'
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
const bytes = new Uint8Array(await res.arrayBuffer());
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', bytes));

ScreenshotNeo accepts cookie and consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed, and response headers report the page verdict and billing status. Its MCP server lets AI agents use take_screenshot, get_page_info, and capture_pdf. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 screenshots.

Create a free ScreenshotNeo account for 1,000 screenshots a month with no card.

FAQ

Does “105” mean Selenium version 105?

No. It is the edition number of the “Smattering of Selenium” roundup.

When was the post published?

Adam Goucher published it on Monday, July 30, 2012.

Does this roundup tell me what Selenium supports today?

No. Its observations about standardization and Selenium RC are period-specific. Consult current Selenium documentation for current behavior.

Did the post make a technical claim about a current browser driver?

No. It is a link roundup, and its references to tools should be understood in their original historical context.