geckodriver: Adds TakesElementScreenshot

This is already available in Marionette. This allows us to call Marionette
from Selenium to take screenshots of elements.

Source-Repo: https://github.com/mozilla/geckodriver
Source-Revision: cb67c0aa66e3d50223de8e79eb4e1333bfb09401

committer: jgraham <james@hoppipolla.co.uk>

--HG--
extra : rebase_source : b73deed5b7ea1b4de94a402453b5427f96510204
This commit is contained in:
AutomatedTester 2016-11-22 14:11:33 +00:00
Родитель 25bdc483b2
Коммит 3f8cd98a99
1 изменённых файлов: 10 добавлений и 3 удалений

Просмотреть файл

@ -33,8 +33,8 @@ use webdriver::command::WebDriverCommand::{
ElementClick, ElementTap, ElementClear, ElementSendKeys, ElementClick, ElementTap, ElementClear, ElementSendKeys,
ExecuteScript, ExecuteAsyncScript, GetCookies, GetCookie, AddCookie, ExecuteScript, ExecuteAsyncScript, GetCookies, GetCookie, AddCookie,
DeleteCookies, DeleteCookie, SetTimeouts, DismissAlert, DeleteCookies, DeleteCookie, SetTimeouts, DismissAlert,
AcceptAlert, GetAlertText, SendAlertText, TakeScreenshot, Extension, AcceptAlert, GetAlertText, SendAlertText, TakeScreenshot, TakeElementScreenshot,
SetWindowPosition, GetWindowPosition}; Extension, SetWindowPosition, GetWindowPosition};
use webdriver::command::{ use webdriver::command::{
NewSessionParameters, GetParameters, WindowSizeParameters, SwitchToWindowParameters, NewSessionParameters, GetParameters, WindowSizeParameters, SwitchToWindowParameters,
SwitchToFrameParameters, LocatorParameters, JavascriptCommandParameters, SwitchToFrameParameters, LocatorParameters, JavascriptCommandParameters,
@ -568,7 +568,7 @@ impl MarionetteSession {
IsSelected(_) | GetElementAttribute(_, _) | GetElementProperty(_, _) | IsSelected(_) | GetElementAttribute(_, _) | GetElementProperty(_, _) |
GetCSSValue(_, _) | GetElementText(_) | GetCSSValue(_, _) | GetElementText(_) |
GetElementTagName(_) | IsEnabled(_) | ExecuteScript(_) | ExecuteAsyncScript(_) | GetElementTagName(_) | IsEnabled(_) | ExecuteScript(_) | ExecuteAsyncScript(_) |
GetAlertText | TakeScreenshot => { GetAlertText | TakeScreenshot | TakeElementScreenshot(_) => {
let value = try_opt!(resp.result.find("value"), let value = try_opt!(resp.result.find("value"),
ErrorStatus::UnknownError, ErrorStatus::UnknownError,
"Failed to find value field"); "Failed to find value field");
@ -934,6 +934,13 @@ impl MarionetteCommand {
data.insert("full".to_string(), Json::Boolean(false)); data.insert("full".to_string(), Json::Boolean(false));
(Some("takeScreenshot"), Some(Ok(data))) (Some("takeScreenshot"), Some(Ok(data)))
}, },
TakeElementScreenshot(ref e) => {
let mut data = BTreeMap::new();
data.insert("id".to_string(), e.id.to_json());
data.insert("highlights".to_string(), Json::Array(vec![]));
data.insert("full".to_string(), Json::Boolean(false));
(Some("takeScreenshot"), Some(Ok(data)))
},
Extension(ref extension) => { Extension(ref extension) => {
match extension { match extension {
&GeckoExtensionCommand::GetContext => (Some("getContext"), None), &GeckoExtensionCommand::GetContext => (Some("getContext"), None),