wd-bridge
v0.0.2
Published
a bridge between the wd driver and other selenium clients
Downloads
2,324
Readme
#wd-bridge
bridge between the wd driver and other selenium clients
#install
npm install wd-bridge
#usage
##Selenium WebdriverJs
var wd = require('wd'),
wdBridge = require('wd-bridge')(wd),
seleniumWebdriver = require('selenium-webdriver');
var builder = new seleniumWebdriver.Builder()
.usingServer('http://localhost:4444/wd/hub')
.withCapabilities(seleniumWebdriver.Capabilities.chrome());
var driver = builder.build();
var wdDriver;
wdBridge
.initFromSeleniumWebdriver(builder, driver)
.then(function (_wdDriver) { wdDriver = _wdDriver; })
.then(function () {
return driver.get('http://docs.seleniumhq.org/');
}).then(function () { return driver.getTitle(); })
.then(function (title) {
console.log('title from driver -->', title);
}).then(function () { return wdDriver.title(); })
.then(function (title) {
console.log('title from wdDriver -->', title);
}).then(function () {
// converting to wd element
return driver.findElement(seleniumWebdriver.By.id('mainContent'))
.then(function (el) {
return wdDriver.wdEl(el).text();
})
.then(function (text) {
console.log('text after converting to wd element -->',
text.substring(0, 50));
});
}).then(function () {
// converting from wd element
return wdDriver.elementById('mainContent')
.then(function (el) {
return wdDriver.swEl(el).getText();
}).then(function (text) {
console.log('text after converting from wd element -->',
text.substring(0, 50));
});
}).then(function () { return driver.quit(); })
.done();
##Protractor
config:
"use strict";
var wd = require('wd'),
wdBridge = require('wd-bridge')(wd);
// An example configuration file.
var config = exports.config = {
// The address of a running selenium server.
seleniumAddress: 'http://localhost:4444/wd/hub',
// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'chrome'
},
// Spec patterns are relative to the current working directly when
// protractor is called.
specs: ['example_spec.js'],
// Options to be passed to Jasmine-node.
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000
},
// configuring wd in onPrepare
onPrepare: function () {
wdBridge.initFromProtractor(config);
}
};
specs (use the global wdBrowser variable):
describe('angularjs homepage', function () {
beforeEach(function () {
browser.get('http://www.angularjs.org');
});
// regular protractor tests
it('should be able to use wdBrowser ', function (done) {
wdBrowser.title().then(function (title) {
expect(title).toEqual('AngularJS — Superheroic JavaScript MVW Framework');
}).nodeify(done);
});
it('should convert to wd element', function (done) {
var el = element.all(by.repeater('todo in todos')).get(1);
wdBrowser.wdEl(el).text().then(function (text) {
expect(text).toEqual('build an angular app');
}).nodeify(done);
});
it('should convert from wd element', function (done) {
return wdBrowser
.elementById('add-some-control')
.then(function (el) {
return wdBrowser.swEl(el).getText().then(function (text) {
expect(text).toEqual('Add Some Control');
});
}).nodeify(done);
});
});