|
|
@@ -7,219 +7,216 @@ use String::TT qw/tt/;
|
|
|
|
|
|
sub new {
|
|
|
my $class = shift;
|
|
|
+
|
|
|
+ # http://code.google.com/p/selenium/wiki/JsonWireProtocol
|
|
|
my $self = {
|
|
|
- 'addCookie' => {
|
|
|
- 'method' => 'POST',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/cookie"
|
|
|
+ 'newSession' => {
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'url' => 'session'
|
|
|
},
|
|
|
- 'goBack' => {
|
|
|
- 'method' => 'POST',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/back"
|
|
|
+ 'getCapabilities' => {
|
|
|
+ 'method' => 'GET',
|
|
|
+ 'url' => 'session/[% session_id %]'
|
|
|
},
|
|
|
- 'clearElement' => {
|
|
|
- 'method' => 'POST',
|
|
|
- 'url' =>
|
|
|
- "session/[% session_id %]/[% context %]/element/[% id %]/clear"
|
|
|
+ 'quit' => {
|
|
|
+ 'method' => 'DELETE',
|
|
|
+ 'url' => "session/[% session_id %]"
|
|
|
},
|
|
|
- 'clickElement' => {
|
|
|
- 'method' => 'POST',
|
|
|
- 'url' =>
|
|
|
- "session/[% session_id %]/[% context %]/element/[% id %]/click"
|
|
|
+ 'getCurrentWindowHandle' => {
|
|
|
+ 'method' => 'GET',
|
|
|
+ 'url' => "session/[% session_id %]/window_handle"
|
|
|
},
|
|
|
- 'close' => {
|
|
|
- 'method' => 'DELETE',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/window"
|
|
|
+ 'getWindowHandles' => {
|
|
|
+ 'method' => 'GET',
|
|
|
+ 'url' => "session/[% session_id %]/window_handles"
|
|
|
},
|
|
|
'getCurrentUrl' => {
|
|
|
'method' => 'GET',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/url"
|
|
|
+ 'url' => "session/[% session_id %]/url"
|
|
|
},
|
|
|
- 'deleteAllCookies' => {
|
|
|
- 'method' => 'DELETE',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/cookie"
|
|
|
+ 'get' => {
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'url' => "session/[% session_id %]/url"
|
|
|
},
|
|
|
- 'deleteCookie' => {
|
|
|
- 'method' => 'DELETE',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/cookie/[% name %]"
|
|
|
+ 'goForward' => {
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'url' => "session/[% session_id %]/forward"
|
|
|
},
|
|
|
- 'dragElement' => {
|
|
|
- 'method' => 'POST',
|
|
|
- 'url' =>
|
|
|
- "session/[% session_id %]/[% context %]/element/[% id %]/drag"
|
|
|
+ 'goBack' => {
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'url' => "session/[% session_id %]/back"
|
|
|
},
|
|
|
- 'elementEquals' => {
|
|
|
- 'method' => 'GET',
|
|
|
- 'url' =>
|
|
|
-"session/[% session_id %]/[% context %]/element/[% id %]/equals/[% other %]"
|
|
|
+ 'refresh' => {
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'url' => "session/[% session_id %]/refresh"
|
|
|
},
|
|
|
'executeScript' => {
|
|
|
'method' => 'POST',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/execute"
|
|
|
+ 'url' => "session/[% session_id %]/execute"
|
|
|
+ },
|
|
|
+ 'screenshot' => {
|
|
|
+ 'method' => 'GET',
|
|
|
+ 'url' => "session/[% session_id %]/screenshot"
|
|
|
+ },
|
|
|
+ 'switchToFrame' => {
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'url' => "session/[% session_id %]/frame"
|
|
|
+ },
|
|
|
+ 'switchToWindow' => {
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'url' => "session/[% session_id %]/window"
|
|
|
+ },
|
|
|
+ 'getSpeed' => {
|
|
|
+ 'method' => 'GET',
|
|
|
+ 'url' => "session/[% session_id %]/speed"
|
|
|
+ },
|
|
|
+ 'setSpeed' => {
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'url' => "session/[% session_id %]/speed"
|
|
|
+ },
|
|
|
+ 'getAllCookies' => {
|
|
|
+ 'method' => 'GET',
|
|
|
+ 'url' => "session/[% session_id %]/cookie"
|
|
|
+ },
|
|
|
+ 'addCookie' => {
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'url' => "session/[% session_id %]/cookie"
|
|
|
+ },
|
|
|
+ 'deleteAllCookies' => {
|
|
|
+ 'method' => 'DELETE',
|
|
|
+ 'url' => "session/[% session_id %]/cookie"
|
|
|
+ },
|
|
|
+ 'deleteCookieNamed' => {
|
|
|
+ 'method' => 'DELETE',
|
|
|
+ 'url' => "session/[% session_id %]/cookie/[% name %]"
|
|
|
+ },
|
|
|
+ 'getPageSource' => {
|
|
|
+ 'method' => 'GET',
|
|
|
+ 'url' => "session/[% session_id %]/source"
|
|
|
+ },
|
|
|
+ 'getTitle' => {
|
|
|
+ 'method' => 'GET',
|
|
|
+ 'url' => "session/[% session_id %]/title"
|
|
|
},
|
|
|
'findElement' => {
|
|
|
'method' => 'POST',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/element"
|
|
|
+ 'url' => "session/[% session_id %]/element"
|
|
|
},
|
|
|
'findElements' => {
|
|
|
'method' => 'POST',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/elements"
|
|
|
+ 'url' => "session/[% session_id %]/elements"
|
|
|
+ },
|
|
|
+ 'getActiveElement' => {
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'url' => "session/[% session_id %]/element/active"
|
|
|
+ },
|
|
|
+ 'describeElement' => {
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]"
|
|
|
},
|
|
|
'findChildElement' => {
|
|
|
'method' => 'POST',
|
|
|
- 'url' =>
|
|
|
-"session/[% session_id %]/[% context %]/element/[% id %]/element/[% using %]"
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]/element"
|
|
|
},
|
|
|
'findChildElements' => {
|
|
|
'method' => 'POST',
|
|
|
- 'url' =>
|
|
|
-"session/[% session_id %]/[% context %]/element/[% id %]/elements/[% using %]"
|
|
|
- },
|
|
|
- 'goForward' => {
|
|
|
- 'method' => 'POST',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/forward"
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]/elements"
|
|
|
},
|
|
|
- 'get' => {
|
|
|
- 'method' => 'POST',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/url"
|
|
|
+ 'clickElement' => {
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]/click"
|
|
|
},
|
|
|
- 'getActiveElement' => {
|
|
|
- 'method' => 'POST',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/element/active"
|
|
|
+ 'submitElement' => {
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]/submit"
|
|
|
},
|
|
|
- 'getAllCookies' => {
|
|
|
- 'method' => 'GET',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/cookie"
|
|
|
+ 'getElementValue' => {
|
|
|
+ 'method' => 'GET',
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]/value"
|
|
|
},
|
|
|
- 'getCurrentWindowHandle' => {
|
|
|
- 'method' => 'GET',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/window_handle"
|
|
|
+ 'sendKeysToElement' => {
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]/value"
|
|
|
},
|
|
|
- 'getElementAttribute' => {
|
|
|
+ 'isElementSelected' => {
|
|
|
'method' => 'GET',
|
|
|
- 'url' =>
|
|
|
-"session/[% session_id %]/[% context %]/element/[% id %]/attribute/[% name %]"
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]/selected"
|
|
|
},
|
|
|
- 'getElementLocation' => {
|
|
|
- 'method' => 'GET',
|
|
|
- 'url' =>
|
|
|
- "session/[% session_id %]/[% context %]/element/[% id %]/location"
|
|
|
+ 'setElementSelected' => {
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]/selected"
|
|
|
},
|
|
|
- 'getElementSize' => {
|
|
|
- 'method' => 'GET',
|
|
|
- 'url' =>
|
|
|
- "session/[% session_id %]/[% context %]/element/[% id %]/size"
|
|
|
+ 'toggleElement' => {
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]/toggle"
|
|
|
},
|
|
|
- 'getElementText' => {
|
|
|
- 'method' => 'GET',
|
|
|
- 'url' =>
|
|
|
- "session/[% session_id %]/[% context %]/element/[% id %]/text"
|
|
|
+ 'isElementEnabled' => {
|
|
|
+ 'method' => 'GET',
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]/enabled"
|
|
|
},
|
|
|
- 'getElementValue' => {
|
|
|
- 'method' => 'GET',
|
|
|
- 'url' =>
|
|
|
- "session/[% session_id %]/[% context %]/element/[% id %]/value"
|
|
|
+ 'getElementLocation' => {
|
|
|
+ 'method' => 'GET',
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]/location"
|
|
|
},
|
|
|
- 'getSpeed' => {
|
|
|
- 'method' => 'GET',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/speed"
|
|
|
+ 'getElementLocationInView' => {
|
|
|
+ 'method' => 'GET',
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]/location_in_view"
|
|
|
},
|
|
|
'getElementTagName' => {
|
|
|
'method' => 'GET',
|
|
|
- 'url' =>
|
|
|
- "session/[% session_id %]/[% context %]/element/[% id %]/name"
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]/name"
|
|
|
},
|
|
|
- 'getTitle' => {
|
|
|
- 'method' => 'GET',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/title"
|
|
|
+ 'clearElement' => {
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]/clear"
|
|
|
},
|
|
|
- 'getElementValueOfCssProperty' => {
|
|
|
+ 'getElementAttribute' => {
|
|
|
'method' => 'GET',
|
|
|
'url' =>
|
|
|
-"session/[% session_id %]/[% context %]/element/[% id %]/css/[% property_name %]"
|
|
|
- },
|
|
|
- 'getVisible' => {
|
|
|
- 'method' => 'GET',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/visible"
|
|
|
- },
|
|
|
- 'getWindowHandles' => {
|
|
|
- 'method' => 'GET',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/window_handles"
|
|
|
+"session/[% session_id %]/element/[% id %]/attribute/[% name %]"
|
|
|
},
|
|
|
- 'hoverOverElement' => {
|
|
|
- 'method' => 'POST',
|
|
|
- 'url' =>
|
|
|
- "session/[% session_id %]/[% context %]/element/[% id %]/hover"
|
|
|
+ 'elementEquals' => {
|
|
|
+ 'method' => 'GET',
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]/equals/[% other %]"
|
|
|
},
|
|
|
'isElementDisplayed' => {
|
|
|
'method' => 'GET',
|
|
|
- 'url' =>
|
|
|
-"session/[% session_id %]/[% context %]/element/[% id %]/displayed"
|
|
|
- },
|
|
|
- 'isElementEnabled' => {
|
|
|
- 'method' => 'GET',
|
|
|
- 'url' =>
|
|
|
- "session/[% session_id %]/[% context %]/element/[% id %]/enabled"
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]/displayed"
|
|
|
},
|
|
|
- 'isElementSelected' => {
|
|
|
- 'method' => 'GET',
|
|
|
- 'url' =>
|
|
|
- "session/[% session_id %]/[% context %]/element/[% id %]/selected"
|
|
|
+ 'close' => {
|
|
|
+ 'method' => 'DELETE',
|
|
|
+ 'url' => "session/[% session_id %]/window"
|
|
|
},
|
|
|
- 'newSession' => {
|
|
|
- 'method' => 'POST',
|
|
|
- 'url' => 'session'
|
|
|
+ 'dragElement' => {
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]/drag"
|
|
|
},
|
|
|
- 'getPageSource' => {
|
|
|
- 'method' => 'GET',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/source"
|
|
|
+ 'getElementSize' => {
|
|
|
+ 'method' => 'GET',
|
|
|
+ 'url' => "session/[% session_id %]/element/[% id %]/size"
|
|
|
},
|
|
|
- 'quit' => {
|
|
|
- 'method' => 'DELETE',
|
|
|
- 'url' => "session/[% session_id %]"
|
|
|
+ 'getElementText' => {
|
|
|
+ 'method' => 'GET',
|
|
|
+ 'url' =>
|
|
|
+ "session/[% session_id %]/element/[% id %]/text"
|
|
|
},
|
|
|
- 'refresh' => {
|
|
|
- 'method' => 'POST',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/refresh"
|
|
|
+ 'getElementValueOfCssProperty' => {
|
|
|
+ 'method' => 'GET',
|
|
|
+ 'url' =>
|
|
|
+"session/[% session_id %]/element/[% id %]/css/[% property_name %]"
|
|
|
},
|
|
|
- 'screenshot' => {
|
|
|
- 'method' => 'GET',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/screenshot"
|
|
|
+ 'getVisible' => {
|
|
|
+ 'method' => 'GET',
|
|
|
+ 'url' => "session/[% session_id %]/visible"
|
|
|
},
|
|
|
- 'sendKeysToElement' => {
|
|
|
+ 'hoverOverElement' => {
|
|
|
'method' => 'POST',
|
|
|
'url' =>
|
|
|
- "session/[% session_id %]/[% context %]/element/[% id %]/value"
|
|
|
- },
|
|
|
- 'setElementSelected' => {
|
|
|
- 'method' => 'POST',
|
|
|
- 'url' =>
|
|
|
- "session/[% session_id %]/[% context %]/element/[% id %]/selected"
|
|
|
- },
|
|
|
- 'setSpeed' => {
|
|
|
- 'method' => 'POST',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/speed"
|
|
|
+ "session/[% session_id %]/element/[% id %]/hover"
|
|
|
},
|
|
|
'setVisible' => {
|
|
|
'method' => 'POST',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/visible"
|
|
|
- },
|
|
|
- 'submitElement' => {
|
|
|
- 'method' => 'POST',
|
|
|
- 'url' =>
|
|
|
- "session/[% session_id %]/[% context %]/element/[% id %]/submit"
|
|
|
- },
|
|
|
- 'switchToFrame' => {
|
|
|
- 'method' => 'POST',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/frame/[% id %]"
|
|
|
- },
|
|
|
- 'switchToWindow' => {
|
|
|
- 'method' => 'POST',
|
|
|
- 'url' => "session/[% session_id %]/[% context %]/window/[% name %]"
|
|
|
- },
|
|
|
- 'toggleElement' => {
|
|
|
- 'method' => 'POST',
|
|
|
- 'url' =>
|
|
|
- "session/[% session_id %]/[% context %]/element/[% id %]/toggle"
|
|
|
+ 'url' => "session/[% session_id %]/visible"
|
|
|
},
|
|
|
};
|
|
|
|
|
|
@@ -237,10 +234,9 @@ sub getParams {
|
|
|
|
|
|
# TT does lexical template replacement, so we need exact name of the vars.
|
|
|
my $session_id = $args->{'session_id'};
|
|
|
- my $context = (defined $args->{'context'}) ? $args->{'context'} : 'context';
|
|
|
my $id = $args->{'id'};
|
|
|
my $name = $args->{'name'};
|
|
|
- my $using = $args->{'using'};
|
|
|
+ my $property_name = $args->{'property_name'};
|
|
|
|
|
|
$data->{'method'} = $self->{$command}->{'method'};
|
|
|
$data->{'url'} = tt $self->{$command}->{'url'};
|