BoxLang 🚀 A New JVM Dynamic Language Learn More...
A CFML wrapper for the browserless API. Control web browser automation for screenshots, pdf generation, testing, and more.
Feel free to use the issue tracker to report bugs or suggest improvements!
This was quickly put together for a side project. It isn't meant to be comprehensive or complete. Just a starting point, if people are interested in messing around with the browserless.io API via CFML.
This project borrows heavily from the API frameworks built by jcberquist. Thanks to John for all the inspiration!
browserlesscfc
Reference Manualhelpers.screenshot
The following is a quick example of taking a screenshot (the only
method that's currently implemented), using the
screenshot
helper component.
browserless = new path.to.browserlesscfc.browserless( apiKey = 'xxx' );
options = new path.to.browserlesscfc.helpers.screenshot()
.url( "https://blog.mattclemente.com" )
.fullPage( false )
.type( "jpeg" )
.quality( 75 )
.viewportHeight( 940 )
.viewportWidth( 1680 );
flags = {
"--window-size": "1680,940",
"stealth": true
};
jpg = browserless.screenshot( options, flags );
fileWrite('./test.jpg',jpg.data);
writeDump( var='#jpg#', abort='true' );
To get started with the Browserless.io API, you'll need an API Token.
Once you have this, you can provide it to this wrapper manually when
creating the component, as in the Quick Start example above, or via an
environment variable named BROWSERLESS_API_KEY
, which
will get picked up automatically. This latter approach is generally
preferable, as it keeps hardcoded credentials out of your codebase.
screenshot(
required any options, struct flags={} )
Take a screenshot. The parameter options
expects an
instance of the helpers.screenshot
component, but you can
construct the struct/json yourself if you prefer. Additionally, for
flexibility, you can simply pass in a url.
Endpoint docs
helpers.screenshot
The reference manual for all public methods in
helpers/screenshot.cfc
can be found in the
docs
directory, in screenshot.md
.
Unless indicated, all methods are chainable. To better understand how these work, you'll want to read the documentation regarding the /screenshot endpoint as well as the generated Swagger UI for the endpoint.
$
box install browserlesscfc