I'm pleased to announce the release of OperaDriver 0.8.1. This is a patch release addressing some issues discovered following last week's 0.8 release.
Two important changes I should highlight:
When OperaDriver reaches a page load timeout, e.g. when a page takes longer than 30 seconds to load, it previously threw an exception and terminated. We are now catching the exception and returning control of the browser to the user.
For this reason, the blocking API is imperfect. Opera also implements
its own Scope API to detect whether all internal components have met
their conditions before returning from the page load command, called
“Opera Idle”. This basically waits for all components of the browser,
such as SVG, GIFs, CSS, HTML, to meet a predefined set of conditions
before returning. This, however, won't cut it in the real world (yet)
but is quite useful for minimal browser tests. You may of course try
it out by enabling the capability
opera.idle by setting
it to true.
For convenience I've added an extension to the
interface to specify the page load timeout. By default this is
currently set to 30 seconds, but you may change it by invoking:
You may see the changelog attached for a full list of changes and bug fixes, but other noteworthy changes include:
The README can be found here: https://github.com/operasoftware/operadriver/blob/v0.8.1/README.md
OperaDriver 0.8.1 is available in the group
under the artifact ID
operadriver in Maven.
You may download the OperaDriver JAR separately here: https://github.com/downloads/operasoftware/operadriver/operadriver-v0.8.1.zip
The full changelog:
v0.8.1 2011-11-24 [API CHANGES] * OperaDriver.get() and OperaNavigation().to() now catches ResponseNotReceivedException so that when a page load times out on very slow-loading pages, the control of the browser instance to the user. (andreastt) * Added method pageLoadTimeout() to OperaTimeouts which allows you to control the default page load timeout, that is the timeout for when control of the browser should be handed back to the user. Example: driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS); (andreastt) [NEW FEATURES] * Output from Opera and the launcher is now forwarded to the appropriate logging level in OperaDriver. (andreastt, danielb) [ENHANCEMENTS] * Upgraded Selenium dependency to 2.13.0. (andreastt) * Upgraded WebDriver atoms to match Selenium 2.13.0. (andreastt) * Refactored heuristic for figuring out a sensible logging level between OperaDriver and launcher. (andreastt) * Refactored OperaPaths.operaPath() to look for Opera Next binaries on all platforms. Resolves OPDRV-104. (andreastt) [BUG FIXES] * Ensuring that the launcher is executable on each run. (andreastt) * Fixed bug with synchronized locks ought to be on fields classified as final in WaitState. (andreastt) * OperaArguments does not parse OPERA_ARGS, so calling OperaCoreArguments on startup instead. Fixes bug with OPERA_ARGS not being parsed. Addresses OPDRV-108. (andreastt) * Parsing a single argument failed due to a bug in regex, corrected. Addresses OPDRV-108. (andreastt) * Removed superflous call to isPathValid() in OperaPaths when checking whether a specified/set path is invalid. (andreastt) * Arguments added in OperaCoreArgument's constructor were not merged if OperaRunner received an OperaRunnerSettings object with the arguments field set. (andreastt) * Actions sent to OperaDriver.operaAction() are now converted to lower case in OperaExec. (andreastt) [TESTS] * Removed superflous code in OperaLauncherRunnerTest, and made assertions static. (andreastt) * Added deprecated OperaDriverSettings tests to a separate file. (andreastt) * Added test for single argument parsing to OperaArgumentsTest. (andreastt) * Added new run configuration for OperaLauncherRunnerTest and OperaRunnerTest. (andreastt) * Added tsts for OperaLauncherRunner.toLauncherLoggingLevel(). (andreastt) * The "File Types Section Info" section does not exist on core-tv, using "Disk Cache" instead for PrefsTest, resolves about five failing tests on this configuration. (andreastt) * Moved context menu test to be run last in ElementsTest because it's known to cause problems for consecutive tests. (andreastt) * OperaRunnerTest now uses a mocking OperaRunner instance, TestOperaRunner, which exposes the settings field through a getter. (andreastt) [OTHER] * Fixed classpath issues with previous release. (ajayk) * Added Apache Commons Exec 1.1 as dependency as org.openqa.selenium.os.CommandLine now depends on it. (andreastt) * Explanation for IllegalArgumentException for OperaExec.mouseAction(), helps WTR-362. (andreastt)