forked from enviPath/enviPy
7.6 KiB
7.6 KiB
layout: start
What is WebdriverIO?
Working with elements on a page has never been easier due to its synchronous nature. When fetching or looping over elements you can use just native JavaScript functions. With the `$` and `$$` functions WebdriverIO provides useful shortcuts which can also be chained in order to move deeper in the DOM tree without using complex xPath selectors.
The test runner also comes with a variety of hooks that allow you to interfere into the test process in order to e.g. take screenshots if an error occurs or modify the test procedure according to a previous test result. This is used by WebdriverIOs [services](/guide/services/appium.html) to integrate your tests with 3rd party tools like [Appium](http://appium.io/).
<article class="runyourtests col2 last">
var expect = require('chai').expect;
describe('webdriver.io api page', function() {
it('should be able to filter for commands', function () {
browser.url('http://webdriver.io/api.html');
// filtering property commands
$('.searchbar input').setValue('getT');
// get all results that are displayed
var results = $$('.commands.property a').filter(function (link) {
return link.isVisible();
});
// assert number of results
expect(results.length).to.be.equal(3);
// check out second result
results[1].click();
expect($('.doc h1').getText()).to.be.equal('GETTEXT');
});
});
</article>
client .init() .url('https://duckduckgo.com/') .setValue('#search_form_input_homepage', 'WebdriverIO') .click('#search_button_homepage') .getTitle().then(function(title) { console.log('Title is: ' + title);
// outputs:
// "Title is: WebdriverIO (Software) at DuckDuckGo"
})
.end();
</article>
<article class="col2 last">
<h2 class="right-col-heading">WebdriverIO as standalone package</h2>
<p>
WebdriverIO was designed to be as flexible and framework agnostic as possible. It can be applied in any context and serves not only the purpose of testing.<br>
<br>
You can use it as scrapper tool to dynamically fetch website data in an automated way or integrate it in your own automation library. Popular examples of that are [Spectron](http://electron.atom.io/spectron/), [Chimp](https://chimp.readme.io/) or [CodeceptJS](http://codecept.io/).
<div>
<p>
<a href="http://electron.atom.io/spectron/" style="margin-right: 15px"><img src="http://electron.atom.io/images/spectron-icon.svg" width="75" /></a>
<a href="https://chimp.readme.io/" style="margin-right: 15px"><img src="https://www.filepicker.io/api/file/C4MBXB4jQ6Ld9gII5IkF" /></a>
<a href="http://codecept.io/"><img src="http://codecept.io/images/cjs-base.png" width="80" /></a>
</p>
</div>
</p>
</article>
</div>
## Easy Test Setup
The `wdio` command line interface comes with a nice configuration utility that helps you to
create your config file in less than a minute. It also gives and overview of all available
3rd party packages like framework adaptions, reporter and services and installs them for you.
<div class="cliwindow">

</div>
<div>
<article class="col2">
<h2>How does it work?</h2>
<p>
WebdriverIO is an open source testing utility for nodejs. It makes it possible to write super easy selenium tests with Javascript in your favorite BDD or TDD test framework.
</p>
<p>
It basically sends requests to a Selenium server via the <a href="https://www.w3.org/TR/webdriver/">WebDriver Protocol</a> and handles its response. These requests are wrapped in useful commands and can be used to test several aspects of your site in an automated way.
</p>
</article>
<article class="runyourtests col2 last">
<h2>Run your tests in the cloud</h2>
<p>
Services like Sauce Labs or BrowserStack provide selenium testing on remote hosts. Be able to run tests on a wide collection of platforms, devices and browser combinations without any configuration in your environment.
</p>
<div>
<p>WebdriverIO supports services including:</p>
<p>
<a href="https://saucelabs.com">Sauce Labs</a>
<a href="http://www.browserstack.com/">BrowserStack</a>
<a href="http://www.testingbot.com/">TestingBot</a>
</p>
</div>
</article>
</div>





