Skip to content

Instantly share code, notes, and snippets.

@jzelenkov
Last active July 4, 2016 19:01
Show Gist options
  • Save jzelenkov/65bfdd09abde2d60c17b to your computer and use it in GitHub Desktop.
Save jzelenkov/65bfdd09abde2d60c17b to your computer and use it in GitHub Desktop.
Make your browsers work for you – Source Code – FrankfurtJS #2 2014-05-14
var assert = require('assert'),
test = require('selenium-webdriver/testing'),
webdriver = require('selenium-webdriver');
test.describe('Submitted message should be shown', function() {
test.it('should work', function(done) {
var driver = new webdriver.Builder()
.withCapabilities(webdriver.Capabilities.chrome())
.build();
driver.get('http://localhost:8080/index.html');
driver.findElement(webdriver.By.name('whoami'))
.sendKeys('FrankfurtJS!');
driver.findElement(webdriver.By.id('greet'))
.click();
driver.findElement(webdriver.By.id('message'))
.getText()
.then(function(val) {
assert.equal(val, 'FrankfurtJS!');
});
driver.quit();
});
});
var webdriverjs = require('webdriverjs');
var assert = require('assert');
describe('Submitted message should be shown', function() {
it('should work', function(done) {
this.timeout(99999999);
var client = webdriverjs.remote({ desiredCapabilities: {browserName: 'chrome'} });
client
.init()
.url('http://localhost:8080/index.html')
.addValue('[name="whoami"]', 'FrankfurtJS!')
.buttonClick('#greet')
.getText('#message', function(err, text) {
assert.equal(text, 'FrankfurtJS!');
})
.end(done);
});
});
module.exports = {
'Submitted message should be shown': function (test) {
test
.open('http://localhost:8080/index.html')
.type('[name="whoami"]', 'FrankfurtJS!')
.click('#greet')
.assert.text('#message').is('FrankfurtJS!')
.done();
}
};
exports.config = {
seleniumAddress: 'http://127.0.0.1:4444/wd/hub',
specs: [
'04_protractor_spec.js'
],
capabilities: {
'browserName': 'chrome'
},
baseUrl: 'http://localhost:8080/',
};
var assert = require('assert');
describe('Submitted message should be shown', function() {
it('should work', function(done) {
browser.ignoreSynchronization = true;
browser.get('http://localhost:8080');
element(by.name('whoami')).sendKeys('FrankfurtJS!');
element(by.id('greet')).click();
element(by.id('message')).getText().then(function(val) {
assert.equal(val, 'FrankfurtJS!');
});
});
});

install modules

npm install mocha
npm install selenium-webdriver
npm install webdriverjs
npm install dalek-cli -g
npm install dalekjs
npm install -g protractor

start selenium server

[1] either download & start manually:

java -jar path/to/your/selenium-server-standalone-2.39.0.jar

[2] or use protractor's webdriver-manager:

webdriver-manager update
webdriver-manager start

run tests

WebDriverJS Wrapper:

mocha test/01_webdriver-js-wrapper.js

WebDriverJS (WebDriverIO):

mocha test/02_webdriver-io.js

dalekJS:

dalek test/03_dalek.js

Protractor:

protractor test/04_protractor_conf.js
<!DOCTYPE HTML>
<html>
<body>
<form action="welcome.html">
<input type="text" name="whoami">
<input type="submit" id="greet">
</form>
<script type="text/javascript">
var btn = document.getElementById('greet');
btn.addEventListener('click', function(e) {
var text = document.getElementsByName('whoami')[0].value;
sessionStorage.setItem('message', text);
}, false);
</script>
</body>
</html>
<!DOCTYPE HTML>
<html>
<body>
<div class="text">
Welcome,
<span id="message"></span>!
</div>
<script type="text/javascript">
var msg = sessionStorage.getItem('message');
document.getElementById('message').textContent = msg;
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment