@@ -139,26 +139,33 @@ def source
139139 raise NotImplementedError
140140 end
141141
142- def drag ( node , other , steps , delay = nil )
142+ def drag ( node , other , steps , delay = nil , scroll = true )
143143 x1 , y1 = node . find_position
144- x2 , y2 = other . find_position
145144
146145 mouse . move ( x : x1 , y : y1 )
147146 mouse . down
148147 sleep delay if delay
148+
149+ other . scroll_into_view if scroll
150+
151+ x2 , y2 = other . find_position
149152 mouse . move ( x : x2 , y : y2 , steps : steps )
153+
150154 mouse . up
151155 end
152156
153- def drag_by ( node , x , y , steps , delay = nil )
157+ def drag_by ( node , dx , dy , steps , delay = nil , scroll = true )
154158 x1 , y1 = node . find_position
155- x2 = x1 + x
156- y2 = y1 + y
157159
158160 mouse . move ( x : x1 , y : y1 )
159161 mouse . down
162+
160163 sleep delay if delay
161- mouse . move ( x : x2 , y : y2 , steps : steps )
164+
165+ evaluate ( "window.scrollBy(#{ dx } , #{ dy } )" ) if scroll # should be extracted to Mouse#scroll_by in ferrum
166+
167+ x2 , y2 = node . find_position
168+ mouse . move ( x : x2 + dx , y : y2 + dy , steps : steps )
162169 mouse . up
163170 end
164171
0 commit comments