This repository has been archived by the owner on Mar 3, 2020. It is now read-only.
/
driver.rb
180 lines (141 loc) · 3.09 KB
/
driver.rb
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
require "capybara"
require "capybara/webkit/version"
require "capybara/webkit/node"
require "capybara/webkit/connection"
require "capybara/webkit/browser"
require "capybara/webkit/socket_debugger"
require "capybara/webkit/cookie_jar"
require "capybara/webkit/errors"
module Capybara::Webkit
class Driver
attr_reader :browser
def initialize(app, options={})
@app = app
@options = options
@browser = options[:browser] || Browser.new(Connection.new(options))
end
def enable_logging
browser.enable_logging
end
def current_url
browser.current_url
end
def requested_url
browser.requested_url
end
def visit(path)
browser.visit(path)
end
def find(query)
browser.find(query).map { |native| Node.new(self, native) }
end
def source
browser.source
end
def html
browser.body
end
def header(key, value)
browser.header(key, value)
end
def execute_script(script)
value = browser.execute_script script
value.empty? ? nil : value
end
def evaluate_script(script)
browser.evaluate_script script
end
def console_messages
browser.console_messages
end
def error_messages
browser.error_messages
end
def alert_messages
browser.alert_messages
end
def confirm_messages
browser.confirm_messages
end
def prompt_messages
browser.prompt_messages
end
def response_headers
browser.response_headers
end
def status_code
browser.status_code
end
def resize_window(width, height)
browser.resize_window(width, height)
end
def within_frame(frame_id_or_index)
browser.frame_focus(frame_id_or_index)
begin
yield
ensure
browser.frame_focus
end
end
def within_window(selector)
current_window = window_handle
browser.window_focus(selector)
begin
yield
ensure
browser.window_focus(current_window)
end
end
def window_handles
browser.get_window_handles
end
def window_handle
browser.get_window_handle
end
def accept_js_confirms!
browser.accept_js_confirms
end
def dismiss_js_confirms!
browser.reject_js_confirms
end
def accept_js_prompts!
browser.accept_js_prompts
end
def dismiss_js_prompts!
browser.reject_js_prompts
end
def js_prompt_input=(value)
if value.nil?
browser.clear_prompt_text
else
browser.set_prompt_text_to(value)
end
end
def wait?
true
end
def needs_server?
true
end
def wait_until(*args)
end
def reset!
browser.reset!
end
def has_shortcircuit_timeout?
false
end
def save_screenshot(path, options={})
options[:width] ||= 1000
options[:height] ||= 10
browser.render path, options[:width], options[:height]
end
def cookies
@cookie_jar ||= CookieJar.new(browser)
end
def invalid_element_errors
[]
end
private
end
end