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:

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.