cromium
Cromium
An simple CDP (Chrome Devtools Protocol) client, made for testing, scraping, screenshot and html to pdf.
Installation
-
Install chromium, on ubuntu:
sudo apt-get install chromium-browseror on mac:
brew install chromium -
Add the dependency to your
shard.yml:dependencies: cromium: github: confact/cromium -
Run
shards install
Usage
require "cromium"
Settings
Default is local chromium executable. Cromium is using Crystal's Process, which looks for chrome in absolute path, path relative to pwd, or in path.
If you want to use a remote address and turn off the process:
Cromium.remote = true
Cromium.endpoint = "https://chrome.browserless.io/sdsdsdfsd"
If you want to run your chromium process on a specific port, instead of default 9222, just set the endpoint, but keep remote as false
Cromium.endpoint = "http://localhost:9000"
API
Browser
-
Cromium.start
will return a browser, that holds the actual process or browser websocket.
-
.new_page
Create a new tab/page to use to browse the internet
Page
-
.goto(string)
navigates to the url
-
.wait_to_page_load (&block)
used after a goto, to wait for the page to render, it load until getting "correct" response from chrome.
-
.screenshot
returns a base64 encoded screenshot of the page
-
.screenshot_to_file(file_name, **params)
saves a screenshot to file, support setting params to send with command, if full_page is true, it will take a screenshot of the whole page, if hide_scrollbars is true, it will hide the scrollbars.
-
.pdf
returns a base64 encoded pdf of the page
-
.pdf_to_file(file_name, **params)
saves a pdf to file, support setting params to send with command, if print_background is true, it will print the background.
-
.html
returns the html of the page
-
.set_content(string)
sets the content of the page
Example
require "cromium"
browser = Cromium.start
page = browser.new_page
page.goto "https://www.google.com"
page.wait_to_page_load do
page.screenshot_to_file "google.png", full_page: true, hide_scrollbars: true
page.pdf_to_file "google.pdf", print_background: true
end
browser.close # do not need to call it though, it will close when code exits
Contributing
- Fork it (https://github.com/confact/cromium/fork)
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
Contributors
- Håkan - creator and maintainer
cromium
- 9
- 0
- 0
- 0
- 0
- about 1 year ago
- February 20, 2024
MIT License
Fri, 24 Oct 2025 13:30:27 GMT