Hacker News new | ask | show | jobs
by teamhappy 3017 days ago
Right click -> Take a Screenshot
3 comments

Also, there are three dots next to the address bar, where it can be found.
If you open that menu with the three dots, then control-click on the Screenshots menu item, you can add a Screenshot button to the address bar.
Is there a way to trigger a full screen screenshot via Selenium/WebDriver? (not a partial/window screenshot - that I can do)
Firefox has a screenshot feature that I'd like to trigger from Selenium, which is by going through the "..." icon in the URL bar which opens up a menu with its last item being "Take a screenshot" (and then you can select a full page screenshot).

Is there a way to programmatically trigger this feature or sequence?

If I'm understanding correctly, could you just select the body tag and screenshot that? In Selenium Python that'd be:

    # driver is a Firefox driver
    body = driver.find_element_by_tag_name('body')
    screenshot = body.screenshot_as_base64 # png bytes
Just tried this - doesn't seem to work:

- a lot of (visible) elements are missing

- the screenshot is still cropped to whatever viewport is used

Definitely just speculating here, but there is a `driver.save_screenshot(path)` method that would probably be worth trying.

This worked for me:

    from selenium.webdriver import Firefox
    from selenium.webdriver.firefox.options import Options

    geckodriver_path = '/usr/local/bin/geckodriver'
    options = Options()
    options.add_argument('-headless')
    driver = Firefox(executable_path=geckodriver_path, firefox_options=options)

    url='https://news.ycombinator.com/item?id=16576015'
    driver.get(url)
    driver.save_screenshot('./hn.png')