magic.lambda.puppeteer
The magic.lambda.puppeteer project provides headless Chromium automation slots for Magic using PuppeteerSharp.
It uses an explicit session model: [puppeteer.connect] returns a session_id, and every other slot requires
that session_id. There is no scoped context or .lambda usage.
Thread safety: This library is not thread safe. Do not use the same session_id concurrently across threads.
Sessions use sliding expiration. By default they expire after 15 minutes of inactivity, and are always closed after 2 hours total lifetime. A maximum of 5 concurrent sessions is allowed globally per cloudlet.
[puppeteer.connect]
Launches Chromium, opens a page, and returns a session_id.
Arguments:
headless- Boolean. Launch Chromium in headless mode. Defaults to true.executable- Full path to Chromium/Chrome binary.executable-path- Alias forexecutable.timeout- Launch timeout in milliseconds.user-data-dir- Directory for Chromium user data.args- Additional Chromium arguments. Each child value is one argument string.timeout-minutes- Sliding inactivity timeout in minutes. Defaults to 15.max-lifetime-minutes- Maximum session lifetime in minutes. Defaults to 120.
Examples:
puppeteer.connect
puppeteer.connect
headless:true
executable:"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
timeout:30000
args
.:--no-sandbox
.:--disable-dev-shm-usage
timeout-minutes:30
max-lifetime-minutes:120
[puppeteer.close]
Closes the browser and page associated with a session.
Arguments:
- Slot value - Session identifier returned by [puppeteer.connect].
Examples:
puppeteer.close:SESSION_ID
[puppeteer.goto]
Navigates to a URL.
Arguments:
- Slot value - Session identifier.
url- URL to navigate to.timeout- Navigation timeout in milliseconds.wait-until- One ofload,domcontentloaded,networkidle0,networkidle2.
Examples:
puppeteer.goto:SESSION_ID
url:"https://ainiro.io"
puppeteer.goto:SESSION_ID
url:"https://ainiro.io"
timeout:30000
wait-until:networkidle2
[puppeteer.wait-for-url]
Waits until the page URL matches.
Arguments:
- Slot value - Session identifier.
url- URL string to wait for.timeout- Timeout in milliseconds.
Examples:
puppeteer.wait-for-url:SESSION_ID
url:"https://ainiro.io/contact-us"
[puppeteer.wait-for-selector]
Waits until a selector appears in the DOM.
Arguments:
- Slot value - Session identifier.
selector- CSS selector to wait for.timeout- Timeout in milliseconds.visible- Boolean. Require element to be visible.hidden- Boolean. Require element to be hidden.
Examples:
puppeteer.wait-for-selector:SESSION_ID
selector:"#name"
visible:true
[puppeteer.click]
Clicks a selector.
Arguments:
- Slot value - Session identifier.
selector- CSS selector to click.button- Mouse button:left,middle, orright.click-count- Number of clicks.delay- Delay between down and up in milliseconds.
Examples:
puppeteer.click:SESSION_ID
selector:"#submit_contact_form_button"
puppeteer.click:SESSION_ID
selector:"#submit_contact_form_button"
click-count:2
[puppeteer.type]
Types text into a selector.
Arguments:
- Slot value - Session identifier.
selector- CSS selector to type into.text- Text to type.delay- Delay between key presses in milliseconds.
Examples:
puppeteer.type:SESSION_ID
selector:"#name"
text:"Thomas Hansen"
puppeteer.type:SESSION_ID
selector:"#info"
text:"Hello from AI agent"
delay:25
[puppeteer.fill]
Clears and types text into a selector.
Arguments:
- Slot value - Session identifier.
selector- CSS selector to fill.text- Text to type after clearing.delay- Delay between key presses in milliseconds.
Examples:
puppeteer.fill:SESSION_ID
selector:"#email"
text:"thomas@gaiasoul.com"
[puppeteer.press]
Presses a key on a selector.
Arguments:
- Slot value - Session identifier.
selector- CSS selector to focus.key- Key name (for exampleEnter).delay- Delay in milliseconds.
Examples:
puppeteer.press:SESSION_ID
selector:"#submit_contact_form_button"
key:Enter
[puppeteer.select]
Selects option values from a selector.
Arguments:
- Slot value - Session identifier.
selector- CSS selector for a<select>element.values- Values to select. Provide as children or a comma-separated string.
Examples:
puppeteer.select:SESSION_ID
selector:"#plan"
values
.:basic
.:pro
[puppeteer.content]
Returns page HTML.
Arguments:
- Slot value - Session identifier.
Examples:
puppeteer.content:SESSION_ID
[puppeteer.title]
Returns page title.
Arguments:
- Slot value - Session identifier.
Examples:
puppeteer.title:SESSION_ID
[puppeteer.url]
Returns current URL.
Arguments:
- Slot value - Session identifier.
Examples:
puppeteer.url:SESSION_ID
[puppeteer.screenshot]
Saves a screenshot to disk.
Arguments:
- Slot value - Session identifier.
filename- Output file path.full-page- Boolean. Capture full scrollable page.type-pngorjpeg.quality- JPEG quality 0-100 (only forjpeg).
Examples:
puppeteer.screenshot:SESSION_ID
filename:"/etc/tmp/example.png"
full-page:true
puppeteer.screenshot:SESSION_ID
filename:"/etc/tmp/example.jpg"
type:jpeg
quality:85
[puppeteer.evaluate]
Evaluates a JavaScript expression in the page.
Arguments:
- Slot value - Session identifier.
expression- JavaScript expression string.args- Optional arguments for JS function invocation. Each child value is one argument.
Examples:
puppeteer.evaluate:SESSION_ID
expression:"document.title"
puppeteer.evaluate:SESSION_ID
expression:"typeof window.mcaptcha"
Combination examples
Get title and URL from a page, then close the session.
.session_id
set-value:x:@.session_id
puppeteer.connect
puppeteer.goto:x:@.session_id
url:"https://ainiro.io"
puppeteer.title:x:@.session_id
puppeteer.url:x:@.session_id
puppeteer.close:x:@.session_id
Fetch page HTML and save a screenshot.
.session_id
set-value:x:@.session_id
puppeteer.connect
puppeteer.goto:x:@.session_id
url:"https://ainiro.io/contact-us"
puppeteer.content:x:@.session_id
puppeteer.screenshot:x:@.session_id
filename:"/etc/tmp/ainiro-contact.png"
full-page:true
puppeteer.close:x:@.session_id