OperaDriver v0.8 released
OperaDriver 0.8 was released tonight and is bundled with the corresponding release of Selenium 2.13.0. Many important changes have been made which you can read more about in the attached changelog.
This version prepares for the release of Opera 11.60, and will thus
not work out of the box with 11.52 or any previous versions. To get
it working with earlier versions of Opera, please set the capabilities
opera.port to -1 and
opera.profile to "" (empty string). This will
disable the command-line arguments -debugproxy and
-pd from being sent to Opera.
Other exciting news:
- Using temporary profiles and random ports on Opera Desktop, meaning OperaDriver can now be parallelized
- Now using the ecmascript-service rather than ecmascript-debugger, meaning a small performance increase and that injected JavaScript will be sent through the JIT
- Support for frame switching
- Preliminary support for SDK
There's also been a number of bug fixes and test fixes in this release. It's
worth mentioning that OperaWebElement.getCssValue() now returns
HEX values instead of RGB values, that
OperaIntervals#WAIT_FOR_ELEMENT (implicit wait) is not being
reset for each element lookup, and that the launchers have been moved into a
separate package making it easier to use OperaDriver from SpartanRunner.
Besides the changes the user will notice, a lot of work has gone into improving the general structure of OperaDriver, especially with adding support for more Opera products (such as SDK and Mobile) in mind.
OperaDriver is bundled with Selenium and is available as a part of the Selenium standalone server download on GoogleCode.
The README can also be found on Github.
Issues can be reported to our issue tracker.
v0.8 2011-11-17
[API CHANGES]
* OperaDriver now uses temporary profile and random port by default.
This breaks backwards-compatibility with Opera < 11.60. Please set
capabilities opera.profile to "" (empty string) and opera.port to -1
for it to not use a temporary profile and the default port (7001).
(stuartk)
* Updated Selenium dependency to 2.12.0. (andreastt)
* Throwing UnsupportedCommandException rather than a
WebDriverException in OperaExec, so that it can be recovered.
(andreastt)
* Throwing UnsupportedOperationException for Options.ime().
(andreastt)
* Added Options.window() as a beta feature. Currently not
implemented, and will throw UnsupportedOperationException.
(andreastt)
* OperaRunnerSettings.setProduct() now accepts an OperaProduct, and
not a String anymore. (andreastt)
[NEW FEATURES]
* EcmascriptService is now used by default in OperaDriver, instead of
EcmaScriptDebugger. This means any injected JavaScript now
potentially goes through JIT, enabling the JIT compiler inside the
browser. (stuartk)
* Added "compile_protos" target to Ant build file for compiling proto
files to Java classes. (stuartk)
* Added support for frame switching. (stuartk)
* Introducing OperaArguments (with accompanying OperaArgument,
OperaCoreArgument and OperaDesktopArgument) which defines a joint
interface for interacting with arguments to various kinds of Opera
products. (andreastt)
* OperaProduct keeps a list of all Opera products. (andreastt)
[ENHANCEMENTS]
* Update EcmascriptService to be more similar to EcmaScriptDebugger.
(stuartk)
* Abstracted RuntimeNode from EcmaScriptDebugger into its own class so
that it can be reused in EcmascriptService. (stuartk)
* Move methods common to EcmaScriptDebugger and EcmascriptService to a
new class, AbstractEcmascriptService.
* Replacing Apache Commons IO library calls with Guava (Simon Stewart,
andreastt)
* Upgraded from using OperaDriverSettings to using DesiredCapabilities
in OperaDesktopDriver. (andreastt)
* The launchers have now been moved to a separate JAR,
operalaunchers-*.jar, effectively removing the need to traverse the
repo when running from source in SpartanRunner. (andreastt)
* OperaLauncherRunner made separate from OperaRunner. OperaRunner now
implements a Java native way of launching Opera. (andreastt)
* Logging all ES implementations used to FINE rather than INFO.
(andreastt)
* Which Opera product is used is fetched after connecting and stored
in the capability "opera.product". (andreastt)
[BUG FIXES]
* OperaWebElement.getCssValue() now returns HEX values for
colour-related variables. (andreastt)
* We were setting OperaIntervals#WAIT_FOR_ELEMENT to 0 every time when
looking for an element, which overrode the implicit wait time
specified through driver.manage().timeouts(). (andreastt)
* Use the passed idle argument, not forcing idle to be true when
calling setUseOperaIdle(). (danielb)
* Since -pd is ignored by core builds, we must for some reason send
-autotestmode last so that it doesn't consider the temporary profile
to be the starting URL. (andreastt)
* Fix for making sure we create runtimes when we try to find them,
instead of when we try to update the runtimes in EcmascriptService.
(stuartk)
* getWindowHandles() now gives names to windows without names.
(stuartk)
* Fix for NullPointerException if both window name and title are null
in OperaDriver.window(). (stuartk)
* Fix for a better way to verify whether EcmascriptService is
available. (stuartk)
* Catch invalid runtime exception for EcmascriptService. (stuartk)
* Now logging which status we receive from the launcher. (andreastt)
* Doing all port guessing in OperaRunnerSettings since it's specific
to launching Opera. (andreastt)
* Making sure Capabilities and OperaRunnerSettings are synchronized on
launch. (andreastt)
* Logging for when launcher is copied was misplaced, now corrected to
reflect reality. (andreastt)
[TESTS]
* Added tests for VersionUtils comparison. (dturkoglu)
* Removed irrelevant tests, corrected misleading pass conditions.
(andreastt, stuartk)
* Logging level when running tests is now set to FINE. (stuartK)
* Assert.assert* calls have now been replaced by static imports for
JUnit tests. (ajay, andreastt)
* Added tests for all new code added in this version. (andreastt)
* Added method for setting the launcher manually to
OperaLauncherRunnerSettings. This should never be used for other
purposes than testing. (andreastt)
* Added new @Ignore annotation which lets you ignore a test based on
product and/or platform. (andreastt)
* Corrected ignores for core- and desktop-specific tests. (andreastt)
* Reworked tests to use OperaDriverTestCase as a base. (andreastt)
* Added tests for OperaColor. (andreastt)
[OTHER]
* Added descriptions for all packages. (stuartk)
* A lot of documentation added to various places. (stuartk,
andreastt)
* Fixes for documentation in OperaDesktopDriver. (andreastt)
* Added IntelliJ run configurations for various tests. (andreastt)
* Removed reference to pkg/ as a library in IntelliJ configuration.
(andreastt)
* Examples have been cleaned up. (andreastt)
Oh, and it's also available through Maven. Group ID is
com.opera, artifact is operadriver.