Added new classes, implemented more methods from JSONWireProtol API.
Added test cases
This commit is contained in:
@@ -396,6 +396,342 @@ feature -- Commands
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
change_focus_window (a_session_id: STRING_32; a_data: STRING_32): SE_RESPONSE
|
||||||
|
require
|
||||||
|
selinum_server_available: is_available
|
||||||
|
local
|
||||||
|
resp: HTTP_CLIENT_RESPONSE
|
||||||
|
do
|
||||||
|
create Result.make_empty
|
||||||
|
resp := execute_post (cmd_session_window (a_session_id), a_data)
|
||||||
|
if resp.status = 204 then
|
||||||
|
Result.set_status (0)
|
||||||
|
Result.set_session_id (a_session_id)
|
||||||
|
else
|
||||||
|
if attached resp.body as l_body then
|
||||||
|
Result := new_response (l_body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
close_window (a_session_id: STRING_32): SE_RESPONSE
|
||||||
|
require
|
||||||
|
selinum_server_available: is_available
|
||||||
|
local
|
||||||
|
resp: HTTP_CLIENT_RESPONSE
|
||||||
|
do
|
||||||
|
create Result.make_empty
|
||||||
|
resp := execute_delete (cmd_session_window (a_session_id))
|
||||||
|
if resp.status = 204 then
|
||||||
|
Result.set_status (0)
|
||||||
|
Result.set_session_id (a_session_id)
|
||||||
|
else
|
||||||
|
if attached resp.body as l_body then
|
||||||
|
Result := new_response (l_body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
change_size_window (a_session_id: STRING_32; a_window_handle : STRING_32;a_data: STRING_32): SE_RESPONSE
|
||||||
|
require
|
||||||
|
selinum_server_available: is_available
|
||||||
|
local
|
||||||
|
resp: HTTP_CLIENT_RESPONSE
|
||||||
|
do
|
||||||
|
create Result.make_empty
|
||||||
|
resp := execute_post (cmd_session_window_size (a_session_id,a_window_handle), a_data)
|
||||||
|
if resp.status = 204 then
|
||||||
|
Result.set_status (0)
|
||||||
|
Result.set_session_id (a_session_id)
|
||||||
|
else
|
||||||
|
if attached resp.body as l_body then
|
||||||
|
Result := new_response (l_body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
size_window (a_session_id: STRING_32; a_window_handle : STRING_32) : SE_RESPONSE
|
||||||
|
require
|
||||||
|
selinum_server_available: is_available
|
||||||
|
local
|
||||||
|
resp: HTTP_CLIENT_RESPONSE
|
||||||
|
do
|
||||||
|
create Result.make_empty
|
||||||
|
resp := execute_get (cmd_session_window_size (a_session_id,a_window_handle))
|
||||||
|
if resp.status = 204 then
|
||||||
|
Result.set_status (0)
|
||||||
|
Result.set_session_id (a_session_id)
|
||||||
|
else
|
||||||
|
if attached resp.body as l_body then
|
||||||
|
Result := new_response (l_body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
change_window_position (a_session_id: STRING_32; a_window_handle : STRING_32;a_data: STRING_32): SE_RESPONSE
|
||||||
|
require
|
||||||
|
selinum_server_available: is_available
|
||||||
|
local
|
||||||
|
resp: HTTP_CLIENT_RESPONSE
|
||||||
|
do
|
||||||
|
create Result.make_empty
|
||||||
|
resp := execute_post (cmd_session_window_position (a_session_id,a_window_handle), a_data)
|
||||||
|
if resp.status = 204 then
|
||||||
|
Result.set_status (0)
|
||||||
|
Result.set_session_id (a_session_id)
|
||||||
|
else
|
||||||
|
if attached resp.body as l_body then
|
||||||
|
Result := new_response (l_body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
window_position (a_session_id: STRING_32; a_window_handle : STRING_32) : SE_RESPONSE
|
||||||
|
require
|
||||||
|
selinum_server_available: is_available
|
||||||
|
local
|
||||||
|
resp: HTTP_CLIENT_RESPONSE
|
||||||
|
do
|
||||||
|
create Result.make_empty
|
||||||
|
resp := execute_get (cmd_session_window_size (a_session_id,a_window_handle))
|
||||||
|
if resp.status = 204 then
|
||||||
|
Result.set_status (0)
|
||||||
|
Result.set_session_id (a_session_id)
|
||||||
|
else
|
||||||
|
if attached resp.body as l_body then
|
||||||
|
Result := new_response (l_body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
window_maximize (a_session_id: STRING_32; a_window_handle : STRING_32) : SE_RESPONSE
|
||||||
|
require
|
||||||
|
selinum_server_available: is_available
|
||||||
|
local
|
||||||
|
resp: HTTP_CLIENT_RESPONSE
|
||||||
|
do
|
||||||
|
create Result.make_empty
|
||||||
|
resp := execute_post (cmd_session_window_maximize (a_session_id,a_window_handle), Void)
|
||||||
|
if resp.status = 204 then
|
||||||
|
Result.set_status (0)
|
||||||
|
Result.set_session_id (a_session_id)
|
||||||
|
else
|
||||||
|
if attached resp.body as l_body then
|
||||||
|
Result := new_response (l_body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
retrieve_cookies (a_session_id: STRING_32) : SE_RESPONSE
|
||||||
|
require
|
||||||
|
selinum_server_available: is_available
|
||||||
|
local
|
||||||
|
resp: HTTP_CLIENT_RESPONSE
|
||||||
|
do
|
||||||
|
create Result.make_empty
|
||||||
|
resp := execute_get (cmd_session_cookie (a_session_id))
|
||||||
|
if resp.status = 204 then
|
||||||
|
Result.set_status (0)
|
||||||
|
Result.set_session_id (a_session_id)
|
||||||
|
else
|
||||||
|
if attached resp.body as l_body then
|
||||||
|
Result := new_response (l_body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
set_cookie (a_session_id: STRING_32; a_data : STRING_32) : SE_RESPONSE
|
||||||
|
require
|
||||||
|
selinum_server_available: is_available
|
||||||
|
local
|
||||||
|
resp: HTTP_CLIENT_RESPONSE
|
||||||
|
do
|
||||||
|
create Result.make_empty
|
||||||
|
resp := execute_post (cmd_session_cookie (a_session_id),a_data)
|
||||||
|
if resp.status = 204 then
|
||||||
|
Result.set_status (0)
|
||||||
|
Result.set_session_id (a_session_id)
|
||||||
|
else
|
||||||
|
if attached resp.body as l_body then
|
||||||
|
Result := new_response (l_body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
delete_cookies (a_session_id: STRING_32) : SE_RESPONSE
|
||||||
|
require
|
||||||
|
selinum_server_available: is_available
|
||||||
|
local
|
||||||
|
resp: HTTP_CLIENT_RESPONSE
|
||||||
|
do
|
||||||
|
create Result.make_empty
|
||||||
|
resp := execute_delete (cmd_session_cookie (a_session_id))
|
||||||
|
if resp.status = 204 then
|
||||||
|
Result.set_status (0)
|
||||||
|
Result.set_session_id (a_session_id)
|
||||||
|
else
|
||||||
|
if attached resp.body as l_body then
|
||||||
|
Result := new_response (l_body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
delete_cookie_by_name (a_session_id: STRING_32; a_name : STRING_32) : SE_RESPONSE
|
||||||
|
require
|
||||||
|
selinum_server_available: is_available
|
||||||
|
local
|
||||||
|
resp: HTTP_CLIENT_RESPONSE
|
||||||
|
do
|
||||||
|
create Result.make_empty
|
||||||
|
resp := execute_delete (cmd_session_cookie_delete (a_session_id,a_name))
|
||||||
|
if resp.status = 204 then
|
||||||
|
Result.set_status (0)
|
||||||
|
Result.set_session_id (a_session_id)
|
||||||
|
else
|
||||||
|
if attached resp.body as l_body then
|
||||||
|
Result := new_response (l_body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
page_source (a_session_id: STRING_32) : SE_RESPONSE
|
||||||
|
require
|
||||||
|
selinum_server_available: is_available
|
||||||
|
local
|
||||||
|
resp: HTTP_CLIENT_RESPONSE
|
||||||
|
do
|
||||||
|
create Result.make_empty
|
||||||
|
resp := execute_get (cmd_session_source (a_session_id))
|
||||||
|
if resp.status = 204 then
|
||||||
|
Result.set_status (0)
|
||||||
|
Result.set_session_id (a_session_id)
|
||||||
|
else
|
||||||
|
if attached resp.body as l_body then
|
||||||
|
Result := new_response (l_body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
page_title (a_session_id: STRING_32) : SE_RESPONSE
|
||||||
|
require
|
||||||
|
selinum_server_available: is_available
|
||||||
|
local
|
||||||
|
resp: HTTP_CLIENT_RESPONSE
|
||||||
|
do
|
||||||
|
create Result.make_empty
|
||||||
|
resp := execute_get (cmd_session_title (a_session_id))
|
||||||
|
if resp.status = 204 then
|
||||||
|
Result.set_status (0)
|
||||||
|
Result.set_session_id (a_session_id)
|
||||||
|
else
|
||||||
|
if attached resp.body as l_body then
|
||||||
|
Result := new_response (l_body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
search_element (a_session_id: STRING_32; a_data :STRING_32) : SE_RESPONSE
|
||||||
|
require
|
||||||
|
selinum_server_available: is_available
|
||||||
|
local
|
||||||
|
resp: HTTP_CLIENT_RESPONSE
|
||||||
|
do
|
||||||
|
create Result.make_empty
|
||||||
|
resp := execute_post (cmd_session_element (a_session_id),a_data)
|
||||||
|
if resp.status = 204 then
|
||||||
|
Result.set_status (0)
|
||||||
|
Result.set_session_id (a_session_id)
|
||||||
|
else
|
||||||
|
if attached resp.body as l_body then
|
||||||
|
Result := new_response (l_body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
search_element_id_element (a_session_id: STRING_32; id : STRING_32; a_data :STRING_32) : SE_RESPONSE
|
||||||
|
require
|
||||||
|
selinum_server_available: is_available
|
||||||
|
local
|
||||||
|
resp: HTTP_CLIENT_RESPONSE
|
||||||
|
do
|
||||||
|
create Result.make_empty
|
||||||
|
resp := execute_post (cmd_session_element_id_element (a_session_id,id),a_data)
|
||||||
|
if resp.status = 204 then
|
||||||
|
Result.set_status (0)
|
||||||
|
Result.set_session_id (a_session_id)
|
||||||
|
else
|
||||||
|
if attached resp.body as l_body then
|
||||||
|
Result := new_response (l_body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
search_elements (a_session_id: STRING_32; a_data :STRING_32) : SE_RESPONSE
|
||||||
|
require
|
||||||
|
selinum_server_available: is_available
|
||||||
|
local
|
||||||
|
resp: HTTP_CLIENT_RESPONSE
|
||||||
|
do
|
||||||
|
create Result.make_empty
|
||||||
|
resp := execute_post (cmd_session_elements (a_session_id),a_data)
|
||||||
|
if resp.status = 204 then
|
||||||
|
Result.set_status (0)
|
||||||
|
Result.set_session_id (a_session_id)
|
||||||
|
else
|
||||||
|
if attached resp.body as l_body then
|
||||||
|
Result := new_response (l_body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
element_active (a_session_id: STRING_32) : SE_RESPONSE
|
||||||
|
require
|
||||||
|
selinum_server_available: is_available
|
||||||
|
local
|
||||||
|
resp: HTTP_CLIENT_RESPONSE
|
||||||
|
do
|
||||||
|
create Result.make_empty
|
||||||
|
resp := execute_get (cmd_session_element_active (a_session_id))
|
||||||
|
if resp.status = 204 then
|
||||||
|
Result.set_status (0)
|
||||||
|
Result.set_session_id (a_session_id)
|
||||||
|
else
|
||||||
|
if attached resp.body as l_body then
|
||||||
|
Result := new_response (l_body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
search_element_id_elements (a_session_id: STRING_32; id : STRING_32; a_data :STRING_32) : SE_RESPONSE
|
||||||
|
require
|
||||||
|
selinum_server_available: is_available
|
||||||
|
local
|
||||||
|
resp: HTTP_CLIENT_RESPONSE
|
||||||
|
do
|
||||||
|
create Result.make_empty
|
||||||
|
resp := execute_post (cmd_session_element_id_elements (a_session_id,id),a_data)
|
||||||
|
if resp.status = 204 then
|
||||||
|
Result.set_status (0)
|
||||||
|
Result.set_session_id (a_session_id)
|
||||||
|
else
|
||||||
|
if attached resp.body as l_body then
|
||||||
|
Result := new_response (l_body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
feature {NONE} -- Implementation
|
feature {NONE} -- Implementation
|
||||||
|
|
||||||
execute_get (command_name: STRING_32): HTTP_CLIENT_RESPONSE
|
execute_get (command_name: STRING_32): HTTP_CLIENT_RESPONSE
|
||||||
|
|||||||
100
library/test/selenium/src/converter/se_cookie_json_converter.e
Normal file
100
library/test/selenium/src/converter/se_cookie_json_converter.e
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
note
|
||||||
|
description: "Summary description for {SE_COOKIE_JSON_CONVERTER}."
|
||||||
|
author: ""
|
||||||
|
date: "$Date$"
|
||||||
|
revision: "$Revision$"
|
||||||
|
|
||||||
|
class
|
||||||
|
SE_COOKIE_JSON_CONVERTER
|
||||||
|
inherit
|
||||||
|
SE_JSON_CONVERTER
|
||||||
|
|
||||||
|
create
|
||||||
|
make
|
||||||
|
|
||||||
|
feature {NONE} -- Initialization
|
||||||
|
|
||||||
|
make
|
||||||
|
do
|
||||||
|
create object
|
||||||
|
end
|
||||||
|
|
||||||
|
feature -- Access
|
||||||
|
|
||||||
|
object: SE_COOKIE
|
||||||
|
|
||||||
|
feature -- Conversion
|
||||||
|
|
||||||
|
from_json (j: like to_json): detachable like object
|
||||||
|
do
|
||||||
|
create Result
|
||||||
|
if attached {STRING_32} json_to_object (j.item (name_key), Void) as l_item then
|
||||||
|
Result.set_name(l_item)
|
||||||
|
end
|
||||||
|
if attached {STRING_32} json_to_object (j.item (value_key), Void) as l_item then
|
||||||
|
Result.set_value(l_item)
|
||||||
|
end
|
||||||
|
if attached {STRING_32} json_to_object (j.item (path_key), Void) as l_item then
|
||||||
|
Result.set_path(l_item)
|
||||||
|
end
|
||||||
|
if attached {STRING_32} json_to_object (j.item (domain_key), Void) as l_item then
|
||||||
|
Result.set_domain(l_item)
|
||||||
|
end
|
||||||
|
if attached {BOOLEAN} json_to_object (j.item (secure_key), Void) as l_item then
|
||||||
|
if l_item then
|
||||||
|
Result.secure
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if attached {INTEGER_32} json_to_object (j.item (expiry_key), Void) as l_item then
|
||||||
|
Result.set_expiry (l_item.as_natural_32)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
to_json (o: like object): JSON_OBJECT
|
||||||
|
do
|
||||||
|
create Result.make
|
||||||
|
Result.put (json.value (o.name), name_key)
|
||||||
|
Result.put (json.value (o.value), value_key)
|
||||||
|
Result.put (json.value (o.path), path_key)
|
||||||
|
Result.put (json.value (o.domain), domain_key)
|
||||||
|
Result.put (json.value (o.is_secure), secure_key)
|
||||||
|
Result.put (json.value (o.expiry), expiry_key)
|
||||||
|
end
|
||||||
|
|
||||||
|
feature {NONE} -- Implementation
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
name_key: JSON_STRING
|
||||||
|
once
|
||||||
|
create Result.make_json ("name")
|
||||||
|
end
|
||||||
|
|
||||||
|
value_key: JSON_STRING
|
||||||
|
once
|
||||||
|
create Result.make_json ("value")
|
||||||
|
end
|
||||||
|
|
||||||
|
path_key: JSON_STRING
|
||||||
|
once
|
||||||
|
create Result.make_json ("path")
|
||||||
|
end
|
||||||
|
|
||||||
|
domain_key: JSON_STRING
|
||||||
|
once
|
||||||
|
create Result.make_json ("domain")
|
||||||
|
end
|
||||||
|
|
||||||
|
secure_key : JSON_STRING
|
||||||
|
once
|
||||||
|
create Result.make_json ("secure")
|
||||||
|
end
|
||||||
|
|
||||||
|
expiry_key : JSON_STRING
|
||||||
|
once
|
||||||
|
create Result.make_json ("expiry")
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
@@ -71,6 +71,20 @@ feature -- Access
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
json_to_se_cookie (post: STRING_32): detachable SE_COOKIE
|
||||||
|
local
|
||||||
|
parser: JSON_PARSER
|
||||||
|
do
|
||||||
|
initialize_converters (json)
|
||||||
|
create parser.make_parser (post)
|
||||||
|
if attached parser.parse_object as st and parser.is_parsed then
|
||||||
|
if attached {SE_COOKIE} json.object (st, "SE_COOKIE") as l_cookie then
|
||||||
|
Result := l_cookie
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
initialize_converters (j: like json)
|
initialize_converters (j: like json)
|
||||||
-- Initialize json converters
|
-- Initialize json converters
|
||||||
do
|
do
|
||||||
@@ -82,5 +96,6 @@ feature -- Access
|
|||||||
j.add_converter (create {SE_CAPABILITIES_JSON_CONVERTER}.make)
|
j.add_converter (create {SE_CAPABILITIES_JSON_CONVERTER}.make)
|
||||||
j.add_converter (create {SE_RESPONSE_JSON_CONVERTER}.make)
|
j.add_converter (create {SE_RESPONSE_JSON_CONVERTER}.make)
|
||||||
j.add_converter (create {SE_TIMEOUT_TYPE_JSON_CONVERTER}.make)
|
j.add_converter (create {SE_TIMEOUT_TYPE_JSON_CONVERTER}.make)
|
||||||
|
j.add_converter (create {SE_COOKIE_JSON_CONVERTER}.make)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ note
|
|||||||
author: ""
|
author: ""
|
||||||
date: "$Date$"
|
date: "$Date$"
|
||||||
revision: "$Revision$"
|
revision: "$Revision$"
|
||||||
EIS: "name=SELINIUM", "protocol=http", "src=https://code.google.com/p/selenium/wiki/JsonWireProtocol"
|
EIS: "name=SELINIUM", "protocol=selenium", "src=https://code.google.com/p/selenium/wiki/JsonWireProtocol"
|
||||||
|
|
||||||
class
|
class
|
||||||
SE_JSON_WIRE_PROTOCOL
|
SE_JSON_WIRE_PROTOCOL
|
||||||
@@ -146,7 +146,7 @@ feature -- Commands
|
|||||||
-- Returns:
|
-- Returns:
|
||||||
-- {object} An object describing the session's capabilities.
|
-- {object} An object describing the session's capabilities.
|
||||||
local
|
local
|
||||||
response : SE_RESPONSE
|
response: SE_RESPONSE
|
||||||
do
|
do
|
||||||
if commnad_executor.is_available then
|
if commnad_executor.is_available then
|
||||||
response := commnad_executor.retrieve_session (a_session_id)
|
response := commnad_executor.retrieve_session (a_session_id)
|
||||||
@@ -587,7 +587,6 @@ feature -- Commands
|
|||||||
-- NoSuchWindow - If the currently selected window has been closed.
|
-- NoSuchWindow - If the currently selected window has been closed.
|
||||||
-- NoSuchFrame - If the frame specified by id cannot be found.
|
-- NoSuchFrame - If the frame specified by id cannot be found.
|
||||||
do
|
do
|
||||||
-- TODO
|
|
||||||
end
|
end
|
||||||
|
|
||||||
change_focus_window (a_session_id: STRING_32; a_name: STRING_32)
|
change_focus_window (a_session_id: STRING_32; a_name: STRING_32)
|
||||||
@@ -599,8 +598,18 @@ feature -- Commands
|
|||||||
-- name - {string} The window to change focus to.
|
-- name - {string} The window to change focus to.
|
||||||
-- Potential Errors:
|
-- Potential Errors:
|
||||||
-- NoSuchWindow - If the window specified by name cannot be found.
|
-- NoSuchWindow - If the window specified by name cannot be found.
|
||||||
|
local
|
||||||
|
l_json: STRING_32
|
||||||
|
resp: SE_RESPONSE
|
||||||
do
|
do
|
||||||
-- TODO
|
l_json := "[
|
||||||
|
{ "name": "$name" }
|
||||||
|
]"
|
||||||
|
l_json.replace_substring_all ("$name", a_name)
|
||||||
|
if commnad_executor.is_available then
|
||||||
|
resp := commnad_executor.change_focus_window (a_session_id, l_json)
|
||||||
|
check_response (resp)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
close_window (a_session_id: STRING_32)
|
close_window (a_session_id: STRING_32)
|
||||||
@@ -610,11 +619,16 @@ feature -- Commands
|
|||||||
-- :sessionId - ID of the session to route the command to.
|
-- :sessionId - ID of the session to route the command to.
|
||||||
-- Potential Errors:
|
-- Potential Errors:
|
||||||
-- NoSuchWindow - If the currently selected window is already closed
|
-- NoSuchWindow - If the currently selected window is already closed
|
||||||
|
local
|
||||||
|
resp: SE_RESPONSE
|
||||||
do
|
do
|
||||||
--TODO
|
if commnad_executor.is_available then
|
||||||
|
resp := commnad_executor.close_window (a_session_id)
|
||||||
|
check_response (resp)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
change_size_window (a_session_id: STRING_32; a_window_handle: STRING_32)
|
change_size_window (a_session_id: STRING_32; a_window_handle: STRING_32; a_width: NATURAL_32; a_height: NATURAL_32)
|
||||||
-- POST /session/:sessionId/window/:windowHandle/size
|
-- POST /session/:sessionId/window/:windowHandle/size
|
||||||
-- Change the size of the specified window. If the :windowHandle URL parameter is "current", the currently active window will be resized.
|
-- Change the size of the specified window. If the :windowHandle URL parameter is "current", the currently active window will be resized.
|
||||||
-- URL Parameters:
|
-- URL Parameters:
|
||||||
@@ -622,10 +636,24 @@ feature -- Commands
|
|||||||
-- JSON Parameters:
|
-- JSON Parameters:
|
||||||
-- width - {number} The new window width.
|
-- width - {number} The new window width.
|
||||||
-- height - {number} The new window height.
|
-- height - {number} The new window height.
|
||||||
|
local
|
||||||
|
l_json: STRING_32
|
||||||
|
resp: SE_RESPONSE
|
||||||
do
|
do
|
||||||
|
l_json := "[
|
||||||
|
{ "width": $width,
|
||||||
|
"height": $height
|
||||||
|
}
|
||||||
|
]"
|
||||||
|
l_json.replace_substring_all ("$width", a_width.out)
|
||||||
|
l_json.replace_substring_all ("$height", a_height.out)
|
||||||
|
if commnad_executor.is_available then
|
||||||
|
resp := commnad_executor.change_size_window (a_session_id, a_window_handle, l_json)
|
||||||
|
check_response (resp)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
size_window (a_session_id: STRING_32; a_window_handle: STRING_32)
|
size_window (a_session_id: STRING_32; a_window_handle: STRING_32): SE_WINDOW
|
||||||
-- GET /session/:sessionId/window/:windowHandle/size
|
-- GET /session/:sessionId/window/:windowHandle/size
|
||||||
-- Get the size of the specified window. If the :windowHandle URL parameter is "current", the size of the currently active window will be returned.
|
-- Get the size of the specified window. If the :windowHandle URL parameter is "current", the size of the currently active window will be returned.
|
||||||
-- URL Parameters:
|
-- URL Parameters:
|
||||||
@@ -634,11 +662,27 @@ feature -- Commands
|
|||||||
-- {width: number, height: number} The size of the window.
|
-- {width: number, height: number} The size of the window.
|
||||||
-- Potential Errors:
|
-- Potential Errors:
|
||||||
-- NoSuchWindow - If the specified window cannot be found.
|
-- NoSuchWindow - If the specified window cannot be found.
|
||||||
|
local
|
||||||
|
resp: SE_RESPONSE
|
||||||
do
|
do
|
||||||
--TODO
|
create Result
|
||||||
|
if commnad_executor.is_available then
|
||||||
|
resp := commnad_executor.size_window (a_session_id, a_window_handle)
|
||||||
|
check_response (resp)
|
||||||
|
if not has_error then
|
||||||
|
if attached resp.value as l_value and then attached {JSON_OBJECT} string_to_json (l_value) as l_json_object then
|
||||||
|
if attached l_json_object.item ("width") as l_width then
|
||||||
|
Result.set_width (l_width.representation.to_natural_32)
|
||||||
|
end
|
||||||
|
if attached l_json_object.item ("height") as l_height then
|
||||||
|
Result.set_width (l_height.representation.to_natural_32)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
change_window_position (a_session_id: STRING_32; a_window_handle: STRING_32)
|
change_window_position (a_session_id: STRING_32; a_window_handle: STRING_32; an_x: INTEGER_32; an_y: INTEGER_32)
|
||||||
-- POST /session/:sessionId/window/:windowHandle/position
|
-- POST /session/:sessionId/window/:windowHandle/position
|
||||||
-- Change the position of the specified window. If the :windowHandle URL parameter is "current", the currently active window will be moved.
|
-- Change the position of the specified window. If the :windowHandle URL parameter is "current", the currently active window will be moved.
|
||||||
-- URL Parameters:
|
-- URL Parameters:
|
||||||
@@ -648,11 +692,24 @@ feature -- Commands
|
|||||||
-- y - {number} The Y coordinate to position the window at, relative to the upper left corner of the screen.
|
-- y - {number} The Y coordinate to position the window at, relative to the upper left corner of the screen.
|
||||||
-- Potential Errors:
|
-- Potential Errors:
|
||||||
-- NoSuchWindow - If the specified window cannot be found.
|
-- NoSuchWindow - If the specified window cannot be found.
|
||||||
|
local
|
||||||
|
l_json: STRING_32
|
||||||
|
resp: SE_RESPONSE
|
||||||
do
|
do
|
||||||
-- TODO
|
l_json := "[
|
||||||
|
{ "x": $x,
|
||||||
|
"y": $y
|
||||||
|
}
|
||||||
|
]"
|
||||||
|
l_json.replace_substring_all ("$x", an_x.out)
|
||||||
|
l_json.replace_substring_all ("$y", an_y.out)
|
||||||
|
if commnad_executor.is_available then
|
||||||
|
resp := commnad_executor.change_window_position (a_session_id, a_window_handle, l_json)
|
||||||
|
check_response (resp)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
window_position (a_sesion_id: STRING_32; a_window_handle: STRING_32)
|
window_position (a_session_id: STRING_32; a_window_handle: STRING_32): SE_WINDOW
|
||||||
-- GET /session/:sessionId/window/:windowHandle/position
|
-- GET /session/:sessionId/window/:windowHandle/position
|
||||||
-- Get the position of the specified window. If the :windowHandle URL parameter is "current", the position of the currently active window will be returned.
|
-- Get the position of the specified window. If the :windowHandle URL parameter is "current", the position of the currently active window will be returned.
|
||||||
-- URL Parameters:
|
-- URL Parameters:
|
||||||
@@ -661,21 +718,43 @@ feature -- Commands
|
|||||||
-- {x: number, y: number} The X and Y coordinates for the window, relative to the upper left corner of the screen.
|
-- {x: number, y: number} The X and Y coordinates for the window, relative to the upper left corner of the screen.
|
||||||
-- Potential Errors:
|
-- Potential Errors:
|
||||||
-- NoSuchWindow - If the specified window cannot be found.
|
-- NoSuchWindow - If the specified window cannot be found.
|
||||||
|
local
|
||||||
|
resp: SE_RESPONSE
|
||||||
do
|
do
|
||||||
--TODO
|
create Result
|
||||||
|
if commnad_executor.is_available then
|
||||||
|
resp := commnad_executor.window_position (a_session_id, a_window_handle)
|
||||||
|
check_response (resp)
|
||||||
|
if not has_error then
|
||||||
|
if attached resp.value as l_value and then attached {JSON_OBJECT} string_to_json (l_value) as l_json_object then
|
||||||
|
if attached l_json_object.item ("x") as l_x then
|
||||||
|
Result.set_x (l_x.representation.to_integer_32)
|
||||||
|
end
|
||||||
|
if attached l_json_object.item ("y") as l_y then
|
||||||
|
Result.set_y (l_y.representation.to_integer_32)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
window_maximize (a_session_id: STRING_32; a_window_haNdle: STRING_32)
|
window_maximize (a_session_id: STRING_32; a_window_handle: STRING_32)
|
||||||
-- POST /session/:sessionId/window/:windowHandle/maximize
|
-- POST /session/:sessionId/window/:windowHandle/maximize
|
||||||
-- Maximize the specified window if not already maximized. If the :windowHandle URL parameter is "current", the currently active window will be maximized.
|
-- Maximize the specified window if not already maximized. If the :windowHandle URL parameter is "current", the currently active window will be maximized.
|
||||||
-- URL Parameters:
|
-- URL Parameters:
|
||||||
-- :sessionId - ID of the session to route the command to.
|
-- :sessionId - ID of the session to route the command to.
|
||||||
-- Potential Errors:
|
-- Potential Errors:
|
||||||
-- NoSuchWindow - If the specified window cannot be found.
|
-- NoSuchWindow - If the specified window cannot be found.
|
||||||
|
local
|
||||||
|
resp: SE_RESPONSE
|
||||||
do
|
do
|
||||||
|
if commnad_executor.is_available then
|
||||||
|
resp := commnad_executor.window_maximize (a_session_id, a_window_handle)
|
||||||
|
check_response (resp)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
retrieve_cookies (a_session_id: STRING_32)
|
retrieve_cookies (a_session_id: STRING_32): detachable LIST [SE_COOKIE]
|
||||||
-- GET /session/:sessionId/cookie
|
-- GET /session/:sessionId/cookie
|
||||||
-- Retrieve all cookies visible to the current page.
|
-- Retrieve all cookies visible to the current page.
|
||||||
-- URL Parameters:
|
-- URL Parameters:
|
||||||
@@ -684,18 +763,55 @@ feature -- Commands
|
|||||||
-- {Array.<object>} A list of cookies.
|
-- {Array.<object>} A list of cookies.
|
||||||
-- Potential Errors:
|
-- Potential Errors:
|
||||||
-- NoSuchWindow - If the currently selected window has been closed.
|
-- NoSuchWindow - If the currently selected window has been closed.
|
||||||
|
local
|
||||||
|
resp: SE_RESPONSE
|
||||||
|
index: INTEGER
|
||||||
do
|
do
|
||||||
|
-- Check the format of internal json object
|
||||||
|
if commnad_executor.is_available then
|
||||||
|
resp := commnad_executor.retrieve_cookies (a_session_id)
|
||||||
|
check_response (resp)
|
||||||
|
if not has_error then
|
||||||
|
if attached resp.value as l_value and then attached {JSON_ARRAY} string_to_json (l_value) as l_json_array then
|
||||||
|
create {ARRAYED_LIST [SE_COOKIE]} Result.make (10)
|
||||||
|
from
|
||||||
|
index := 1
|
||||||
|
until
|
||||||
|
index > l_json_array.count
|
||||||
|
loop
|
||||||
|
if attached {JSON_VALUE} l_json_array.i_th (index) as json_str then
|
||||||
|
if attached json_to_se_cookie (json_str.representation) as l_item then
|
||||||
|
Result.force (l_item)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
index := index + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
set_cookie (a_session_id: STRING_32)
|
set_cookie (a_session_id: STRING_32; a_cookie: SE_COOKIE)
|
||||||
-- POST /session/:sessionId/cookie
|
-- POST /session/:sessionId/cookie
|
||||||
-- Set a cookie. If the cookie path is not specified, it should be set to "/". Likewise, if the domain is omitted, it should default to the current page's domain.
|
-- Set a cookie. If the cookie path is not specified, it should be set to "/". Likewise, if the domain is omitted, it should default to the current page's domain.
|
||||||
-- URL Parameters:
|
-- URL Parameters:
|
||||||
-- :sessionId - ID of the session to route the command to.
|
-- :sessionId - ID of the session to route the command to.
|
||||||
-- JSON Parameters:
|
-- JSON Parameters:
|
||||||
-- cookie - {object} A JSON object defining the cookie to add.
|
-- cookie - {object} A JSON object defining the cookie to add.
|
||||||
|
local
|
||||||
|
l_data: STRING_32
|
||||||
|
response: SE_RESPONSE
|
||||||
do
|
do
|
||||||
-- TODO
|
l_data := "[
|
||||||
|
{ "cookie": $cookie}
|
||||||
|
]"
|
||||||
|
if commnad_executor.is_available then
|
||||||
|
if attached to_json (a_cookie) as l_json then
|
||||||
|
l_data.replace_substring_all ("$cookie", l_json.representation)
|
||||||
|
response := commnad_executor.set_cookie (a_session_id, l_data)
|
||||||
|
check_response (response)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
delete_cookies (a_session_id: STRING_32)
|
delete_cookies (a_session_id: STRING_32)
|
||||||
@@ -707,8 +823,13 @@ feature -- Commands
|
|||||||
-- InvalidCookieDomain - If the cookie's domain is not visible from the current page.
|
-- InvalidCookieDomain - If the cookie's domain is not visible from the current page.
|
||||||
-- NoSuchWindow - If the currently selected window has been closed.
|
-- NoSuchWindow - If the currently selected window has been closed.
|
||||||
-- UnableToSetCookie - If attempting to set a cookie on a page that does not support cookies (e.g. pages with mime-type text/plain).
|
-- UnableToSetCookie - If attempting to set a cookie on a page that does not support cookies (e.g. pages with mime-type text/plain).
|
||||||
|
local
|
||||||
|
response: SE_RESPONSE
|
||||||
do
|
do
|
||||||
-- TODO
|
if commnad_executor.is_available then
|
||||||
|
response := commnad_executor.delete_cookies (a_session_id)
|
||||||
|
check_response (response)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
delete_cookie_by_name (a_session_id: STRING_32; a_name: STRING_32)
|
delete_cookie_by_name (a_session_id: STRING_32; a_name: STRING_32)
|
||||||
@@ -719,11 +840,16 @@ feature -- Commands
|
|||||||
-- :name - The name of the cookie to delete.
|
-- :name - The name of the cookie to delete.
|
||||||
-- Potential Errors:
|
-- Potential Errors:
|
||||||
-- NoSuchWindow - If the currently selected window has been closed.
|
-- NoSuchWindow - If the currently selected window has been closed.
|
||||||
|
local
|
||||||
|
response: SE_RESPONSE
|
||||||
do
|
do
|
||||||
-- TODO
|
if commnad_executor.is_available then
|
||||||
|
response := commnad_executor.delete_cookie_by_name (a_session_id, a_name)
|
||||||
|
check_response (response)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
page_source (a_session_id: STRING_32)
|
page_source (a_session_id: STRING_32): detachable STRING_32
|
||||||
-- GET /session/:sessionId/source
|
-- GET /session/:sessionId/source
|
||||||
-- Get the current page source.
|
-- Get the current page source.
|
||||||
-- URL Parameters:
|
-- URL Parameters:
|
||||||
@@ -732,10 +858,21 @@ feature -- Commands
|
|||||||
-- {string} The current page source.
|
-- {string} The current page source.
|
||||||
-- Potential Errors:
|
-- Potential Errors:
|
||||||
-- NoSuchWindow - If the currently selected window has been closed.
|
-- NoSuchWindow - If the currently selected window has been closed.
|
||||||
|
local
|
||||||
|
resp: SE_RESPONSE
|
||||||
do
|
do
|
||||||
|
if commnad_executor.is_available then
|
||||||
|
resp := commnad_executor.page_source (a_session_id)
|
||||||
|
check_response (resp)
|
||||||
|
if not has_error then
|
||||||
|
if attached resp.value as l_value then
|
||||||
|
Result := l_value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
page_title (a_session_id: STRING_32)
|
page_title (a_session_id: STRING_32): detachable STRING_32
|
||||||
-- GET /session/:sessionId/title
|
-- GET /session/:sessionId/title
|
||||||
-- Get the current page title.
|
-- Get the current page title.
|
||||||
-- URL Parameters:
|
-- URL Parameters:
|
||||||
@@ -744,11 +881,21 @@ feature -- Commands
|
|||||||
-- {string} The current page title.
|
-- {string} The current page title.
|
||||||
-- Potential Errors:
|
-- Potential Errors:
|
||||||
-- NoSuchWindow - If the currently selected window has been closed.
|
-- NoSuchWindow - If the currently selected window has been closed.
|
||||||
|
local
|
||||||
|
resp: SE_RESPONSE
|
||||||
do
|
do
|
||||||
-- TODO
|
if commnad_executor.is_available then
|
||||||
|
resp := commnad_executor.page_title (a_session_id)
|
||||||
|
check_response (resp)
|
||||||
|
if not has_error then
|
||||||
|
if attached resp.value as l_value then
|
||||||
|
Result := l_value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
search_element (a_session_id: STRING_32)
|
search_element (a_session_id: STRING_32; strategy: STRING_32): detachable WEB_ELEMENT
|
||||||
-- POST /session/:sessionId/element
|
-- POST /session/:sessionId/element
|
||||||
-- Search for an element on the page, starting from the document root. The located element will be returned as a
|
-- Search for an element on the page, starting from the document root. The located element will be returned as a
|
||||||
-- WebElement JSON object. The table below lists the locator strategies that each server should support.
|
-- WebElement JSON object. The table below lists the locator strategies that each server should support.
|
||||||
@@ -775,11 +922,23 @@ feature -- Commands
|
|||||||
-- NoSuchWindow - If the currently selected window has been closed.
|
-- NoSuchWindow - If the currently selected window has been closed.
|
||||||
-- NoSuchElement - If the element cannot be found.
|
-- NoSuchElement - If the element cannot be found.
|
||||||
-- XPathLookupError - If using XPath and the input expression is invalid.
|
-- XPathLookupError - If using XPath and the input expression is invalid.
|
||||||
|
require
|
||||||
|
has_valid_strategy : (create {SE_BY}).is_valid_strategy (strategy)
|
||||||
|
local
|
||||||
|
resp: SE_RESPONSE
|
||||||
do
|
do
|
||||||
-- TODO
|
if commnad_executor.is_available then
|
||||||
|
resp := commnad_executor.search_element (a_session_id, strategy)
|
||||||
|
check_response (resp)
|
||||||
|
if not has_error then
|
||||||
|
if attached {JSON_OBJECT} resp.value as l_value and then attached l_value.item ("ELEMENT") as l_elem then
|
||||||
|
create Result.make (l_elem.representation)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
search_elements (a_session_id: STRING_32)
|
search_elements (a_session_id: STRING_32; strategy: STRING_32): detachable LIST [WEB_ELEMENT]
|
||||||
-- POST /session/:sessionId/elements
|
-- POST /session/:sessionId/elements
|
||||||
-- Search for multiple elements on the page, starting from the document root. The located elements will be returned as a WebElement JSON objects. The table below lists the locator strategies that each server should support. Elements should be returned in the order located in the DOM.
|
-- Search for multiple elements on the page, starting from the document root. The located elements will be returned as a WebElement JSON objects. The table below lists the locator strategies that each server should support. Elements should be returned in the order located in the DOM.
|
||||||
--
|
--
|
||||||
@@ -803,10 +962,34 @@ feature -- Commands
|
|||||||
-- Potential Errors:
|
-- Potential Errors:
|
||||||
-- NoSuchWindow - If the currently selected window has been closed.
|
-- NoSuchWindow - If the currently selected window has been closed.
|
||||||
-- XPathLookupError - If using XPath and the input expression is invalid.
|
-- XPathLookupError - If using XPath and the input expression is invalid.
|
||||||
|
require
|
||||||
|
has_valid_strategy : (create {SE_BY}).is_valid_strategy (strategy)
|
||||||
|
local
|
||||||
|
resp: SE_RESPONSE
|
||||||
|
index: INTEGER
|
||||||
do
|
do
|
||||||
|
if commnad_executor.is_available then
|
||||||
|
resp := commnad_executor.search_elements (a_session_id, strategy)
|
||||||
|
check_response (resp)
|
||||||
|
if not has_error then
|
||||||
|
if attached resp.value as l_value and then attached {JSON_ARRAY} string_to_json (l_value) as l_json_array then
|
||||||
|
create {ARRAYED_LIST [WEB_ELEMENT]} Result.make (10)
|
||||||
|
from
|
||||||
|
index := 1
|
||||||
|
until
|
||||||
|
index > l_json_array.count
|
||||||
|
loop
|
||||||
|
if attached {JSON_OBJECT} l_json_array.i_th (index) as json_str and then attached json_str.item ("ELEMENT") as l_elem then
|
||||||
|
Result.force (create {WEB_ELEMENT}.make (l_elem.representation))
|
||||||
|
end
|
||||||
|
index := index + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
element_active (a_session_id: STRING_32)
|
element_active (a_session_id: STRING_32): detachable WEB_ELEMENT
|
||||||
-- POST /session/:sessionId/element/active
|
-- POST /session/:sessionId/element/active
|
||||||
-- Get the element on the page that currently has focus. The element will be returned as a WebElement JSON object.
|
-- Get the element on the page that currently has focus. The element will be returned as a WebElement JSON object.
|
||||||
-- URL Parameters:
|
-- URL Parameters:
|
||||||
@@ -815,24 +998,35 @@ feature -- Commands
|
|||||||
-- {ELEMENT:string} A WebElement JSON object for the active element.
|
-- {ELEMENT:string} A WebElement JSON object for the active element.
|
||||||
-- Potential Errors:
|
-- Potential Errors:
|
||||||
-- NoSuchWindow - If the currently selected window has been closed.
|
-- NoSuchWindow - If the currently selected window has been closed.
|
||||||
|
local
|
||||||
|
resp : SE_RESPONSE
|
||||||
do
|
do
|
||||||
|
if commnad_executor.is_available then
|
||||||
|
resp := commnad_executor.element_active (a_session_id)
|
||||||
|
check_response (resp)
|
||||||
|
if not has_error then
|
||||||
|
if attached {JSON_OBJECT} resp.value as l_value and then attached l_value.item ("ELEMENT") as l_elem then
|
||||||
|
create Result.make (l_elem.representation)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
element_id (a_session_id: STRING_32)
|
-- element_id (a_session_id: STRING_32; )
|
||||||
-- GET /session/:sessionId/element/:id
|
-- -- GET /session/:sessionId/element/:id
|
||||||
-- Describe the identified element.
|
-- -- Describe the identified element.
|
||||||
-- Note: This command is reserved for future use; its return type is currently undefined.
|
-- -- Note: This command is reserved for future use; its return type is currently undefined.
|
||||||
|
|
||||||
-- URL Parameters:
|
-- -- URL Parameters:
|
||||||
-- :sessionId - ID of the session to route the command to.
|
-- -- :sessionId - ID of the session to route the command to.
|
||||||
-- :id - ID of the element to route the command to.
|
-- -- :id - ID of the element to route the command to.
|
||||||
-- Potential Errors:
|
-- -- Potential Errors:
|
||||||
-- NoSuchWindow - If the currently selected window has been closed.
|
-- -- NoSuchWindow - If the currently selected window has been closed.
|
||||||
-- StaleElementReference - If the element referenced by :id is no longer attached to the page's DOM.
|
-- -- StaleElementReference - If the element referenced by :id is no longer attached to the page's DOM.
|
||||||
do
|
-- do
|
||||||
end
|
-- end
|
||||||
|
|
||||||
search_element_id (a_session_id: STRING_32; an_id: STRING_32)
|
search_element_id_element (a_session_id: STRING_32; an_id: STRING_32; strategy : STRING_32) : detachable WEB_ELEMENT
|
||||||
-- POST /session/:sessionId/element/:id/element
|
-- POST /session/:sessionId/element/:id/element
|
||||||
-- Search for an element on the page, starting from the identified element.
|
-- Search for an element on the page, starting from the identified element.
|
||||||
-- The located element will be returned as a WebElement JSON object.
|
-- The located element will be returned as a WebElement JSON object.
|
||||||
@@ -862,10 +1056,24 @@ feature -- Commands
|
|||||||
-- StaleElementReference - If the element referenced by :id is no longer attached to the page's DOM.
|
-- StaleElementReference - If the element referenced by :id is no longer attached to the page's DOM.
|
||||||
-- NoSuchElement - If the element cannot be found.
|
-- NoSuchElement - If the element cannot be found.
|
||||||
-- XPathLookupError - If using XPath and the input expression is invalid.
|
-- XPathLookupError - If using XPath and the input expression is invalid.
|
||||||
|
require
|
||||||
|
has_valid_strategy : (create {SE_BY}).is_valid_strategy (strategy)
|
||||||
|
local
|
||||||
|
resp: SE_RESPONSE
|
||||||
do
|
do
|
||||||
|
if commnad_executor.is_available then
|
||||||
|
resp := commnad_executor.search_element_id_element (a_session_id,an_id,strategy)
|
||||||
|
check_response (resp)
|
||||||
|
if not has_error then
|
||||||
|
if attached {JSON_OBJECT} resp.value as l_value and then attached l_value.item ("ELEMENT") as l_elem then
|
||||||
|
create Result.make (l_elem.representation)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
search_elements_id (a_session_id: STRING_32; an_id: STRING_32)
|
|
||||||
|
search_elements_id (a_session_id: STRING_32; an_id: STRING_32; strategy : STRING_32) : detachable LIST[WEB_ELEMENT]
|
||||||
-- POST /session/:sessionId/element/:id/elements
|
-- POST /session/:sessionId/element/:id/elements
|
||||||
-- Search for multiple elements on the page, starting from the identified element.
|
-- Search for multiple elements on the page, starting from the identified element.
|
||||||
-- The located elements will be returned as a WebElement JSON objects.
|
-- The located elements will be returned as a WebElement JSON objects.
|
||||||
@@ -894,7 +1102,21 @@ feature -- Commands
|
|||||||
-- NoSuchWindow - If the currently selected window has been closed.
|
-- NoSuchWindow - If the currently selected window has been closed.
|
||||||
-- StaleElementReference - If the element referenced by :id is no longer attached to the page's DOM.
|
-- StaleElementReference - If the element referenced by :id is no longer attached to the page's DOM.
|
||||||
-- XPathLookupError - If using XPath and the input expression is invalid.
|
-- XPathLookupError - If using XPath and the input expression is invalid.
|
||||||
|
require
|
||||||
|
has_valid_strategy : (create {SE_BY}).is_valid_strategy (strategy)
|
||||||
|
local
|
||||||
|
resp : SE_RESPONSE
|
||||||
do
|
do
|
||||||
|
if commnad_executor.is_available then
|
||||||
|
resp := commnad_executor.search_element_id_elements (a_session_id,an_id,strategy)
|
||||||
|
check_response (resp)
|
||||||
|
if not has_error then
|
||||||
|
-- if attached {JSON_OBJECT} resp.value as l_value and then attached l_value.item ("ELEMENT") as l_elem then
|
||||||
|
-- create Result.make (l_elem.representation)
|
||||||
|
-- end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
element_click (a_session_id: STRING_32; an_id: STRING_32)
|
element_click (a_session_id: STRING_32; an_id: STRING_32)
|
||||||
@@ -1604,7 +1826,7 @@ feature {NONE} -- Implementation
|
|||||||
|
|
||||||
new_session (value: STRING_32; to: STRING_32): detachable SE_SESSION
|
new_session (value: STRING_32; to: STRING_32): detachable SE_SESSION
|
||||||
local
|
local
|
||||||
l_rep : STRING_32
|
l_rep: STRING_32
|
||||||
do
|
do
|
||||||
if to.is_case_insensitive_equal ("session") then
|
if to.is_case_insensitive_equal ("session") then
|
||||||
if attached {JSON_OBJECT} string_to_json (value) as l_value then
|
if attached {JSON_OBJECT} string_to_json (value) as l_value then
|
||||||
|
|||||||
@@ -163,26 +163,137 @@ feature
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
--POST /session/:sessionId/ime/activate Make an engines that is available (appears on the listreturned by getAvailableEngines) active.
|
|
||||||
--POST /session/:sessionId/frame Change focus to another frame on the page.
|
--POST /session/:sessionId/frame Change focus to another frame on the page.
|
||||||
--POST /session/:sessionId/window Change focus to another window.
|
|
||||||
--DELETE /session/:sessionId/window Close the current window.
|
cmd_session_window_tmpl : STRING ="session/$id/window"
|
||||||
--POST /session/:sessionId/window/:windowHandle/size Change the size of the specified window.
|
|
||||||
--GET /session/:sessionId/window/:windowHandle/size Get the size of the specified window.
|
cmd_session_window (id: STRING_32): STRING_32
|
||||||
--POST /session/:sessionId/window/:windowHandle/position Change the position of the specified window.
|
do
|
||||||
--GET /session/:sessionId/window/:windowHandle/position Get the position of the specified window.
|
create Result.make_from_string (cmd_session_window_tmpl)
|
||||||
--POST /session/:sessionId/window/:windowHandle/maximize Maximize the specified window if not already maximized.
|
Result.replace_substring_all ("$id", id)
|
||||||
--GET /session/:sessionId/cookie Retrieve all cookies visible to the current page.
|
end
|
||||||
--POST /session/:sessionId/cookie Set a cookie.
|
|
||||||
--DELETE /session/:sessionId/cookie Delete all cookies visible to the current page.
|
|
||||||
--DELETE /session/:sessionId/cookie/:name Delete the cookie with the given name.
|
cmd_session_window_size_tmpl : STRING ="session/$id/window/$windowHandle/size"
|
||||||
--GET /session/:sessionId/source Get the current page source.
|
|
||||||
--GET /session/:sessionId/title Get the current page title.
|
cmd_session_window_size (id: STRING_32; window_handle: STRING_32): STRING_32
|
||||||
--POST /session/:sessionId/element Search for an element on the page, starting from the document root.
|
do
|
||||||
--POST /session/:sessionId/elements Search for multiple elements on the page, starting from the document root.
|
create Result.make_from_string (cmd_session_window_size_tmpl)
|
||||||
--POST /session/:sessionId/element/active Get the element on the page that currently has focus.
|
Result.replace_substring_all ("$id", id)
|
||||||
|
Result.replace_substring_all ("$windowHandle", window_handle)
|
||||||
|
end
|
||||||
|
|
||||||
|
cmd_session_window_position_tmpl : STRING ="session/$id/window/$windowHandle/position"
|
||||||
|
|
||||||
|
cmd_session_window_position (id: STRING_32; window_handle: STRING_32): STRING_32
|
||||||
|
do
|
||||||
|
create Result.make_from_string (cmd_session_window_position_tmpl)
|
||||||
|
Result.replace_substring_all ("$id", id)
|
||||||
|
Result.replace_substring_all ("$windowHandle", window_handle)
|
||||||
|
end
|
||||||
|
|
||||||
|
cmd_session_window_maximize_tmpl : STRING ="session/$id/window/$windowHandle/maximize"
|
||||||
|
|
||||||
|
cmd_session_window_maximize (id: STRING_32; window_handle: STRING_32): STRING_32
|
||||||
|
do
|
||||||
|
create Result.make_from_string (cmd_session_window_maximize_tmpl)
|
||||||
|
Result.replace_substring_all ("$id", id)
|
||||||
|
Result.replace_substring_all ("$windowHandle", window_handle)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
cmd_session_cookie_tmpl : STRING ="session/$id/cookie"
|
||||||
|
|
||||||
|
cmd_session_cookie (id: STRING_32): STRING_32
|
||||||
|
do
|
||||||
|
create Result.make_from_string (cmd_session_cookie_tmpl)
|
||||||
|
Result.replace_substring_all ("$id", id)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
cmd_session_cookie_delte_tmpl : STRING ="session/$id/cookie/$name"
|
||||||
|
|
||||||
|
cmd_session_cookie_delete (id: STRING_32;name : STRING_32): STRING_32
|
||||||
|
do
|
||||||
|
create Result.make_from_string (cmd_session_cookie_delte_tmpl)
|
||||||
|
Result.replace_substring_all ("$id", id)
|
||||||
|
Result.replace_substring_all ("$name", name)
|
||||||
|
end
|
||||||
|
|
||||||
|
cmd_session_source_tmpl : STRING ="session/$id/source"
|
||||||
|
|
||||||
|
cmd_session_source (id: STRING_32): STRING_32
|
||||||
|
do
|
||||||
|
create Result.make_from_string (cmd_session_source_tmpl)
|
||||||
|
Result.replace_substring_all ("$id", id)
|
||||||
|
end
|
||||||
|
|
||||||
|
cmd_session_title_tmpl : STRING ="session/$id/title"
|
||||||
|
|
||||||
|
cmd_session_title (id: STRING_32): STRING_32
|
||||||
|
do
|
||||||
|
create Result.make_from_string (cmd_session_source_tmpl)
|
||||||
|
Result.replace_substring_all ("$id", id)
|
||||||
|
end
|
||||||
|
|
||||||
|
cmd_session_element_tmpl : STRING ="session/$id/element"
|
||||||
|
|
||||||
|
cmd_session_element (id: STRING_32): STRING_32
|
||||||
|
do
|
||||||
|
create Result.make_from_string (cmd_session_element_tmpl)
|
||||||
|
Result.replace_substring_all ("$id", id)
|
||||||
|
end
|
||||||
|
|
||||||
|
cmd_session_elements_tmpl : STRING ="session/$id/elements"
|
||||||
|
|
||||||
|
cmd_session_elements (id: STRING_32): STRING_32
|
||||||
|
do
|
||||||
|
create Result.make_from_string (cmd_session_elements_tmpl)
|
||||||
|
Result.replace_substring_all ("$id", id)
|
||||||
|
end
|
||||||
|
|
||||||
|
cmd_session_element_active_tmpl : STRING ="session/$id/element/active"
|
||||||
|
|
||||||
|
cmd_session_element_active (id: STRING_32): STRING_32
|
||||||
|
do
|
||||||
|
create Result.make_from_string (cmd_session_element_active_tmpl)
|
||||||
|
Result.replace_substring_all ("$id", id)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
cmd_session_element_id_tmpl : STRING ="session/$sessionId/element/$id"
|
||||||
|
|
||||||
|
cmd_session_element_id (sessionId: STRING_32; id : STRING_32 ): STRING_32
|
||||||
|
do
|
||||||
|
create Result.make_from_string (cmd_session_element_id_tmpl)
|
||||||
|
Result.replace_substring_all ("$sessionId", sessionId)
|
||||||
|
Result.replace_substring_all ("$id", id)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
--GET /session/:sessionId/element/:id Describe the identified element.
|
--GET /session/:sessionId/element/:id Describe the identified element.
|
||||||
--POST /session/:sessionId/element/:id/element Search for an element on the page, starting from the identified element.
|
|
||||||
|
cmd_session_element_id_element_tmpl : STRING ="session/$sessionId/element/$id/element"
|
||||||
|
|
||||||
|
cmd_session_element_id_element (sessionId: STRING_32; id : STRING_32 ): STRING_32
|
||||||
|
do
|
||||||
|
create Result.make_from_string (cmd_session_element_id_element_tmpl)
|
||||||
|
Result.replace_substring_all ("$sessionId", sessionId)
|
||||||
|
Result.replace_substring_all ("$id", id)
|
||||||
|
end
|
||||||
|
|
||||||
|
cmd_session_element_id_elements_tmpl : STRING ="session/$sessionId/element/$id/elements"
|
||||||
|
|
||||||
|
cmd_session_element_id_elements (sessionId: STRING_32; id : STRING_32 ): STRING_32
|
||||||
|
do
|
||||||
|
create Result.make_from_string (cmd_session_element_id_elements_tmpl)
|
||||||
|
Result.replace_substring_all ("$sessionId", sessionId)
|
||||||
|
Result.replace_substring_all ("$id", id)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--POST /session/:sessionId/element/:id/elements Search for multiple elements on the page, starting from the identified element.
|
--POST /session/:sessionId/element/:id/elements Search for multiple elements on the page, starting from the identified element.
|
||||||
--POST /session/:sessionId/element/:id/click Click on an element.
|
--POST /session/:sessionId/element/:id/click Click on an element.
|
||||||
--POST /session/:sessionId/element/:id/submit Submit a FORM element.
|
--POST /session/:sessionId/element/:id/submit Submit a FORM element.
|
||||||
|
|||||||
155
library/test/selenium/src/se_by.e
Normal file
155
library/test/selenium/src/se_by.e
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
note
|
||||||
|
description: "Objects used to locate elements within a document"
|
||||||
|
author: ""
|
||||||
|
date: "$Date$"
|
||||||
|
revision: "$Revision$"
|
||||||
|
|
||||||
|
class
|
||||||
|
SE_BY
|
||||||
|
inherit
|
||||||
|
JSON_HELPER
|
||||||
|
SE_LOCATOR_STRATEGY_CONSTANTS
|
||||||
|
|
||||||
|
create default_create
|
||||||
|
|
||||||
|
feature -- Access
|
||||||
|
id (an_id : STRING_32; value : STRING_32 ) : STRING_32
|
||||||
|
-- return a STRING representing a JSON
|
||||||
|
-- with strategy by `id' and value `value'
|
||||||
|
-- { "using" : "id", "value":value }
|
||||||
|
do
|
||||||
|
create Result.make_from_string (json_template)
|
||||||
|
Result.replace_substring_all ("$using", se_id)
|
||||||
|
Result.replace_substring_all ("$value", value)
|
||||||
|
ensure
|
||||||
|
has_id_strategy : has_correct_stategy (Result, se_id)
|
||||||
|
end
|
||||||
|
|
||||||
|
name (an_id : STRING_32; value : STRING_32 ) : STRING_32
|
||||||
|
-- return a STRING representing a JSON
|
||||||
|
-- with strategy by `name' and value `value'
|
||||||
|
-- { "using" : "name", "value":value }
|
||||||
|
do
|
||||||
|
create Result.make_from_string (json_template)
|
||||||
|
Result.replace_substring_all ("$using", se_name)
|
||||||
|
Result.replace_substring_all ("$value", value)
|
||||||
|
ensure
|
||||||
|
has_name_strategy : has_correct_stategy (Result, se_name)
|
||||||
|
end
|
||||||
|
|
||||||
|
class_name (an_id : STRING_32; value : STRING_32 ) : STRING_32
|
||||||
|
-- return a STRING representing a JSON
|
||||||
|
-- with strategy by `class name' and value `value'
|
||||||
|
-- { "using" : "class name", "value":value }
|
||||||
|
do
|
||||||
|
create Result.make_from_string (json_template)
|
||||||
|
Result.replace_substring_all ("$using", se_class_name)
|
||||||
|
Result.replace_substring_all ("$value", value)
|
||||||
|
ensure
|
||||||
|
has_class_name_strategy : has_correct_stategy (Result, se_class_name)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
css_selector (an_id : STRING_32; value : STRING_32 ) : STRING_32
|
||||||
|
-- return a STRING representing a JSON
|
||||||
|
-- with strategy by `css selector' and value `value'
|
||||||
|
-- { "using" : "css selector", "value":value }
|
||||||
|
do
|
||||||
|
create Result.make_from_string (json_template)
|
||||||
|
Result.replace_substring_all ("$using", se_css_selector)
|
||||||
|
Result.replace_substring_all ("$value", value)
|
||||||
|
ensure
|
||||||
|
has_css_selector_strategy : has_correct_stategy (Result, se_css_selector)
|
||||||
|
end
|
||||||
|
|
||||||
|
link_text (an_id : STRING_32; value : STRING_32 ) : STRING_32
|
||||||
|
-- return a STRING representing a JSON
|
||||||
|
-- with strategy by `link text' and value `value'
|
||||||
|
-- { "using" : "link text", "value":value }
|
||||||
|
do
|
||||||
|
create Result.make_from_string (json_template)
|
||||||
|
Result.replace_substring_all ("$using", se_link_text)
|
||||||
|
Result.replace_substring_all ("$value", value)
|
||||||
|
ensure
|
||||||
|
has_link_text_strategy : has_correct_stategy (Result, se_link_text)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
partial_link_text (an_id : STRING_32; value : STRING_32 ) : STRING_32
|
||||||
|
-- return a STRING representing a JSON
|
||||||
|
-- with strategy by `partial link text' and value `value'
|
||||||
|
-- { "using" : "partial link text", "value":value }
|
||||||
|
do
|
||||||
|
create Result.make_from_string (json_template)
|
||||||
|
Result.replace_substring_all ("$using", se_partial_link_text)
|
||||||
|
Result.replace_substring_all ("$value", value)
|
||||||
|
ensure
|
||||||
|
has_partial_link_text_strategy : has_correct_stategy (Result, se_partial_link_text)
|
||||||
|
end
|
||||||
|
|
||||||
|
tag_name (an_id : STRING_32; value : STRING_32 ) : STRING_32
|
||||||
|
-- return a STRING representing a JSON
|
||||||
|
-- with strategy by `tag name' and value `value'
|
||||||
|
-- { "using" : "tag name", "value":value }
|
||||||
|
do
|
||||||
|
create Result.make_from_string (json_template)
|
||||||
|
Result.replace_substring_all ("$using", se_tag_name)
|
||||||
|
Result.replace_substring_all ("$value", value)
|
||||||
|
ensure
|
||||||
|
has_tag_name_strategy : has_correct_stategy (Result, se_tag_name)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
xpath (an_id : STRING_32; value : STRING_32 ) : STRING_32
|
||||||
|
-- return a STRING representing a JSON
|
||||||
|
-- with strategy by `xpath' and value `value'
|
||||||
|
-- { "using" : "xpath", "value":value }
|
||||||
|
do
|
||||||
|
create Result.make_from_string (json_template)
|
||||||
|
Result.replace_substring_all ("$using", se_xpath)
|
||||||
|
Result.replace_substring_all ("$value", value)
|
||||||
|
ensure
|
||||||
|
has_xpath_strategy : has_correct_stategy (Result, se_xpath)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
feature -- Query
|
||||||
|
has_correct_stategy (data: STRING_32; strategy : STRING_32) : BOOLEAN
|
||||||
|
do
|
||||||
|
if attached {JSON_OBJECT} string_to_json(data) as l_json then
|
||||||
|
if attached l_json.item ("using") as l_using then
|
||||||
|
Result := (l_using.representation).is_case_insensitive_equal_general ("%""+strategy+"%"")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
is_valid_strategy (data : STRING_32) : BOOLEAN
|
||||||
|
-- if data is using on of the following strategies
|
||||||
|
-- class name
|
||||||
|
-- css selector
|
||||||
|
-- id
|
||||||
|
-- name
|
||||||
|
-- link text
|
||||||
|
-- partial link text
|
||||||
|
-- tag name
|
||||||
|
-- xpath
|
||||||
|
-- return True in othercase False
|
||||||
|
do
|
||||||
|
Result := has_correct_stategy (data, se_class_name) or else
|
||||||
|
has_correct_stategy (data, se_css_selector) or else
|
||||||
|
has_correct_stategy (data, se_id) or else
|
||||||
|
has_correct_stategy (data, se_link_text) or else
|
||||||
|
has_correct_stategy (data, se_name) or else
|
||||||
|
has_correct_stategy (data, se_partial_link_text) or else
|
||||||
|
has_correct_stategy (data, se_tag_name) or else
|
||||||
|
has_correct_stategy (data, se_xpath)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
feature {NONE} -- Implementation
|
||||||
|
json_template : String = "[
|
||||||
|
{"using" :"$using",
|
||||||
|
"value" : "$value"}
|
||||||
|
]"
|
||||||
|
end
|
||||||
96
library/test/selenium/src/se_cookie.e
Normal file
96
library/test/selenium/src/se_cookie.e
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
note
|
||||||
|
description: "bject that describe a cookie. When returning Cookie objects, the server should only omit an optional field if it is incapable of providing the information."
|
||||||
|
author: ""
|
||||||
|
date: "$Date$"
|
||||||
|
revision: "$Revision$"
|
||||||
|
|
||||||
|
class
|
||||||
|
SE_COOKIE
|
||||||
|
|
||||||
|
create
|
||||||
|
default_create, make_with_values
|
||||||
|
|
||||||
|
feature -- Initialization
|
||||||
|
|
||||||
|
make_with_values (a_name: STRING_32; a_value: STRING_32; a_path: STRING_32; a_domain: STRING_32)
|
||||||
|
do
|
||||||
|
set_name (a_name)
|
||||||
|
set_path (a_path)
|
||||||
|
set_value (a_value)
|
||||||
|
set_domain (a_domain)
|
||||||
|
end
|
||||||
|
|
||||||
|
feature -- Access
|
||||||
|
|
||||||
|
name: detachable STRING_32
|
||||||
|
--The name of the cookie.
|
||||||
|
|
||||||
|
value: detachable STRING_32
|
||||||
|
-- The cookie value.
|
||||||
|
|
||||||
|
path: detachable STRING_32
|
||||||
|
--(Optional) The cookie path
|
||||||
|
|
||||||
|
domain: detachable STRING_32
|
||||||
|
--(Optional) The domain the cookie is visible to.
|
||||||
|
|
||||||
|
is_secure: BOOLEAN
|
||||||
|
--(Optional) Whether the cookie is a secure cookie
|
||||||
|
|
||||||
|
expiry: NATURAL_32
|
||||||
|
-- (Optional) When the cookie expires, specified in seconds since midnight, January 1, 1970 UTC.1
|
||||||
|
|
||||||
|
feature -- Change Element
|
||||||
|
|
||||||
|
set_name (a_name: STRING_32)
|
||||||
|
do
|
||||||
|
name := a_name
|
||||||
|
ensure
|
||||||
|
assigned_name: name ~ a_name
|
||||||
|
end
|
||||||
|
|
||||||
|
set_value (a_value: STRING_32)
|
||||||
|
do
|
||||||
|
value := a_value
|
||||||
|
ensure
|
||||||
|
assigned_value: value ~ a_value
|
||||||
|
end
|
||||||
|
|
||||||
|
set_path (a_path: STRING_32)
|
||||||
|
do
|
||||||
|
path := a_path
|
||||||
|
ensure
|
||||||
|
assigned_path: path ~ a_path
|
||||||
|
end
|
||||||
|
|
||||||
|
set_domain (a_domain: STRING_32)
|
||||||
|
do
|
||||||
|
domain := a_domain
|
||||||
|
ensure
|
||||||
|
assigned_domain: domain ~ a_domain
|
||||||
|
end
|
||||||
|
|
||||||
|
secure
|
||||||
|
-- set the cookie as secure
|
||||||
|
do
|
||||||
|
is_secure := True
|
||||||
|
ensure
|
||||||
|
is_secure: is_secure
|
||||||
|
end
|
||||||
|
|
||||||
|
insecure
|
||||||
|
-- set the cookie as insecure
|
||||||
|
do
|
||||||
|
is_secure := False
|
||||||
|
ensure
|
||||||
|
is_not_secure: not is_secure
|
||||||
|
end
|
||||||
|
|
||||||
|
set_expiry (an_expiry: NATURAL)
|
||||||
|
do
|
||||||
|
expiry := an_expiry
|
||||||
|
ensure
|
||||||
|
assigned_expiry: expiry ~ an_expiry
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
28
library/test/selenium/src/se_locator_strategy_constants.e
Normal file
28
library/test/selenium/src/se_locator_strategy_constants.e
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
note
|
||||||
|
description: "Summary description for {SE_LOCATOR_STRATEGY_CONSTANTS}."
|
||||||
|
author: ""
|
||||||
|
date: "$Date$"
|
||||||
|
revision: "$Revision$"
|
||||||
|
|
||||||
|
deferred class
|
||||||
|
SE_LOCATOR_STRATEGY_CONSTANTS
|
||||||
|
|
||||||
|
feature -- Constants
|
||||||
|
se_class_name : STRING_32 = "class name"
|
||||||
|
|
||||||
|
se_css_selector : STRING_32 = "css selector"
|
||||||
|
|
||||||
|
se_id : STRING_32 = "id"
|
||||||
|
|
||||||
|
se_name : STRING_32 = "name"
|
||||||
|
|
||||||
|
se_link_text : STRING_32 = "link text"
|
||||||
|
|
||||||
|
se_partial_link_text : STRING_32 = "partial link text"
|
||||||
|
|
||||||
|
se_tag_name : STRING_32 = "tag name"
|
||||||
|
|
||||||
|
se_xpath : STRING_32 = "xpath"
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
48
library/test/selenium/src/se_window.e
Normal file
48
library/test/selenium/src/se_window.e
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
note
|
||||||
|
description: "Summary description for {SE_WINDOW}."
|
||||||
|
author: ""
|
||||||
|
date: "$Date$"
|
||||||
|
revision: "$Revision$"
|
||||||
|
|
||||||
|
class
|
||||||
|
SE_WINDOW
|
||||||
|
create
|
||||||
|
default_create,
|
||||||
|
make_with_values
|
||||||
|
|
||||||
|
feature -- Initialization
|
||||||
|
|
||||||
|
make_with_values (a_width : NATURAL_32; a_height : NATURAL_32)
|
||||||
|
do
|
||||||
|
set_width (a_width)
|
||||||
|
set_height (a_height)
|
||||||
|
end
|
||||||
|
|
||||||
|
feature -- Access
|
||||||
|
--width: number, height: number} The size of the window.
|
||||||
|
width : NATURAL_32
|
||||||
|
height : NATURAL_32
|
||||||
|
x,y : INTEGER_32
|
||||||
|
|
||||||
|
feature -- Change Element
|
||||||
|
set_width (a_width : NATURAL_32)
|
||||||
|
do
|
||||||
|
width := a_width
|
||||||
|
end
|
||||||
|
|
||||||
|
set_height (a_height : NATURAL_32)
|
||||||
|
do
|
||||||
|
height := a_height
|
||||||
|
end
|
||||||
|
|
||||||
|
set_x (an_x : INTEGER_32)
|
||||||
|
do
|
||||||
|
x := an_x
|
||||||
|
end
|
||||||
|
|
||||||
|
set_y (an_y : INTEGER_32)
|
||||||
|
do
|
||||||
|
y := an_y
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
note
|
|
||||||
description: "Object that describe a cookie. When returning Cookie objects, the server should only omit an optional field if it is incapable of providing the information."
|
|
||||||
author: ""
|
|
||||||
date: "$Date$"
|
|
||||||
revision: "$Revision$"
|
|
||||||
|
|
||||||
class
|
|
||||||
WEB_DRIVER_COOKIE
|
|
||||||
|
|
||||||
create
|
|
||||||
make
|
|
||||||
feature {NONE}-- Initialization
|
|
||||||
make (a_name : STRING_32; a_value: STRING_32)
|
|
||||||
do
|
|
||||||
set_name (a_name)
|
|
||||||
set_value (a_value)
|
|
||||||
end
|
|
||||||
|
|
||||||
feature -- Access
|
|
||||||
name : STRING_32
|
|
||||||
--The name of the cookie.
|
|
||||||
|
|
||||||
value : STRING_32
|
|
||||||
-- The cookie value.
|
|
||||||
|
|
||||||
path : detachable STRING_32
|
|
||||||
--(Optional) The cookie path
|
|
||||||
|
|
||||||
domain : detachable STRING_32
|
|
||||||
--(Optional) The domain the cookie is visible to.
|
|
||||||
|
|
||||||
secure : BOOLEAN
|
|
||||||
--(Optional) Whether the cookie is a secure cookie
|
|
||||||
|
|
||||||
expiry : NATURAL_32
|
|
||||||
-- (Optional) When the cookie expires, specified in seconds since midnight, January 1, 1970 UTC.1
|
|
||||||
|
|
||||||
feature -- Change Element
|
|
||||||
set_name (a_name:STRING_32)
|
|
||||||
do
|
|
||||||
name := a_name
|
|
||||||
end
|
|
||||||
|
|
||||||
set_value (a_value:STRING_32)
|
|
||||||
do
|
|
||||||
value := a_value
|
|
||||||
end
|
|
||||||
|
|
||||||
set_path (a_path : STRING_32)
|
|
||||||
do
|
|
||||||
path := a_path
|
|
||||||
end
|
|
||||||
|
|
||||||
set_domain (a_domain : STRING_32)
|
|
||||||
do
|
|
||||||
domain := a_domain
|
|
||||||
end
|
|
||||||
|
|
||||||
set_secure (a_value : BOOLEAN)
|
|
||||||
do
|
|
||||||
secure := a_value
|
|
||||||
end
|
|
||||||
|
|
||||||
set_expiry ( a_value : NATURAL_32)
|
|
||||||
do
|
|
||||||
expiry := a_value
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
@@ -9,17 +9,17 @@ class
|
|||||||
create
|
create
|
||||||
make
|
make
|
||||||
feature
|
feature
|
||||||
make
|
make ( an_element : STRING_32)
|
||||||
do
|
do
|
||||||
|
set_element (an_element)
|
||||||
end
|
end
|
||||||
feature -- Access
|
feature -- Access
|
||||||
element : detachable STRING_32
|
element : STRING_32
|
||||||
--The opaque ID assigned to the element by the server.
|
--The opaque ID assigned to the element by the server.
|
||||||
--This ID should be used in all subsequent commands issued against the element.
|
--This ID should be used in all subsequent commands issued against the element.
|
||||||
|
|
||||||
feature -- Change Element
|
feature -- Change Element
|
||||||
set_element (an_element : STRING)
|
set_element (an_element : STRING_32)
|
||||||
do
|
do
|
||||||
element := an_element
|
element := an_element
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -18,6 +18,69 @@ create
|
|||||||
feature {NONE} -- Initialization
|
feature {NONE} -- Initialization
|
||||||
|
|
||||||
make
|
make
|
||||||
|
do
|
||||||
|
-- test_back_forward_refesh
|
||||||
|
-- test_status_sessions_timeout
|
||||||
|
test_ime_actions
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
test_ime_actions
|
||||||
|
local
|
||||||
|
web_driver: SE_JSON_WIRE_PROTOCOL
|
||||||
|
capabilities: SE_CAPABILITIES
|
||||||
|
timeout: SE_TIMEOUT_TYPE
|
||||||
|
|
||||||
|
do
|
||||||
|
-- check if the selenium Remote WebDriver is up and running.
|
||||||
|
create web_driver.make
|
||||||
|
if attached web_driver.status as l_status then
|
||||||
|
create capabilities.make
|
||||||
|
capabilities.set_browser_name ("chrome")
|
||||||
|
if attached web_driver.create_session_with_desired_capabilities (capabilities) as l_session then
|
||||||
|
print ("%NSessionId:" + l_session.session_id)
|
||||||
|
-- available engines
|
||||||
|
if attached web_driver.ime_available_engines (l_session.session_id) as l_available then
|
||||||
|
check
|
||||||
|
has_no_error : not web_driver.has_error
|
||||||
|
end
|
||||||
|
else
|
||||||
|
check has_error : web_driver.has_error end
|
||||||
|
-- ime_active_engine
|
||||||
|
check
|
||||||
|
no_active_engine : web_driver.ime_active_engine (l_session.session_id) = Void
|
||||||
|
has_error : web_driver.has_error
|
||||||
|
end
|
||||||
|
-- ime_activated
|
||||||
|
check
|
||||||
|
no_active: not web_driver.ime_activated (l_session.session_id)
|
||||||
|
has_error : web_driver.has_error
|
||||||
|
end
|
||||||
|
-- ime_deactivate
|
||||||
|
web_driver.ime_deactivate (l_session.session_id)
|
||||||
|
check
|
||||||
|
has_error : web_driver.has_error
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ime_activate
|
||||||
|
web_driver.ime_activate (l_session.session_id,"UNKown")
|
||||||
|
check
|
||||||
|
has_error : web_driver.has_error
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
create capabilities.make
|
||||||
|
capabilities.set_browser_name ("firefox")
|
||||||
|
if attached web_driver.create_session_with_desired_capabilities (capabilities) as l_session then
|
||||||
|
print ("%NSessionId:" + l_session.session_id)
|
||||||
|
check
|
||||||
|
no_error_firefox: not web_driver.has_error
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
test_status_sessions_timeout
|
||||||
local
|
local
|
||||||
web_driver: SE_JSON_WIRE_PROTOCOL
|
web_driver: SE_JSON_WIRE_PROTOCOL
|
||||||
capabilities: SE_CAPABILITIES
|
capabilities: SE_CAPABILITIES
|
||||||
@@ -27,9 +90,38 @@ feature {NONE} -- Initialization
|
|||||||
create web_driver.make
|
create web_driver.make
|
||||||
if attached web_driver.status as l_status then
|
if attached web_driver.status as l_status then
|
||||||
print (l_status)
|
print (l_status)
|
||||||
|
-- create a new session
|
||||||
|
create capabilities.make
|
||||||
|
capabilities.set_browser_name ("chrome")
|
||||||
|
if attached web_driver.create_session_with_desired_capabilities (capabilities) as l_session2 then
|
||||||
|
print ("%NSessionId:" + l_session2.session_id)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- retrieve sessions
|
||||||
|
if attached web_driver.sessions as l_session then
|
||||||
|
across
|
||||||
|
l_session as l_item
|
||||||
|
loop
|
||||||
|
print (l_item)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if attached web_driver.create_session_with_desired_capabilities (capabilities) as l_session2 then
|
||||||
|
print ("%NSessionId:" + l_session2.session_id)
|
||||||
|
create timeout.make ("script", 1)
|
||||||
|
web_driver.set_session_timeouts (l_session2.session_id, timeout)
|
||||||
|
end
|
||||||
|
|
||||||
|
else
|
||||||
|
print ("The selenium server is not accesible")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
test_back_forward_refesh
|
||||||
|
local
|
||||||
|
web_driver: SE_JSON_WIRE_PROTOCOL
|
||||||
|
capabilities: SE_CAPABILITIES
|
||||||
|
file : RAW_FILE
|
||||||
|
do
|
||||||
|
create web_driver.make
|
||||||
-- create a new session
|
-- create a new session
|
||||||
create capabilities.make
|
create capabilities.make
|
||||||
capabilities.set_browser_name ("chrome")
|
capabilities.set_browser_name ("chrome")
|
||||||
@@ -81,36 +173,22 @@ feature {NONE} -- Initialization
|
|||||||
check
|
check
|
||||||
Has_no_error: not web_driver.has_error
|
Has_no_error: not web_driver.has_error
|
||||||
end
|
end
|
||||||
|
if attached web_driver.screenshot (l_session.session_id) as l_screenshot then
|
||||||
|
check
|
||||||
|
Has_no_error: not web_driver.has_error
|
||||||
|
end
|
||||||
|
create file.make_with_name ("screenshot_"+l_session.session_id+".png")
|
||||||
|
file.open_write
|
||||||
|
file.putstring (l_screenshot)
|
||||||
|
file.close
|
||||||
end
|
end
|
||||||
-- create a new session
|
|
||||||
create capabilities.make
|
|
||||||
capabilities.set_browser_name ("chrome")
|
|
||||||
if attached web_driver.create_session_with_desired_capabilities (capabilities) as l_session then
|
|
||||||
print ("%NSessionId:" + l_session.session_id)
|
|
||||||
create timeout.make ("script", 1)
|
|
||||||
web_driver.set_session_timeouts (l_session.session_id, timeout)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- -- retrieve sessions
|
|
||||||
-- if attached web_driver.sessions as l_session then
|
|
||||||
-- across
|
|
||||||
-- l_session as l_item
|
|
||||||
-- loop
|
|
||||||
-- print (l_item)
|
|
||||||
-- end
|
|
||||||
-- end
|
|
||||||
else
|
|
||||||
print ("The selenium server is not accesible")
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
test_session
|
test_session
|
||||||
local
|
local
|
||||||
h: LIBCURL_HTTP_CLIENT
|
h: LIBCURL_HTTP_CLIENT
|
||||||
session: HTTP_CLIENT_SESSION
|
session: HTTP_CLIENT_SESSION
|
||||||
resp: detachable HTTP_CLIENT_RESPONSE
|
resp: detachable HTTP_CLIENT_RESPONSE
|
||||||
l_location: detachable READABLE_STRING_8
|
|
||||||
body: STRING
|
|
||||||
context: HTTP_CLIENT_REQUEST_CONTEXT
|
context: HTTP_CLIENT_REQUEST_CONTEXT
|
||||||
s: READABLE_STRING_8
|
s: READABLE_STRING_8
|
||||||
do
|
do
|
||||||
|
|||||||
@@ -273,6 +273,23 @@ feature -- Test routines
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test_ime_available_engines
|
||||||
|
local
|
||||||
|
capabilities : SE_CAPABILITIES
|
||||||
|
do
|
||||||
|
if attached wire_protocol.ime_available_engines (session_id) as l_ime_available_engines then
|
||||||
|
assert ("Has no error", not wire_protocol.has_error)
|
||||||
|
across l_ime_available_engines as item loop
|
||||||
|
print (item)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
assert ("Has error :", wire_protocol.has_error)
|
||||||
|
if attached wire_protocol.last_error as l_error then
|
||||||
|
assert ("Status 13", l_error.code = 13)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
feature {NONE}-- Implementation
|
feature {NONE}-- Implementation
|
||||||
wire_protocol: SE_JSON_WIRE_PROTOCOL
|
wire_protocol: SE_JSON_WIRE_PROTOCOL
|
||||||
|
|||||||
69
library/test/selenium/test/test_se_by.e
Normal file
69
library/test/selenium/test/test_se_by.e
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
note
|
||||||
|
description: "[
|
||||||
|
Eiffel tests that can be executed by testing tool.
|
||||||
|
]"
|
||||||
|
author: "EiffelStudio test wizard"
|
||||||
|
date: "$Date$"
|
||||||
|
revision: "$Revision$"
|
||||||
|
testing: "type/manual"
|
||||||
|
|
||||||
|
class
|
||||||
|
TEST_SE_BY
|
||||||
|
|
||||||
|
inherit
|
||||||
|
EQA_TEST_SET
|
||||||
|
redefine
|
||||||
|
on_prepare,
|
||||||
|
on_clean
|
||||||
|
end
|
||||||
|
|
||||||
|
feature {NONE} -- Events
|
||||||
|
|
||||||
|
on_prepare
|
||||||
|
-- <Precursor>
|
||||||
|
do
|
||||||
|
-- assert ("not_implemented", False)
|
||||||
|
end
|
||||||
|
|
||||||
|
on_clean
|
||||||
|
-- <Precursor>
|
||||||
|
do
|
||||||
|
-- assert ("not_implemented", False)
|
||||||
|
end
|
||||||
|
|
||||||
|
feature -- Test routines
|
||||||
|
|
||||||
|
test_valid_strategy_id
|
||||||
|
local
|
||||||
|
l_data : STRING_32
|
||||||
|
do
|
||||||
|
l_data := "[
|
||||||
|
{"using":"id", "value":"test"}
|
||||||
|
]"
|
||||||
|
assert ("Expected true", (create {SE_BY}).is_valid_strategy (l_data))
|
||||||
|
end
|
||||||
|
|
||||||
|
test_valid_strategy_name
|
||||||
|
local
|
||||||
|
l_data : STRING_32
|
||||||
|
do
|
||||||
|
l_data := "[
|
||||||
|
{"using":"name", "value":"test"}
|
||||||
|
]"
|
||||||
|
assert ("Expected true", (create {SE_BY}).is_valid_strategy (l_data))
|
||||||
|
end
|
||||||
|
|
||||||
|
test_wrong_strategy
|
||||||
|
local
|
||||||
|
l_data : STRING_32
|
||||||
|
do
|
||||||
|
l_data := "[
|
||||||
|
{"using":"wrong", "value":"test"}
|
||||||
|
]"
|
||||||
|
assert ("Expected False", not (create {SE_BY}).is_valid_strategy (l_data))
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user