A Racket library that lets you control Firefox via the Marionette Protocol.
Install marionette:
$ raco pkg install marionette
Run Firefox
with the -marionette
flag:
$ /path/to/firefox -headless -marionette -safe-mode
Run this script:
#lang racket
(require marionette)
(call-with-browser!
(lambda (b)
(call-with-page! b
(lambda (p)
(page-goto! p "https://racket-lang.org")
(call-with-page-screenshot! p
(lambda (data)
(define filename (make-temporary-file "~a.png"))
(with-output-to-file filename
#:exists 'truncate/replace
(lambda ()
(write-bytes data)))
(system* (find-executable-path "open") filename)))))))
To run a headless, marionette-enabled Firefox while you've got another
instance of the browser open, add the -no-remote
flag:
$ /path/to/firefox -no-remote -headless -marionette -safe-mode
It's advisable that you use a separate profile as well:
$ /path/to/firefox -P marionette -no-remote -headless -marionette -safe-mode
You can create new profiles by visiting about:profiles
in the
browser.