" I represent a DOM element. For the Responsibility part: Three sentences about my main responsibilities - what I do, what I know. Instance Variables driver: The active WebDriver from which this element was received element: 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 [ | 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 ]