sweb
High-level abstraction for selenium-webdriver
Features:
- Built with Selenium v3 and W3C WebDriver
- Supports DOM API to explore page structure (via jsdom)
- No setup: built in Chrome support (via chromedriver)
- Flexibility: integrates with any test framework, node script, and selenium cloud provider.
Example
Smoke test for http://example.com using mocha and chai.
Installation
Requires node >= 6.9 (because of selenium-webdriver)
$ yarn add -D sweb
$ npm i -D sweb
API
new Browser(opts = {})
Creates new Browser
instance.
Available options:
screenhostOnError
(default: false) - make automatic screenshot whensweb
throws a custom error, for example on failed waitFor or click.workDir
(default:${cwd}/.sweb
) - specify directory for sweb's logs and screenshots. If folder does not exist, it will be created automatically.driver
- custom build of WebDriver, useful for running different browsers or for Browserstack/Saucelabs integration. Check custom drivers section for more details.
await browser.open(url)
Load url
in browser and return Page
instance.
Page
instance has useful properties:
url
- page urldocument
- similar towindow.document
, it's a jsdom instance with support of all DOM API methods.title
- page titlesource
- page html sourcedriver
- WebDriver instance
await browser.quit()
Quit real browser.
await page.click(selector)
Perform click event to selector
.
await page.type(selector, text)
Send user type input (combination of keydown, keypress, keyup for each character) to selector
with text
.
To emulate special keys like ENTER or F12 use Key
.
const browser = const page = await browserawait pagetype'[name="q"]' `selenium webdriver npm`
await page.waitFor(selector, delay = 2000)
Wait for selector
appears in html.
await page.screenshot(name)
Make screenshot of the page and store to ${browser.workDir}/${name}.png
.
Custom drivers
driver
option allows to pass custom selenium-webdriver
configuration.
Firefox with geckodriver
const driver = const browser = driver const page = await browser
Integration with Browserstack
const driver = const browser = driver const page = await browser
Integration with Saucelabs
const driver = const browser = driver const page = await browser