225 lines
4.8 KiB
Smalltalk
225 lines
4.8 KiB
Smalltalk
"
|
|
I represent a DOM element.
|
|
|
|
For the Responsibility part: Three sentences about my main responsibilities - what I do, what I know.
|
|
|
|
Instance Variables
|
|
driver: <Object> The active WebDriver from which this element was received
|
|
element: <Object> The actual WebDriver element
|
|
|
|
"
|
|
Class {
|
|
#name : #WDElement,
|
|
#superclass : #Object,
|
|
#instVars : [
|
|
'driver',
|
|
'element'
|
|
],
|
|
#category : #'WebDriver-Base'
|
|
}
|
|
|
|
{ #category : #accessing }
|
|
WDElement >> attribute: attr [
|
|
| result |
|
|
|
|
result := self driver
|
|
sendWithSession: { }
|
|
to:
|
|
'element/' , element , '/attribute/'
|
|
, attr
|
|
using: #GET.
|
|
^ result = 'true' ifTrue: [ true ] ifFalse: [ result ].
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
WDElement >> attributes [
|
|
| script result |
|
|
script := 'var items = {}; for (index = 0; index < arguments[0].attributes.length; ++index) { items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value }; return items;'.
|
|
result := driver sendWithSession: { #script -> script . #args -> {{ 'element-6066-11e4-a52e-4f735466cecf' -> element } asDictionary} } asDictionary
|
|
to: 'execute/sync'
|
|
using: #POST.
|
|
^ result.
|
|
]
|
|
|
|
{ #category : #simulating }
|
|
WDElement >> clear [
|
|
|
|
self driver
|
|
sendWithSession: { }
|
|
to: 'element/' , element , '/clear'
|
|
using: #POST
|
|
]
|
|
|
|
{ #category : #simulating }
|
|
WDElement >> click [
|
|
|
|
self driver
|
|
sendWithSession: { }
|
|
to: 'element/' , element , '/click'
|
|
using: #POST
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
WDElement >> computedLabel [
|
|
^ self driver
|
|
sendWithSession: { }
|
|
to: 'element/' , element , '/computedlabel'
|
|
using: #GET
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
WDElement >> computedRole [
|
|
^ self driver
|
|
sendWithSession: { }
|
|
to: 'element/' , element , '/computedrole'
|
|
using: #GET
|
|
]
|
|
|
|
{ #category : #'private - utilities' }
|
|
WDElement >> driver [
|
|
|
|
^ driver
|
|
]
|
|
|
|
{ #category : #'private - utilities' }
|
|
WDElement >> driver: anObject [
|
|
|
|
driver := anObject
|
|
]
|
|
|
|
{ #category : #'private - utilities' }
|
|
WDElement >> element [
|
|
|
|
^ element
|
|
]
|
|
|
|
{ #category : #'private - utilities' }
|
|
WDElement >> element: anObject [
|
|
|
|
element := anObject
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
WDElement >> findElement: elemSelector using: locStrategy [
|
|
|
|
| reply |
|
|
reply := driver
|
|
sendWithSession: {
|
|
(#using -> locStrategy).
|
|
(#value -> elemSelector)
|
|
}
|
|
to: 'element/' , element , '/element'
|
|
using: #POST.
|
|
^ self class new
|
|
driver: driver;
|
|
element: reply values first.
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
WDElement >> findElements: elemSelector using: locStrategy [
|
|
|
|
| reply |
|
|
reply := driver
|
|
sendWithSession: {
|
|
(#using -> locStrategy).
|
|
(#value -> elemSelector)
|
|
}
|
|
to: 'element/' , element , '/elements'
|
|
using: #POST.
|
|
^ reply collect: [ :elem | self class new driver: driver; element: elem values first. ]
|
|
]
|
|
|
|
{ #category : #'private - utilities' }
|
|
WDElement >> inspectionWDElement [
|
|
<inspectorPresentationOrder: 10 title: 'DOM Element'>
|
|
| presenter attrPresenter screenshotPresenter |
|
|
|
|
attrPresenter := SpBoxLayout newTopToBottom
|
|
add: (SpLabelPresenter new label: ('Infos about the "{1}" element:' format: {self name}))
|
|
expand: false
|
|
fill: false
|
|
padding: 5;
|
|
add: self attributes asStringTablePresenter
|
|
expand: true
|
|
fill: true
|
|
padding: 5;
|
|
yourself.
|
|
|
|
screenshotPresenter := SpBoxLayout newTopToBottom
|
|
add: (SpLabelPresenter new label: 'Preview:') expand: false fill: false padding: 5;
|
|
add: (SpImagePresenter new image: (Form fromBinaryStream: (self screenshot readStream)));
|
|
yourself.
|
|
|
|
presenter := SpPanedLayout newTopToBottom
|
|
add: attrPresenter;
|
|
add: screenshotPresenter;
|
|
yourself.
|
|
presenter := SpPresenter new layout: presenter; yourself.
|
|
^ presenter.
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
WDElement >> isEnabled [
|
|
^ self driver
|
|
sendWithSession: { }
|
|
to: 'element/' , element , '/enabled'
|
|
using: #GET
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
WDElement >> isSelected [
|
|
^ self driver
|
|
sendWithSession: { }
|
|
to: 'element/' , element , '/selected'
|
|
using: #GET
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
WDElement >> name [
|
|
^ self driver
|
|
sendWithSession: { }
|
|
to: 'element/' , element , '/name'
|
|
using: #GET
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
WDElement >> property: attr [
|
|
|
|
^ self driver
|
|
sendWithSession: { }
|
|
to:
|
|
'element/' , element , '/property/'
|
|
, attr
|
|
using: #GET
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
WDElement >> rect [
|
|
^ self driver
|
|
sendWithSession: { }
|
|
to: 'element/' , element , '/rect'
|
|
using: #GET
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
WDElement >> screenshot [
|
|
^ (driver sendWithSession: '' to: 'element/',element,'/screenshot' using: #GET) base64Decoded.
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
WDElement >> text [
|
|
^ self driver
|
|
sendWithSession: { }
|
|
to: 'element/' , element , '/text'
|
|
using: #GET
|
|
]
|
|
|
|
{ #category : #simulating }
|
|
WDElement >> value: text [
|
|
|
|
self driver
|
|
sendWithSession: { (#text -> text) }
|
|
to: 'element/' , element , '/value'
|
|
using: #POST
|
|
]
|