Skip to content

Commit fb2aaf8

Browse files
committed
Add native support for Opera 26+ to webdriverjs
1 parent dd35003 commit fb2aaf8

8 files changed

Lines changed: 39 additions & 11 deletions

File tree

javascript/node/selenium-webdriver/CHANGES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ major version release (i.e. 1.0.0).
1212

1313
* Added native support for Internet Explorer - the Java Selenium server is no
1414
longer required.
15+
* Added native support for Opera 26+
1516
* With the release of [Node 0.12.0](http://blog.nodejs.org/2015/02/06/node-v0-12-0-stable/)
1617
(finally!), the minimum supported version of Node is now `0.10.x`.
1718
* The `promise` module is now [Promises/A+](https://promisesaplus.com/)

javascript/node/selenium-webdriver/builder.js

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,9 @@ var Builder = function() {
101101
/** @private {firefox.Options} */
102102
this.firefoxOptions_ = null;
103103

104+
/** @private {opera.Options} */
105+
this.operaOptions_ = null;
106+
104107
/** @private {boolean} */
105108
this.ignoreEnv_ = false;
106109
};
@@ -284,6 +287,21 @@ Builder.prototype.setFirefoxOptions = function(options) {
284287
};
285288

286289

290+
/**
291+
* Sets Opera-specific options for drivers created by this builder. Any
292+
* logging or proxy settings defined on the given options will take precedence
293+
* over those set through {@link #setLoggingPrefs} and {@link #setProxy},
294+
* respectively.
295+
*
296+
* @param {!opera.Options} options The OperaDriver options to use.
297+
* @return {!Builder} A self reference.
298+
*/
299+
Builder.prototype.setOperaOptions = function(options) {
300+
this.operaOptions_ = options;
301+
return this;
302+
};
303+
304+
287305
/**
288306
* Sets the control flow that created drivers should execute actions in. If
289307
* the flow is never set, or is set to {@code null}, it will use the active
@@ -333,10 +351,13 @@ Builder.prototype.build = function() {
333351
// Apply browser specific overrides.
334352
if (browser === Browser.CHROME && this.chromeOptions_) {
335353
capabilities.merge(this.chromeOptions_.toCapabilities());
336-
}
337354

338-
if (browser === Browser.FIREFOX && this.firefoxOptions_) {
355+
} else if (browser === Browser.FIREFOX && this.firefoxOptions_) {
339356
capabilities.merge(this.firefoxOptions_.toCapabilities());
357+
358+
} else if (browser === Browser.OPERA && this.operaOptions_) {
359+
capabilities.merge(this.operaOptions_.toCapabilities());
360+
340361
}
341362

342363
// Check for a remote browser.
@@ -374,6 +395,12 @@ Builder.prototype.build = function() {
374395
var ie = require('./ie');
375396
return new ie.Driver(capabilities, this.flow_);
376397

398+
case Browser.OPERA:
399+
// Requiring 'opera' would create a cycle:
400+
// index -> builder -> opera -> index
401+
var opera = require('./opera');
402+
return new opera.Driver(capabilities, this.flow_);
403+
377404
case Browser.PHANTOM_JS:
378405
// Requiring 'phantomjs' would create a cycle:
379406
// index -> builder -> phantomjs -> index

javascript/node/selenium-webdriver/lib/test/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ var NATIVE_BROWSERS = [
3434
webdriver.Browser.CHROME,
3535
webdriver.Browser.FIREFOX,
3636
webdriver.Browser.IE,
37+
webdriver.Browser.OPERA,
3738
webdriver.Browser.PHANTOM_JS
3839
];
3940

javascript/node/selenium-webdriver/test/cookie_test.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ test.suite(function(env) {
6363
assertHasCookies(cookie1, cookie2);
6464
});
6565

66-
test.ignore(env.browsers(Browser.IE, Browser.OPERA)).
66+
test.ignore(env.browsers(Browser.IE)).
6767
it('only returns cookies visible to the current page', function() {
6868
var cookie1 = createCookieSpec();
6969
var cookie2 = createCookieSpec();
@@ -148,8 +148,7 @@ test.suite(function(env) {
148148
assertHasCookies();
149149
});
150150

151-
test.ignore(env.browsers(
152-
Browser.ANDROID, Browser.FIREFOX, Browser.IE, Browser.OPERA)).
151+
test.ignore(env.browsers(Browser.ANDROID, Browser.FIREFOX, Browser.IE)).
153152
it('should retain cookie expiry', function() {
154153
var cookie = createCookieSpec();
155154
var expirationDelay = 5 * 1000;

javascript/node/selenium-webdriver/test/element_finding_test.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,7 @@ test.suite(function(env) {
150150
});
151151
});
152152

153-
test.ignore(browsers(Browser.OPERA)).
154-
it('works on XHTML pages', function() {
153+
test.it('works on XHTML pages', function() {
155154
driver.get(test.whereIs('actualXhtmlPage.xhtml'));
156155

157156
var el = driver.findElement(By.linkText('Foo'));

javascript/node/selenium-webdriver/test/proxy_test.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ test.suite(function(env) {
8989
test.afterEach(function() { driver && driver.quit(); });
9090

9191
// Proxy support not implemented.
92-
test.ignore(env.browsers(Browser.IE, Browser.SAFARI)).
92+
test.ignore(env.browsers(Browser.IE, Browser.OPERA, Browser.SAFARI)).
9393
describe('manual proxy settings', function() {
9494
// phantomjs 1.9.1 in webdriver mode does not appear to respect proxy
9595
// settings.
@@ -133,7 +133,8 @@ test.suite(function(env) {
133133

134134
// PhantomJS does not support PAC file proxy configuration.
135135
// Safari does not support proxies.
136-
test.ignore(env.browsers(Browser.IE, Browser.PHANTOM_JS, Browser.SAFARI)).
136+
test.ignore(env.browsers(
137+
Browser.IE, Browser.OPERA, Browser.PHANTOM_JS, Browser.SAFARI)).
137138
describe('pac proxy settings', function() {
138139
test.it('can configure proxy through PAC file', function() {
139140
driver = env.builder().

javascript/node/selenium-webdriver/test/upload_test.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ test.suite(function(env) {
5050
test.ignore(env.browsers(
5151
Browser.IPAD,
5252
Browser.IPHONE,
53-
Browser.OPERA,
5453
// Uploads broken in PhantomJS 2.0.
5554
// See https://github.com/ariya/phantomjs/issues/12506
5655
Browser.PHANTOM_JS,

javascript/node/selenium-webdriver/test/window_test.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@ test.suite(function(env) {
103103
return position.x === x &&
104104
// On OSX, the window height may be bumped down 22px for the top
105105
// status bar.
106-
(position.y >= y && position.y <= (y + 22));
106+
// On Linux, Opera's window position will be off by 28px.
107+
(position.y >= y && position.y <= (y + 28));
107108
});
108109
};
109110
}

0 commit comments

Comments
 (0)