puppeteer-ruby 0.0.27 → 0.31.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b7f606d2715459bc7986833e68c8ab501e18f2b67473773daf9a65f1baa978db
4
- data.tar.gz: 074e5845c7019ae74ea66b9284e7b76ea3deb5fe03bac1fc970c5c1ff3091ade
3
+ metadata.gz: 4c703eeb4952a1a5102ce3616daee3333747f37d790ad65efb8c1f95ac603f8b
4
+ data.tar.gz: 355cf71106ffce2576aea66680ff5fbb7f35b263da8abce5dd7056ff8fdca019
5
5
  SHA512:
6
- metadata.gz: 20a9d1aba0853ea1dbc54786b752d814a6f1c7764d08cc8adc1d372db15e0875dc6cdc8ba474b44f1af5a0879f12d4138d9ebb9c06fbbaf7b85a8aaee62d7ac8
7
- data.tar.gz: 37a24532b303653427a30c8f1cc505d99b2eaa999c3d5ca350fbb2bcabda520e2746edc8f43ec0f965b2628b75148466c1cb1d9e26854179c078f4c75f5a05cb
6
+ metadata.gz: bb2f9d778d6f99c510d78025dba4f39a22ce2cdc8bdb278b6a8911e3498ee94268237fe929a6a0473a7d94a6f8f3839ad43e76a2c2825a54eb9cbc824078a980
7
+ data.tar.gz: 4d40e88f6ec1476854673a3a49c8598e24c5a0bd1de65c4ee09e87ef85773d96b12b415e1f28352b096d3e0fa95ae1267c81fa8ca34f30deaa3fe4308bbd45e0
data/CHANGELOG.md CHANGED
@@ -1,7 +1,42 @@
1
- ### master [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.0.27...master)]
1
+ ### master [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.31.1...master)]
2
2
 
3
3
  * xxx
4
4
 
5
+ ### 0.31.1 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.31.0...0.31.1)]
6
+
7
+ Bugfix:
8
+
9
+ * Fix `Page#pdf` to work on Windows.
10
+
11
+ ### 0.31.0 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.30.0...0.31.0)]
12
+
13
+ New features:
14
+
15
+ * Now puppeteer-ruby is compatible with Windows
16
+
17
+ Bugfix:
18
+
19
+ * Fix `Page#add_script_tag` and `Page#add_style_tag` to work
20
+
21
+ ### 0.30.0 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.29.0...0.30.0)]
22
+
23
+ New features:
24
+
25
+ * S, SS, Seval, SSeval is renamed to query_selector, query_selector_all, eval_on_selector, eval_on_selector_all
26
+
27
+ ### 0.29.0 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.28.1...0.29.0)]
28
+
29
+ New features:
30
+
31
+ * Add `AriaQueryHandler`. Now we can use "aria/...." for selectors.
32
+
33
+ ### 0.28.1 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.0.27...0.28.1)]
34
+
35
+ New features:
36
+
37
+ * Add `Page#emulate_idle_state`
38
+ * Change versioning rule.
39
+
5
40
  ### 0.0.27 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.0.26...0.0.27)]
6
41
 
7
42
  New features:
