Merge pull request #64 from DrMarcII/master
More minor cleanup.
diff --git a/lib/src/capabilities.dart b/lib/src/capabilities.dart
index 0a55e04..273f8c8 100644
--- a/lib/src/capabilities.dart
+++ b/lib/src/capabilities.dart
@@ -14,6 +14,7 @@
part of webdriver.core;
+/// Capabilities constants.
class Capabilities {
static const String browserName = "browserName";
static const String platform = "platform";
@@ -53,6 +54,7 @@
static Map<String, dynamic> get empty => new Map<String, dynamic>();
}
+/// Browser name constants.
class Browser {
static const String firefox = "firefox";
static const String safari = "safari";
@@ -64,6 +66,7 @@
static const String ipad = "iPad";
}
+/// Browser operating system constants.
class BrowserPlatform {
static const String any = "ANY";
static const String android = "ANDROID";
diff --git a/lib/src/common.dart b/lib/src/common.dart
index 1c3afc2..632783a 100644
--- a/lib/src/common.dart
+++ b/lib/src/common.dart
@@ -30,7 +30,7 @@
/// Searches for multiple elements within the context.
Stream<WebElement> findElements(By by);
- /// Searchs for an element within the context.
+ /// Searches for an element within the context.
///
/// Throws [NoSuchElementException] if no matching element is found.
Future<WebElement> findElement(By by);
diff --git a/lib/src/exception.dart b/lib/src/exception.dart
index 71561b9..031b399 100644
--- a/lib/src/exception.dart
+++ b/lib/src/exception.dart
@@ -89,112 +89,132 @@
const WebDriverException._(this.statusCode, this.message);
+ @override
String toString() => '$runtimeType ($statusCode): $message';
+
+ @override
+ bool operator ==(other) => other != null &&
+ other.runtimeType == this.runtimeType &&
+ other.statusCode == this.statusCode &&
+ other.message == this.message;
+
+ @override
+ int get hashCode => statusCode + message.hashCode;
}
class InvalidRequestException extends WebDriverException {
- InvalidRequestException(statusCode, message) : super._(statusCode, message);
+ const InvalidRequestException(statusCode, message)
+ : super._(statusCode, message);
}
class UnknownException extends WebDriverException {
- UnknownException(statusCode, message) : super._(statusCode, message);
+ const UnknownException(statusCode, message) : super._(statusCode, message);
}
class NoSuchDriverException extends WebDriverException {
- NoSuchDriverException(statusCode, message) : super._(statusCode, message);
+ const NoSuchDriverException(statusCode, message)
+ : super._(statusCode, message);
}
class NoSuchElementException extends WebDriverException {
- NoSuchElementException(statusCode, message) : super._(statusCode, message);
+ const NoSuchElementException(statusCode, message)
+ : super._(statusCode, message);
}
class NoSuchFrameException extends WebDriverException {
- NoSuchFrameException(statusCode, message) : super._(statusCode, message);
+ const NoSuchFrameException(statusCode, message)
+ : super._(statusCode, message);
}
class UnknownCommandException extends WebDriverException {
- UnknownCommandException(statusCode, message) : super._(statusCode, message);
+ const UnknownCommandException(statusCode, message)
+ : super._(statusCode, message);
}
class StaleElementReferenceException extends WebDriverException {
- StaleElementReferenceException(statusCode, message)
+ const StaleElementReferenceException(statusCode, message)
: super._(statusCode, message);
}
class ElementNotVisibleException extends WebDriverException {
- ElementNotVisibleException(statusCode, message)
+ const ElementNotVisibleException(statusCode, message)
: super._(statusCode, message);
}
class InvalidElementStateException extends WebDriverException {
- InvalidElementStateException(statusCode, message)
+ const InvalidElementStateException(statusCode, message)
: super._(statusCode, message);
}
class ElementIsNotSelectableException extends WebDriverException {
- ElementIsNotSelectableException(statusCode, message)
+ const ElementIsNotSelectableException(statusCode, message)
: super._(statusCode, message);
}
class JavaScriptException extends WebDriverException {
- JavaScriptException(statusCode, message) : super._(statusCode, message);
+ const JavaScriptException(statusCode, message) : super._(statusCode, message);
}
class XPathLookupException extends WebDriverException {
- XPathLookupException(statusCode, message) : super._(statusCode, message);
+ const XPathLookupException(statusCode, message)
+ : super._(statusCode, message);
}
class TimeoutException extends WebDriverException {
- TimeoutException(statusCode, message) : super._(statusCode, message);
+ const TimeoutException(statusCode, message) : super._(statusCode, message);
}
class NoSuchWindowException extends WebDriverException {
- NoSuchWindowException(statusCode, message) : super._(statusCode, message);
+ const NoSuchWindowException(statusCode, message)
+ : super._(statusCode, message);
}
class InvalidCookieDomainException extends WebDriverException {
- InvalidCookieDomainException(statusCode, message)
+ const InvalidCookieDomainException(statusCode, message)
: super._(statusCode, message);
}
class UnableToSetCookieException extends WebDriverException {
- UnableToSetCookieException(statusCode, message)
+ const UnableToSetCookieException(statusCode, message)
: super._(statusCode, message);
}
class UnexpectedAlertOpenException extends WebDriverException {
- UnexpectedAlertOpenException(statusCode, message)
+ const UnexpectedAlertOpenException(statusCode, message)
: super._(statusCode, message);
}
class NoAlertOpenException extends WebDriverException {
- NoAlertOpenException(statusCode, message) : super._(statusCode, message);
+ const NoAlertOpenException(statusCode, message)
+ : super._(statusCode, message);
}
class InvalidElementCoordinatesException extends WebDriverException {
- InvalidElementCoordinatesException(statusCode, message)
+ const InvalidElementCoordinatesException(statusCode, message)
: super._(statusCode, message);
}
class IMENotAvailableException extends WebDriverException {
- IMENotAvailableException(statusCode, message) : super._(statusCode, message);
+ const IMENotAvailableException(statusCode, message)
+ : super._(statusCode, message);
}
class IMEEngineActivationFailedException extends WebDriverException {
- IMEEngineActivationFailedException(statusCode, message)
+ const IMEEngineActivationFailedException(statusCode, message)
: super._(statusCode, message);
}
class InvalidSelectorException extends WebDriverException {
- InvalidSelectorException(statusCode, message) : super._(statusCode, message);
+ const InvalidSelectorException(statusCode, message)
+ : super._(statusCode, message);
}
class SessionNotCreatedException extends WebDriverException {
- SessionNotCreatedException(statusCode, message)
+ const SessionNotCreatedException(statusCode, message)
: super._(statusCode, message);
}
class MoveTargetOutOfBoundsException extends WebDriverException {
- MoveTargetOutOfBoundsException(statusCode, message)
+ const MoveTargetOutOfBoundsException(statusCode, message)
: super._(statusCode, message);
}
diff --git a/lib/src/web_driver.dart b/lib/src/web_driver.dart
index 173b8fc..fc64ed1 100644
--- a/lib/src/web_driver.dart
+++ b/lib/src/web_driver.dart
@@ -117,8 +117,10 @@
Mouse get mouse => new Mouse._(this);
/// Take a screenshot of the current page as PNG.
- Future<List<int>> captureScreenshot() => getRequest('screenshot')
- .then((screenshot) => CryptoUtils.base64StringToBytes(screenshot));
+ Stream<int> captureScreenshot() async* {
+ var encoded = await getRequest('screenshot');
+ yield* new Stream.fromIterable(CryptoUtils.base64StringToBytes(encoded));
+ }
/// Inject a snippet of JavaScript into the page for execution in the context
/// of the currently selected frame. The executed script is assumed to be
diff --git a/pubspec.yaml b/pubspec.yaml
index 3f50916..9c96059 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
name: webdriver
-version: 0.10.0-pre.3
+version: 0.10.0-pre.4
author: Google, Inc.
description: >
Provides WebDriver bindings for Dart. These use the WebDriver JSON interface,
diff --git a/test/src/web_driver_test.dart b/test/src/web_driver_test.dart
index 7634055..ae28d9a 100644
--- a/test/src/web_driver_test.dart
+++ b/test/src/web_driver_test.dart
@@ -176,7 +176,7 @@
});
test('captureScreenshot', () async {
- var screenshot = await driver.captureScreenshot();
+ var screenshot = await driver.captureScreenshot().toList();
expect(screenshot, hasLength(isPositive));
expect(screenshot, everyElement(new isInstanceOf<int>()));
});