puppeteer-ruby 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/docs/Puppeteer.html +2 -2
- data/docs/Puppeteer/AsyncAwaitBehavior.html +1 -1
- data/docs/Puppeteer/Browser.html +254 -144
- data/docs/Puppeteer/BrowserContext.html +1 -1
- data/docs/Puppeteer/BrowserFetcher.html +1 -1
- data/docs/Puppeteer/BrowserRunner.html +1 -1
- data/docs/Puppeteer/BrowserRunner/BrowserProcess.html +1 -1
- data/docs/Puppeteer/CDPSession.html +1 -1
- data/docs/Puppeteer/CDPSession/Error.html +1 -1
- data/docs/Puppeteer/ConcurrentRubyUtils.html +1 -1
- data/docs/Puppeteer/Connection.html +65 -61
- data/docs/Puppeteer/Connection/MessageCallback.html +1 -1
- data/docs/Puppeteer/Connection/ProtocolError.html +1 -1
- data/docs/Puppeteer/Connection/RequestDebugPrinter.html +5 -5
- data/docs/Puppeteer/Connection/ResponseDebugPrinter.html +12 -12
- data/docs/Puppeteer/ConsoleMessage.html +1 -1
- data/docs/Puppeteer/ConsoleMessage/Location.html +1 -1
- data/docs/Puppeteer/DOMWorld.html +32 -32
- data/docs/Puppeteer/DOMWorld/DetachedError.html +1 -1
- data/docs/Puppeteer/DebugPrint.html +1 -1
- data/docs/Puppeteer/Device.html +1 -1
- data/docs/Puppeteer/Devices.html +1 -1
- data/docs/Puppeteer/ElementHandle.html +1 -1
- data/docs/Puppeteer/ElementHandle/BoundingBox.html +507 -0
- data/docs/Puppeteer/ElementHandle/BoxModel.html +404 -0
- data/docs/Puppeteer/ElementHandle/ElementNotFoundError.html +1 -1
- data/docs/Puppeteer/ElementHandle/ElementNotVisibleError.html +1 -1
- data/docs/Puppeteer/ElementHandle/Point.html +1 -1
- data/docs/Puppeteer/ElementHandle/ScrollIntoViewError.html +1 -1
- data/docs/Puppeteer/EmulationManager.html +1 -1
- data/docs/Puppeteer/EventCallbackable.html +1 -1
- data/docs/Puppeteer/EventCallbackable/EventListeners.html +1 -1
- data/docs/Puppeteer/ExecutionContext.html +1 -1
- data/docs/Puppeteer/ExecutionContext/EvaluationError.html +1 -1
- data/docs/Puppeteer/ExecutionContext/JavaScriptExpression.html +1 -1
- data/docs/Puppeteer/ExecutionContext/JavaScriptFunction.html +1 -1
- data/docs/Puppeteer/FileChooser.html +1 -1
- data/docs/Puppeteer/Frame.html +425 -289
- data/docs/Puppeteer/FrameManager.html +1 -1
- data/docs/Puppeteer/FrameManager/NavigationError.html +1 -1
- data/docs/Puppeteer/IfPresent.html +1 -1
- data/docs/Puppeteer/JSHandle.html +1 -1
- data/docs/Puppeteer/Keyboard.html +1 -1
- data/docs/Puppeteer/Keyboard/KeyDefinition.html +1 -1
- data/docs/Puppeteer/Keyboard/KeyDescription.html +1 -1
- data/docs/Puppeteer/Launcher.html +1 -1
- data/docs/Puppeteer/Launcher/Base.html +1 -1
- data/docs/Puppeteer/Launcher/Base/ExecutablePathNotFound.html +1 -1
- data/docs/Puppeteer/Launcher/BrowserOptions.html +1 -1
- data/docs/Puppeteer/Launcher/Chrome.html +1 -1
- data/docs/Puppeteer/Launcher/Chrome/DefaultArgs.html +1 -1
- data/docs/Puppeteer/Launcher/ChromeArgOptions.html +1 -1
- data/docs/Puppeteer/Launcher/LaunchOptions.html +1 -1
- data/docs/Puppeteer/LifecycleWatcher.html +1 -1
- data/docs/Puppeteer/LifecycleWatcher/ExpectedLifecycle.html +1 -1
- data/docs/Puppeteer/LifecycleWatcher/FrameDetachedError.html +1 -1
- data/docs/Puppeteer/LifecycleWatcher/TerminatedError.html +1 -1
- data/docs/Puppeteer/Mouse.html +31 -41
- data/docs/Puppeteer/Mouse/Button.html +1 -1
- data/docs/Puppeteer/NetworkManager.html +1 -1
- data/docs/Puppeteer/NetworkManager/Credentials.html +1 -1
- data/docs/Puppeteer/Page.html +1 -1
- data/docs/Puppeteer/Page/FileChooserTimeoutError.html +1 -1
- data/docs/Puppeteer/Page/ScreenshotOptions.html +1 -1
- data/docs/Puppeteer/Page/ScriptTag.html +1 -1
- data/docs/Puppeteer/Page/StyleTag.html +1 -1
- data/docs/Puppeteer/Page/TargetCrashedError.html +1 -1
- data/docs/Puppeteer/RemoteObject.html +1 -1
- data/docs/Puppeteer/Target.html +1 -1
- data/docs/Puppeteer/Target/InitializeFailure.html +1 -1
- data/docs/Puppeteer/Target/TargetInfo.html +1 -1
- data/docs/Puppeteer/TimeoutError.html +1 -1
- data/docs/Puppeteer/TimeoutSettings.html +1 -1
- data/docs/Puppeteer/TouchScreen.html +1 -1
- data/docs/Puppeteer/Viewport.html +1 -1
- data/docs/Puppeteer/WaitTask.html +1 -1
- data/docs/Puppeteer/WaitTask/TerminatedError.html +1 -1
- data/docs/Puppeteer/WaitTask/TimeoutError.html +1 -1
- data/docs/Puppeteer/WebSocket.html +1 -1
- data/docs/Puppeteer/WebSocket/DriverImpl.html +1 -1
- data/docs/Puppeteer/WebSocket/TransportError.html +124 -0
- data/docs/Puppeteer/WebSocketTransport.html +1 -1
- data/docs/_index.html +5 -12
- data/docs/class_list.html +1 -1
- data/docs/file.README.html +1 -1
- data/docs/index.html +1 -1
- data/docs/method_list.html +402 -386
- data/docs/top-level-namespace.html +1 -1
- data/lib/puppeteer/browser.rb +17 -1
- data/lib/puppeteer/connection.rb +13 -1
- data/lib/puppeteer/dom_world.rb +7 -6
- data/lib/puppeteer/frame.rb +19 -1
- data/lib/puppeteer/mouse.rb +3 -8
- data/lib/puppeteer/page.rb +1 -1
- data/lib/puppeteer/version.rb +1 -1
- metadata +5 -2
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
</div>
|
|
117
117
|
|
|
118
118
|
<div id="footer">
|
|
119
|
-
Generated on
|
|
119
|
+
Generated on Sat Jun 20 17:15:05 2020 by
|
|
120
120
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
121
121
|
0.9.24 (ruby-2.6.3).
|
|
122
122
|
</div>
|
data/lib/puppeteer/browser.rb
CHANGED
|
@@ -46,7 +46,7 @@ class Puppeteer::Browser
|
|
|
46
46
|
@contexts[context_id] = Puppeteer::BrowserContext.new(@connection, self. context_id)
|
|
47
47
|
end
|
|
48
48
|
@targets = {}
|
|
49
|
-
@connection.on_event 'Events.
|
|
49
|
+
@connection.on_event 'Events.Connection.Disconnected' do
|
|
50
50
|
emit_event 'Events.Browser.Disconnected'
|
|
51
51
|
end
|
|
52
52
|
@connection.on_event 'Target.targetCreated', &method(:handle_target_created)
|
|
@@ -54,6 +54,22 @@ class Puppeteer::Browser
|
|
|
54
54
|
@connection.on_event 'Target.targetInfoChanged', &method(:handle_target_info_changed)
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
+
EVENT_MAPPINGS = {
|
|
58
|
+
disconnected: 'Events.Browser.Disconnected',
|
|
59
|
+
targetcreated: 'Events.Browser.TargetCreated',
|
|
60
|
+
targetchanged: 'Events.Browser.TargetChanged',
|
|
61
|
+
targetdestroyed: 'Events.Browser.TargetDestroyed',
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
# @param event_name [Symbol] either of :disconnected, :targetcreated, :targetchanged, :targetdestroyed
|
|
65
|
+
def on(event_name, &block)
|
|
66
|
+
unless EVENT_MAPPINGS.has_key?(event_name.to_sym)
|
|
67
|
+
raise ArgumentError.new("Unknown event name: #{event_name}. Known events are #{EVENT_MAPPINGS.keys.join(", ")}")
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
add_event_listener(EVENT_MAPPINGS[event_name.to_sym], &block)
|
|
71
|
+
end
|
|
72
|
+
|
|
57
73
|
# @return [Puppeteer::BrowserRunner::BrowserProcess]
|
|
58
74
|
def process
|
|
59
75
|
@process
|
data/lib/puppeteer/connection.rb
CHANGED
|
@@ -44,7 +44,9 @@ class Puppeteer::Connection
|
|
|
44
44
|
|
|
45
45
|
@transport = transport
|
|
46
46
|
@transport.on_message do |data|
|
|
47
|
-
|
|
47
|
+
message = JSON.parse(data)
|
|
48
|
+
sleep_before_handling_message(message)
|
|
49
|
+
async_handle_message(message)
|
|
48
50
|
end
|
|
49
51
|
@transport.on_close do |reason, code|
|
|
50
52
|
handle_close(reason, code)
|
|
@@ -54,6 +56,16 @@ class Puppeteer::Connection
|
|
|
54
56
|
@closed = false
|
|
55
57
|
end
|
|
56
58
|
|
|
59
|
+
private def sleep_before_handling_message(message)
|
|
60
|
+
# Puppeteer doesn't handle any Network monitoring responses.
|
|
61
|
+
# So we don't have to sleep.
|
|
62
|
+
return if message['method']&.start_with?('Network.')
|
|
63
|
+
|
|
64
|
+
# For some reasons, sleeping a bit reduces trivial errors...
|
|
65
|
+
# 4ms is an interval of internal shared timer of WebKit.
|
|
66
|
+
sleep 0.004
|
|
67
|
+
end
|
|
68
|
+
|
|
57
69
|
def self.from_session(session)
|
|
58
70
|
session.connection
|
|
59
71
|
end
|
data/lib/puppeteer/dom_world.rb
CHANGED
|
@@ -97,17 +97,18 @@ class Puppeteer::DOMWorld
|
|
|
97
97
|
document.S(selector)
|
|
98
98
|
end
|
|
99
99
|
|
|
100
|
-
class DocumentEvaluationError < StandardError; end
|
|
101
|
-
|
|
102
100
|
private def evaluate_document
|
|
103
101
|
# sometimes execution_context.evaluate_handle('document') returns null object.
|
|
104
102
|
# D, [2020-04-24T02:17:51.023631 #220] DEBUG -- : RECV << {"id"=>20, "result"=>{"result"=>{"type"=>"object", "subtype"=>"null", "value"=>nil}}, "sessionId"=>"78E9CF1E14D81294E320E7C20E5CDE06"}
|
|
105
103
|
# retry if so.
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
104
|
+
Timeout.timeout(3) do
|
|
105
|
+
loop do
|
|
106
|
+
handle = execution_context.evaluate_handle('document')
|
|
107
|
+
return handle if handle.is_a?(Puppeteer::ElementHandle)
|
|
108
|
+
end
|
|
109
109
|
end
|
|
110
|
-
|
|
110
|
+
rescue Timeout::Error
|
|
111
|
+
raise 'Bug of puppeteer-ruby...'
|
|
111
112
|
end
|
|
112
113
|
|
|
113
114
|
private def document
|
data/lib/puppeteer/frame.rb
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
class Puppeteer::Frame
|
|
2
|
+
using Puppeteer::AsyncAwaitBehavior
|
|
3
|
+
|
|
2
4
|
# @param {!FrameManager} frameManager
|
|
3
5
|
# @param {!Puppeteer.CDPSession} client
|
|
4
6
|
# @param {?Frame} parentFrame
|
|
@@ -33,10 +35,17 @@ class Puppeteer::Frame
|
|
|
33
35
|
|
|
34
36
|
# @param timeout [number|nil]
|
|
35
37
|
# @param wait_until [string|nil] 'load' | 'domcontentloaded' | 'networkidle0' | 'networkidle2'
|
|
36
|
-
def wait_for_navigation(timeout: nil, wait_until: nil)
|
|
38
|
+
private def wait_for_navigation(timeout: nil, wait_until: nil)
|
|
37
39
|
@frame_manager.wait_for_frame_navigation(self, timeout: timeout, wait_until: wait_until)
|
|
38
40
|
end
|
|
39
41
|
|
|
42
|
+
# @param timeout [number|nil]
|
|
43
|
+
# @param wait_until [string|nil] 'load' | 'domcontentloaded' | 'networkidle0' | 'networkidle2'
|
|
44
|
+
# @return [Future]
|
|
45
|
+
async def async_wait_for_navigation(timeout: nil, wait_until: nil)
|
|
46
|
+
wait_for_navigation(timeout: timeout, wait_until: wait_until)
|
|
47
|
+
end
|
|
48
|
+
|
|
40
49
|
def execution_context
|
|
41
50
|
@main_world.execution_context
|
|
42
51
|
end
|
|
@@ -143,6 +152,15 @@ class Puppeteer::Frame
|
|
|
143
152
|
@main_world.add_style_tag(style_tag)
|
|
144
153
|
end
|
|
145
154
|
|
|
155
|
+
# @param selector [String]
|
|
156
|
+
# @param delay [Number]
|
|
157
|
+
# @param button [String] "left"|"right"|"middle"
|
|
158
|
+
# @param click_count [Number]
|
|
159
|
+
# @return [Future]
|
|
160
|
+
async def async_click(selector, delay: nil, button: nil, click_count: nil)
|
|
161
|
+
click(selector, delay: delay, button: button, click_count: click_count)
|
|
162
|
+
end
|
|
163
|
+
|
|
146
164
|
# @param selector [String]
|
|
147
165
|
# @param delay [Number]
|
|
148
166
|
# @param button [String] "left"|"right"|"middle"
|
data/lib/puppeteer/mouse.rb
CHANGED
|
@@ -61,18 +61,13 @@ class Puppeteer::Mouse
|
|
|
61
61
|
# D, [2020-04-15T17:09:47.898422 #88683] DEBUG -- : SEND >> {"sessionId":"0B09EA5E18DEE403E525B3E7FCD7E225","method":"Input.dispatchMouseEvent","params":{"type":"mouseReleased","button":"left","x":0,"y":0,"modifiers":0,"clickCount":1},"id":24}
|
|
62
62
|
# D, [2020-04-15T17:09:47.899711 #88683] DEBUG -- : SEND >> {"sessionId":"0B09EA5E18DEE403E525B3E7FCD7E225","method":"Input.dispatchMouseEvent","params":{"type":"mousePressed","button":"left","x":0,"y":0,"modifiers":0,"clickCount":1},"id":25}
|
|
63
63
|
# D, [2020-04-15T17:09:47.900237 #88683] DEBUG -- : SEND >> {"sessionId":"0B09EA5E18DEE403E525B3E7FCD7E225","method":"Input.dispatchMouseEvent","params":{"type":"mouseMoved","button":"left","x":187,"y":283,"modifiers":0},"id":26}
|
|
64
|
-
# So we execute
|
|
64
|
+
# So we execute them sequential
|
|
65
65
|
move(x, y)
|
|
66
|
+
down(button: button, click_count: click_count)
|
|
66
67
|
if delay
|
|
67
|
-
down(button: button, click_count: click_count)
|
|
68
68
|
sleep(delay / 1000.0)
|
|
69
|
-
up(button: button, click_count: click_count)
|
|
70
|
-
else
|
|
71
|
-
await_all(
|
|
72
|
-
async_down(button: button, click_count: click_count),
|
|
73
|
-
async_up(button: button, click_count: click_count),
|
|
74
|
-
)
|
|
75
69
|
end
|
|
70
|
+
up(button: button, click_count: click_count)
|
|
76
71
|
end
|
|
77
72
|
|
|
78
73
|
# @param x [number]
|
data/lib/puppeteer/page.rb
CHANGED
|
@@ -651,7 +651,7 @@ class Puppeteer::Page
|
|
|
651
651
|
# @param timeout [number|nil]
|
|
652
652
|
# @param wait_until [string|nil] 'load' | 'domcontentloaded' | 'networkidle0' | 'networkidle2'
|
|
653
653
|
private def wait_for_navigation(timeout: nil, wait_until: nil)
|
|
654
|
-
main_frame.wait_for_navigation
|
|
654
|
+
main_frame.send(:wait_for_navigation, timeout: timeout, wait_until: wait_until)
|
|
655
655
|
end
|
|
656
656
|
|
|
657
657
|
# @param timeout [number|nil]
|
data/lib/puppeteer/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: puppeteer-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.11
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- YusukeIwaki
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-06-
|
|
11
|
+
date: 2020-06-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: concurrent-ruby
|
|
@@ -208,6 +208,8 @@ files:
|
|
|
208
208
|
- docs/Puppeteer/Device.html
|
|
209
209
|
- docs/Puppeteer/Devices.html
|
|
210
210
|
- docs/Puppeteer/ElementHandle.html
|
|
211
|
+
- docs/Puppeteer/ElementHandle/BoundingBox.html
|
|
212
|
+
- docs/Puppeteer/ElementHandle/BoxModel.html
|
|
211
213
|
- docs/Puppeteer/ElementHandle/ElementNotFoundError.html
|
|
212
214
|
- docs/Puppeteer/ElementHandle/ElementNotVisibleError.html
|
|
213
215
|
- docs/Puppeteer/ElementHandle/Point.html
|
|
@@ -263,6 +265,7 @@ files:
|
|
|
263
265
|
- docs/Puppeteer/WaitTask/TimeoutError.html
|
|
264
266
|
- docs/Puppeteer/WebSocket.html
|
|
265
267
|
- docs/Puppeteer/WebSocket/DriverImpl.html
|
|
268
|
+
- docs/Puppeteer/WebSocket/TransportError.html
|
|
266
269
|
- docs/Puppeteer/WebSocketTransport.html
|
|
267
270
|
- docs/Puppeteer/WebSocktTransportError.html
|
|
268
271
|
- docs/_index.html
|