data/README.md CHANGED
@@ -1,18 +1,36 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/puppeteer-ruby.svg)](https://badge.fury.io/rb/puppeteer-ruby)
2
2
 
3
- # Puppeteer in Ruby [UNDER HEAVY DEVELOPMENT]
3
+ # Puppeteer in Ruby
4
4
 
5
5
  A Ruby port of [puppeteer](https://pptr.dev/).
6
6
 
7
7
  ![logo](puppeteer-ruby.png)
8
8
 
9
- REMARK: This Gem is NOT production-ready!!
9
+ REMARK: This Gem covers just a part of Puppeteer APIs. See [API Coverage list](./docs/api_coverage.md) for detail. Feedbacks and feature requests are welcome :)
10
10
 
11
11
  ## Getting Started
12
12
 
13
+ ### Installation
14
+
15
+ Add this line to your application's Gemfile:
16
+
17
+ ```ruby
18
+ gem 'puppeteer-ruby'
19
+ ```
20
+
21
+ And then execute:
22
+
23
+ $ bundle
24
+
25
+ Or install it yourself as:
26
+
27
+ $ gem install puppeteer-ruby
28
+
13
29
  ### Capture a site
14
30
 
15
31
  ```ruby
32
+ require 'puppeteer'
33
+
16
34
  Puppeteer.launch(headless: false) do |browser|
17
35
  page = browser.pages.first || browser.new_page
18
36
  page.goto("https://github.com/YusukeIwaki")
@@ -30,18 +48,18 @@ Puppeteer.launch(headless: false, slow_mo: 50, args: ['--guest', '--window-size=
30
48
  page.viewport = Puppeteer::Viewport.new(width: 1280, height: 800)
31
49
  page.goto("https://github.com/", wait_until: 'domcontentloaded')
32
50
 
33
- form = page.S("form.js-site-search-form")
34
- searchInput = form.S("input.header-search-input")
51
+ form = page.query_selector("form.js-site-search-form")
52
+ searchInput = form.query_selector("input.header-search-input")
35
53
  searchInput.type_text("puppeteer")
36
54
  await_all(
37
55
  page.async_wait_for_navigation,
38
56
  searchInput.async_press("Enter"),
39
57
  )
40
58
 
41
- list = page.S("ul.repo-list")
42
- items = list.SS("div.f4")
59
+ list = page.query_selector("ul.repo-list")
60
+ items = list.query_selector_all("div.f4")
43
61
  items.each do |item|
44
- title = item.Seval("a", "a => a.innerText")
62
+ title = item.eval_on_selector("a", "a => a.innerText")
45
63
  puts("==> #{title}")
46
64
  end
47
65
  end
@@ -50,6 +68,8 @@ end
50
68
  ### Evaluate JavaScript
51
69
 
52
70
  ```ruby
71
+ require 'puppeteer'
72
+
53
73
  Puppeteer.launch do |browser|
54
74
  page = browser.pages.last || browser.new_page
55
75
  page.goto 'https://github.com/YusukeIwaki'
@@ -114,7 +134,7 @@ RSpec.describe 'hotel.testplanisphere.dev', type: :feature do
114
134
  puppeteer_page = @browser.pages.first
115
135
  puppeteer_page.wait_for_selector('li.nav-item')
116
136
 
117
- reservation_link = puppeteer_page.SS('li.nav-item')[1]
137
+ reservation_link = puppeteer_page.query_selector_all('li.nav-item')[1]
118
138
 
119
139
  await_all(
120
140
  puppeteer_page.async_wait_for_navigation,
@@ -131,7 +151,7 @@ RSpec.describe 'hotel.testplanisphere.dev', type: :feature do
131
151
 
132
152
  # expectation with puppeteer
133
153
  puppeteer_page = @browser.pages.first
134
- body_text = puppeteer_page.Seval('body', '(el) => el.textContent')
154
+ body_text = puppeteer_page.eval_on_selector('body', '(el) => el.textContent')
135
155
  expect(body_text).to include('宿泊プラン一覧')
136
156
  end
137
157
  ```
@@ -0,0 +1,359 @@
1
+ # API coverages
2
+ - Puppeteer version: v8.0.0
3
+ - puppeteer-ruby version: 0.31.1
4
+
5
+ ## Puppeteer
6
+
7
+ * ~~clearCustomQueryHandlers~~
8
+ * connect
9
+ * ~~createBrowserFetcher~~
10
+ * ~~customQueryHandlerNames~~
11
+ * defaultArgs => `#default_args`
12
+ * devices
13
+ * ~~errors~~
14
+ * executablePath => `#executable_path`
15
+ * launch
16
+ * ~~networkConditions~~
17
+ * product
18
+ * ~~registerCustomQueryHandler~~
19
+ * ~~unregisterCustomQueryHandler~~
20
+
21
+ ## ~~BrowserFetcher~~
22
+
23
+ * ~~canDownload~~
24
+ * ~~download~~
25
+ * ~~host~~
26
+ * ~~localRevisions~~
27
+ * ~~platform~~
28
+ * ~~product~~
29
+ * ~~remove~~
30
+ * ~~revisionInfo~~
31
+
32
+ ## Browser
33
+
34
+ * browserContexts => `#browser_contexts`
35
+ * close
36
+ * createIncognitoBrowserContext => `#create_incognito_browser_context`
37
+ * defaultBrowserContext => `#default_browser_context`
38
+ * disconnect
39
+ * isConnected => `#connected?`
40
+ * newPage => `#new_page`
41
+ * pages
42
+ * process
43
+ * target
44
+ * targets
45
+ * userAgent => `#user_agent`
46
+ * version
47
+ * waitForTarget => `#wait_for_target`
48
+ * wsEndpoint => `#ws_endpoint`
49
+
50
+ ## BrowserContext
51
+
52
+ * browser
53
+ * clearPermissionOverrides => `#clear_permission_overrides`
54
+ * close
55
+ * isIncognito => `#incognito?`
56
+ * newPage => `#new_page`
57
+ * overridePermissions => `#override_permissions`
58
+ * pages
59
+ * targets
60
+ * waitForTarget => `#wait_for_target`
61
+
62
+ ## Page
63
+
64
+ * $ => `#query_selector`
65
+ * $$ => `#query_selector_all`
66
+ * $$eval => `#eval_on_selector_all`
67
+ * $eval => `#eval_on_selector`
68
+ * $x => `#Sx`
69
+ * accessibility
70
+ * addScriptTag => `#add_script_tag`
71
+ * addStyleTag => `#add_style_tag`
72
+ * authenticate
73
+ * ~~bringToFront~~
74
+ * browser
75
+ * browserContext => `#browser_context`
76
+ * click
77
+ * close
78
+ * content
79
+ * cookies
80
+ * coverage
81
+ * deleteCookie => `#delete_cookie`
82
+ * emulate
83
+ * emulateIdleState => `#emulate_idle_state`
84
+ * ~~emulateMediaFeatures~~
85
+ * emulateMediaType => `#emulate_media_type`
86
+ * ~~emulateNetworkConditions~~
87
+ * emulateTimezone => `#emulate_timezone`
88
+ * ~~emulateVisionDeficiency~~
89
+ * evaluate
90
+ * evaluateHandle => `#evaluate_handle`
91
+ * evaluateOnNewDocument => `#evaluate_on_new_document`
92
+ * ~~exposeFunction~~
93
+ * focus
94
+ * frames
95
+ * goBack => `#go_back`
96
+ * goForward => `#go_forward`
97
+ * goto
98
+ * hover
99
+ * isClosed => `#closed?`
100
+ * isJavaScriptEnabled => `#javascript_enabled?`
101
+ * keyboard
102
+ * mainFrame => `#main_frame`
103
+ * ~~metrics~~
104
+ * mouse
105
+ * pdf
106
+ * queryObjects => `#query_objects`
107
+ * reload
108
+ * screenshot
109
+ * select
110
+ * setBypassCSP => `#bypass_csp=`
111
+ * setCacheEnabled => `#cache_enabled=`
112
+ * setContent => `#content=`
113
+ * setCookie => `#set_cookie`
114
+ * setDefaultNavigationTimeout => `#default_navigation_timeout=`
115
+ * setDefaultTimeout => `#default_timeout=`
116
+ * setExtraHTTPHeaders => `#extra_http_headers=`
117
+ * setGeolocation => `#geolocation=`
118
+ * setJavaScriptEnabled => `#javascript_enabled=`
119
+ * setOfflineMode => `#offline_mode=`
120
+ * setRequestInterception => `#request_interception=`
121
+ * setUserAgent => `#user_agent=`
122
+ * setViewport => `#viewport=`
123
+ * tap
124
+ * target
125
+ * title
126
+ * ~~touchscreen~~
127
+ * ~~tracing~~
128
+ * type => `#type_text`
129
+ * url
130
+ * viewport
131
+ * ~~waitFor~~
132
+ * waitForFileChooser => `#wait_for_file_chooser`
133
+ * waitForFunction => `#wait_for_function`
134
+ * waitForNavigation => `#async_wait_for_navigation`
135
+ * waitForRequest => `#async_wait_for_request`
136
+ * waitForResponse => `#async_wait_for_response`
137
+ * waitForSelector => `#wait_for_selector`
138
+ * waitForTimeout => `#wait_for_timeout`
139
+ * waitForXPath => `#wait_for_xpath`
140
+ * workers
141
+
142
+ ## ~~WebWorker~~
143
+
144
+ * ~~evaluate~~
145
+ * ~~evaluateHandle~~
146
+ * ~~executionContext~~
147
+ * ~~url~~
148
+
149
+ ## ~~Accessibility~~
150
+
151
+ * ~~snapshot~~
152
+
153
+ ## Keyboard
154
+
155
+ * down
156
+ * press
157
+ * sendCharacter => `#send_character`
158
+ * type => `#type_text`
159
+ * up
160
+
161
+ ## Mouse
162
+
163
+ * click
164
+ * down
165
+ * move
166
+ * up
167
+ * wheel
168
+
169
+ ## ~~Touchscreen~~
170
+
171
+ * ~~tap~~
172
+
173
+ ## ~~Tracing~~
174
+
175
+ * ~~start~~
176
+ * ~~stop~~
177
+
178
+ ## FileChooser
179
+
180
+ * accept
181
+ * cancel
182
+ * isMultiple => `#multiple?`
183
+
184
+ ## Dialog
185
+
186
+ * accept
187
+ * defaultValue => `#default_value`
188
+ * dismiss
189
+ * message
190
+ * type
191
+
192
+ ## ConsoleMessage
193
+
194
+ * args
195
+ * location
196
+ * ~~stackTrace~~
197
+ * text
198
+ * ~~type~~
199
+
200
+ ## Frame
201
+
202
+ * $ => `#query_selector`
203
+ * $$ => `#query_selector_all`
204
+ * $$eval => `#eval_on_selector_all`
205
+ * $eval => `#eval_on_selector`
206
+ * $x => `#Sx`
207
+ * addScriptTag => `#add_script_tag`
208
+ * addStyleTag => `#add_style_tag`
209
+ * childFrames => `#child_frames`
210
+ * click
211
+ * content
212
+ * evaluate
213
+ * evaluateHandle => `#evaluate_handle`
214
+ * executionContext => `#execution_context`
215
+ * focus
216
+ * goto
217
+ * hover
218
+ * isDetached => `#detached?`
219
+ * name
220
+ * parentFrame => `#parent_frame`
221
+ * select
222
+ * setContent => `#set_content`
223
+ * tap
224
+ * title
225
+ * type => `#type_text`
226
+ * url
227
+ * ~~waitFor~~
228
+ * waitForFunction => `#wait_for_function`
229
+ * waitForNavigation => `#async_wait_for_navigation`
230
+ * waitForSelector => `#wait_for_selector`
231
+ * waitForTimeout => `#wait_for_timeout`
232
+ * waitForXPath => `#wait_for_xpath`
233
+
234
+ ## ExecutionContext
235
+
236
+ * evaluate
237
+ * evaluateHandle => `#evaluate_handle`
238
+ * frame
239
+ * ~~queryObjects~~
240
+
241
+ ## JSHandle
242
+
243
+ * asElement => `#as_element`
244
+ * dispose
245
+ * evaluate
246
+ * evaluateHandle => `#evaluate_handle`
247
+ * executionContext => `#execution_context`
248
+ * getProperties => `#properties`
249
+ * getProperty => `#[]`
250
+ * jsonValue => `#json_value`
251
+
252
+ ## ElementHandle
253
+
254
+ * $ => `#query_selector`
255
+ * $$ => `#query_selector_all`
256
+ * $$eval => `#eval_on_selector_all`
257
+ * $eval => `#eval_on_selector`
258
+ * $x => `#Sx`
259
+ * asElement => `#as_element`
260
+ * boundingBox => `#bounding_box`
261
+ * boxModel => `#box_model`
262
+ * click
263
+ * contentFrame => `#content_frame`
264
+ * dispose
265
+ * evaluate
266
+ * evaluateHandle => `#evaluate_handle`
267
+ * executionContext => `#execution_context`
268
+ * focus
269
+ * getProperties => `#properties`
270
+ * getProperty => `#[]`
271
+ * hover
272
+ * isIntersectingViewport => `#intersecting_viewport?`
273
+ * jsonValue => `#json_value`
274
+ * press
275
+ * screenshot
276
+ * select
277
+ * tap
278
+ * ~~toString~~
279
+ * type => `#type_text`
280
+ * uploadFile => `#upload_file`
281
+
282
+ ## ~~HTTPRequest~~
283
+
284
+ * ~~abort~~
285
+ * ~~continue~~
286
+ * ~~failure~~
287
+ * ~~frame~~
288
+ * ~~headers~~
289
+ * ~~isNavigationRequest~~
290
+ * ~~method~~
291
+ * ~~postData~~
292
+ * ~~redirectChain~~
293
+ * ~~resourceType~~
294
+ * ~~respond~~
295
+ * ~~response~~
296
+ * ~~url~~
297
+
298
+ ## ~~HTTPResponse~~
299
+
300
+ * ~~buffer~~
301
+ * ~~frame~~
302
+ * ~~fromCache~~
303
+ * ~~fromServiceWorker~~
304
+ * ~~headers~~
305
+ * ~~json~~
306
+ * ~~ok~~
307
+ * ~~remoteAddress~~
308
+ * ~~request~~
309
+ * ~~securityDetails~~
310
+ * ~~status~~
311
+ * ~~statusText~~
312
+ * ~~text~~
313
+ * ~~url~~
314
+
315
+ ## ~~SecurityDetails~~
316
+
317
+ * ~~issuer~~
318
+ * ~~protocol~~
319
+ * ~~subjectAlternativeNames~~
320
+ * ~~subjectName~~
321
+ * ~~validFrom~~
322
+ * ~~validTo~~
323
+
324
+ ## Target
325
+
326
+ * browser
327
+ * browserContext => `#browser_context`
328
+ * createCDPSession => `#create_cdp_session`
329
+ * opener
330
+ * page
331
+ * type
332
+ * url
333
+ * ~~worker~~
334
+
335
+ ## CDPSession
336
+
337
+ * detach
338
+ * send
339
+
340
+ ## ~~Coverage~~
341
+
342
+ * ~~startCSSCoverage~~
343
+ * ~~startJSCoverage~~
344
+ * ~~stopCSSCoverage~~
345
+ * ~~stopJSCoverage~~
346
+
347
+ ## TimeoutError
348
+
349
+
350
+ ## ~~EventEmitter~~
351
+
352
+ * ~~addListener~~
353
+ * ~~emit~~
354
+ * ~~listenerCount~~
355
+ * ~~off~~
356
+ * ~~on~~
357
+ * ~~once~~
358
+ * ~~removeAllListeners~~
359
+ * ~~removeListener~~