WebDriver/src/WebDriver/WebDriver.class.st

103 lines
2.5 KiB
Smalltalk

Class {
#name : #WebDriver,
#superclass : #Object,
#instVars : [
'browser',
'server',
'port',
'sessionId',
'parameters'
],
#category : #WebDriver
}
{ #category : #positioning }
WebDriver >> back [
self send: { } to: 'session/',sessionId,'/back' using: #POST.
]
{ #category : #'as yet unclassified' }
WebDriver >> deleteSession [
"Deletes the session."
self send: {} to: 'session/',sessionId using: #DELETE.
]
{ #category : #'as yet unclassified' }
WebDriver >> findElement: elemSelector using: locStrategy [
^(self send: { #using -> locStrategy. #value -> elemSelector. } to: 'session/',sessionId,'/element' using: #POST) at: #value values first.
]
{ #category : #'as yet unclassified' }
WebDriver >> findElements: elemSelector using: locStrategy [
^(self send: { #using -> locStrategy. #value -> elemSelector. } to: 'session/',sessionId,'/elements' using: #POST) at: #value values.
]
{ #category : #positioning }
WebDriver >> forward [
self send: { } to: 'session/',sessionId,'/forward' using: #POST.
]
{ #category : #initialization }
WebDriver >> initialize: srv port: portnum [
server := srv.
port := portnum.
]
{ #category : #positioning }
WebDriver >> refresh [
self send: { } to: 'session/',sessionId,'/refresh' using: #POST.
]
{ #category : #'as yet unclassified' }
WebDriver >> send: dict to: url using: method [
|result|
result := nil.
ZnClient new
host: server;
port: port;
path: url;
contents: (NeoJSONWriter toString: dict asDictionary);
contentType: ZnMimeType applicationJson;
method: method;
contentReader: [ :entity |
result := (NeoJSONReader on: (entity contents) readStream) propertyNamesAsSymbols: true; next.
];
execute.
^result.
]
{ #category : #initialization }
WebDriver >> server: srv port: portnum [
server := srv.
port := portnum.
]
{ #category : #accessing }
WebDriver >> session [
"Initializes a new WebDriver session."
sessionId := (self send: {} to: 'session' using: #POST) at: #value at: #sessionId.
^sessionId.
]
{ #category : #accessing }
WebDriver >> status [
^ (self send: { } to: 'status' using: #GET) at: #value.
]
{ #category : #positioning }
WebDriver >> title [
^ (self send: { } to: 'session/',sessionId,'/title' using: #GET) at: #value.
]
{ #category : #'as yet unclassified' }
WebDriver >> type: text into: element [
self send: { #text -> text } to: 'session/',sessionId,'/element/',element,'/value' using: #POST.
]
{ #category : #accessing }
WebDriver >> url: url [
"Navigates the browser to the given URL."
self send: { #url -> url } to: 'session/',sessionId,'/url' using: #POST.
]