mirror of
https://github.com/puppeteer/puppeteer
synced 2024-06-14 14:02:48 +00:00
This adds a proof-of-concept of `puppeteer-firefox`. This consists of two parts: - `//experimental/juggler` - patches to apply to Firefox. - `//experimental/puppeteer-firefox` - front-end code to be merged with Puppeteer. As things become more stable, we'll gradually move it out of the experimental folder.
188 lines
5.0 KiB
Markdown
188 lines
5.0 KiB
Markdown
# Puppeteer-Firefox
|
|
|
|
> Puppeteer-Firefox - Puppeteer API for Firefox
|
|
|
|
> **BEWARE**: This project is experimental. Alligators live here.
|
|
|
|
## Getting Started
|
|
|
|
### Installation
|
|
|
|
To use Puppeteer-Firefox in your project, run:
|
|
|
|
```bash
|
|
npm i puppeteer-firefox
|
|
# or "yarn add puppeteer-firefox"
|
|
```
|
|
|
|
Note: When you install Puppeteer-Firefox, it downloads a [custom-built Firefox](https://github.com/GoogleChrome/puppeteer/tree/master/experimental/juggler) that is guaranteed to work with the API.
|
|
|
|
### Usage
|
|
|
|
**Example** - navigating to https://example.com and saving a screenshot as *example.png*:
|
|
|
|
Save file as **example.js**
|
|
|
|
```js
|
|
const pptrFirefox = require('puppeteer-firefox');
|
|
|
|
(async () => {
|
|
const browser = await pptrFirefox.launch();
|
|
const page = await browser.newPage();
|
|
await page.goto('https://example.com');
|
|
await page.screenshot({path: 'example.png'});
|
|
await browser.close();
|
|
})();
|
|
```
|
|
|
|
Execute script on the command line
|
|
|
|
```bash
|
|
node example.js
|
|
```
|
|
|
|
|
|
### API Status
|
|
|
|
- class: Puppeteer
|
|
* puppeteer.executablePath()
|
|
* puppeteer.launch([options])
|
|
- class: Browser
|
|
* event: 'targetchanged'
|
|
* event: 'targetcreated'
|
|
* event: 'targetdestroyed'
|
|
* browser.close()
|
|
* browser.newPage()
|
|
* browser.pages()
|
|
* browser.process()
|
|
* browser.targets()
|
|
* browser.userAgent()
|
|
* browser.version()
|
|
* browser.waitForTarget(predicate[, options])
|
|
- class: Target
|
|
* target.browser()
|
|
* target.page()
|
|
* target.type()
|
|
* target.url()
|
|
- class: Page
|
|
* event: 'close'
|
|
* event: 'console'
|
|
* event: 'dialog'
|
|
* event: 'domcontentloaded'
|
|
* event: 'frameattached'
|
|
* event: 'framedetached'
|
|
* event: 'framenavigated'
|
|
* event: 'load'
|
|
* event: 'pageerror'
|
|
* page.$(selector)
|
|
* page.$$(selector)
|
|
* page.$$eval(selector, pageFunction[, ...args])
|
|
* page.$eval(selector, pageFunction[, ...args])
|
|
* page.$x(expression)
|
|
* page.addScriptTag(options)
|
|
* page.addStyleTag(options)
|
|
* page.browser()
|
|
* page.click(selector[, options])
|
|
* page.close(options)
|
|
* page.content()
|
|
* page.evaluate(pageFunction, ...args)
|
|
* page.evaluateOnNewDocument(pageFunction, ...args)
|
|
* page.focus(selector)
|
|
* page.frames()
|
|
* page.goBack(options)
|
|
* page.goForward(options)
|
|
* page.goto(url, options)
|
|
* page.hover(selector)
|
|
* page.isClosed()
|
|
* page.keyboard
|
|
* page.mainFrame()
|
|
* page.mouse
|
|
* page.reload(options)
|
|
* page.screenshot([options])
|
|
* page.select(selector, ...values)
|
|
* page.setContent(html)
|
|
* page.setViewport(viewport)
|
|
* page.target()
|
|
* page.title()
|
|
* page.type(selector, text[, options])
|
|
* page.url()
|
|
* page.viewport()
|
|
* page.waitFor(selectorOrFunctionOrTimeout[, options[, ...args]])
|
|
* page.waitForFunction(pageFunction[, options[, ...args]])
|
|
* page.waitForNavigation(options)
|
|
* page.waitForSelector(selector[, options])
|
|
* page.waitForXPath(xpath[, options])
|
|
- class: Frame
|
|
* frame.$(selector)
|
|
* frame.$$(selector)
|
|
* frame.$$eval(selector, pageFunction[, ...args])
|
|
* frame.$eval(selector, pageFunction[, ...args])
|
|
* frame.$x(expression)
|
|
* frame.addScriptTag(options)
|
|
* frame.addStyleTag(options)
|
|
* frame.childFrames()
|
|
* frame.click(selector[, options])
|
|
* frame.content()
|
|
* frame.evaluate(pageFunction, ...args)
|
|
* frame.focus(selector)
|
|
* frame.hover(selector)
|
|
* frame.isDetached()
|
|
* frame.name()
|
|
* frame.parentFrame()
|
|
* frame.select(selector, ...values)
|
|
* frame.setContent(html)
|
|
* frame.title()
|
|
* frame.type(selector, text[, options])
|
|
* frame.url()
|
|
* frame.waitFor(selectorOrFunctionOrTimeout[, options[, ...args]])
|
|
* frame.waitForFunction(pageFunction[, options[, ...args]])
|
|
* frame.waitForSelector(selector[, options])
|
|
* frame.waitForXPath(xpath[, options])
|
|
- class: JSHandle
|
|
* jsHandle.asElement()
|
|
* jsHandle.dispose()
|
|
* jsHandle.getProperties()
|
|
* jsHandle.getProperty(propertyName)
|
|
* jsHandle.jsonValue()
|
|
* jsHandle.toString()
|
|
- class: ElementHandle
|
|
* elementHandle.$(selector)
|
|
* elementHandle.$$(selector)
|
|
* elementHandle.$$eval(selector, pageFunction, ...args)
|
|
* elementHandle.$eval(selector, pageFunction, ...args)
|
|
* elementHandle.$x(expression)
|
|
* elementHandle.boundingBox()
|
|
* elementHandle.click([options])
|
|
* elementHandle.dispose()
|
|
* elementHandle.focus()
|
|
* elementHandle.hover()
|
|
* elementHandle.isIntersectingViewport()
|
|
* elementHandle.press(key[, options])
|
|
* elementHandle.screenshot([options])
|
|
* elementHandle.type(text[, options])
|
|
- class: Keyboard
|
|
* keyboard.down(key[, options])
|
|
* keyboard.press(key[, options])
|
|
* keyboard.sendCharacter(char)
|
|
* keyboard.type(text, options)
|
|
* keyboard.up(key)
|
|
- class: Mouse
|
|
* mouse.click(x, y, [options])
|
|
* mouse.down([options])
|
|
* mouse.move(x, y, [options])
|
|
* mouse.up([options])
|
|
- class: Dialog
|
|
* dialog.accept([promptText])
|
|
* dialog.defaultValue()
|
|
* dialog.dismiss()
|
|
* dialog.message()
|
|
* dialog.type()
|
|
- class: ConsoleMessage
|
|
* consoleMessage.args()
|
|
* consoleMessage.text()
|
|
* consoleMessage.type()
|
|
- class: TimeoutError
|
|
|
|
|
|
Special thanks to [Amine Zaza](https://bitbucket.org/aminerop/) who volunteered the [`puppeteer-firefox`](https://www.npmjs.com/package/puppeteer-firefox) NPM package.
|