/
driver.cr
91 lines (69 loc) · 1.74 KB
/
driver.cr
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
class LuckyFlow::Webless::Driver < LuckyFlow::Driver
def self.new(handlers : Array(HTTP::Handler))
new(HTTP::Server.build_middleware(handlers))
end
@browser : LuckyFlow::Webless::Browser
def initialize(handler : HTTP::Handler)
@browser = LuckyFlow::Webless::Browser.new(::Webless::Client.new(handler))
end
def screenshot(path : String)
unsupported
end
def visit(url : String)
@browser.visit(url)
end
def follow(method : String, url : String)
@browser.follow(method, url)
end
def window_size : NamedTuple(width: Int64?, height: Int64?)
unsupported
end
def maximize_window
unsupported
end
def resize_window(width : Int64?, height : Int64?)
unsupported
end
def accept_alert
unsupported
end
def dismiss_alert
unsupported
end
def hover(element : LuckyFlow::Element)
unsupported
end
def find_css(query : String) : Array(LuckyFlow::Element)
@browser.find_css(query).map { |elem| element(query, elem) }
end
def find_xpath(query : String) : Array(LuckyFlow::Element)
@browser.find_xpath(query).map { |elem| element(query, elem) }
end
def current_url : String
@browser.current_url
end
def add_cookie(key : String, value : String)
@browser.add_cookie(key, value)
end
def get_cookie(key : String) : String?
@browser.get_cookie(key)
end
def html : String
@browser.html
end
def submit(request : HTTP::Request)
@browser.submit(request)
end
def reset : Nil
@browser.reset
end
def stop
# do nothing :shrug:
end
def shutdown : Nil
stop
end
private def element(query : String, el : HTML5::Node) : LuckyFlow::Element
LuckyFlow::Webless::Element.new(self, query, el).as(LuckyFlow::Element)
end
end