This repository has been archived by the owner on May 14, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
element.go
112 lines (92 loc) · 2.68 KB
/
element.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package api
import (
"path"
"strings"
)
type Element struct {
ID string
Session *Session
}
func (e *Element) GetElement(selector Selector) (*Element, error) {
var result struct{ Element string }
if err := e.Session.sendElement(e.ID, "element", "POST", selector, &result); err != nil {
return nil, err
}
return &Element{result.Element, e.Session}, nil
}
func (e *Element) GetElements(selector Selector) ([]*Element, error) {
var results []struct{ Element string }
if err := e.Session.sendElement(e.ID, "elements", "POST", selector, &results); err != nil {
return nil, err
}
elements := []*Element{}
for _, result := range results {
elements = append(elements, &Element{result.Element, e.Session})
}
return elements, nil
}
func (e *Element) GetText() (string, error) {
var text string
if err := e.Session.sendElement(e.ID, "text", "GET", nil, &text); err != nil {
return "", err
}
return text, nil
}
func (e *Element) GetAttribute(attribute string) (string, error) {
var value string
if err := e.Session.sendElement(e.ID, path.Join("attribute", attribute), "GET", nil, &value); err != nil {
return "", err
}
return value, nil
}
func (e *Element) GetCSS(property string) (string, error) {
var value string
if err := e.Session.sendElement(e.ID, path.Join("css", property), "GET", nil, &value); err != nil {
return "", err
}
return value, nil
}
func (e *Element) Click() error {
return e.Session.sendElement(e.ID, "click", "POST", nil, nil)
}
func (e *Element) Clear() error {
return e.Session.sendElement(e.ID, "clear", "POST", nil, nil)
}
func (e *Element) Value(text string) error {
splitText := strings.Split(text, "")
request := struct {
Value []string `json:"value"`
}{splitText}
return e.Session.sendElement(e.ID, "value", "POST", request, nil)
}
func (e *Element) IsSelected() (bool, error) {
var selected bool
if err := e.Session.sendElement(e.ID, "selected", "GET", nil, &selected); err != nil {
return false, err
}
return selected, nil
}
func (e *Element) IsDisplayed() (bool, error) {
var displayed bool
if err := e.Session.sendElement(e.ID, "displayed", "GET", nil, &displayed); err != nil {
return false, err
}
return displayed, nil
}
func (e *Element) IsEnabled() (bool, error) {
var enabled bool
if err := e.Session.sendElement(e.ID, "enabled", "GET", nil, &enabled); err != nil {
return false, err
}
return enabled, nil
}
func (e *Element) Submit() error {
return e.Session.sendElement(e.ID, "submit", "POST", nil, nil)
}
func (e *Element) IsEqualTo(other *Element) (bool, error) {
var equal bool
if err := e.Session.sendElement(e.ID, path.Join("equals", other.ID), "GET", nil, &equal); err != nil {
return false, err
}
return equal, nil
}