puppeteer-ruby 0.28.1 → 0.31.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 61aae6f779d8c0b4566cb9fd8966ba7d5941bda2b0c43754d61616dab29ca555
4
- data.tar.gz: f5394e8ac944d188795e8a4eff87a60b2b226b659d8183ac1003d2d9f1c9c27b
3
+ metadata.gz: 6c29d76a1dd9f52a59eecdb311ab8c110a3393bc1500aea3df7d5defdc469d4f
4
+ data.tar.gz: 296188c1573813718e0f3d320ceff5bbd8f036f8326f04499e6d81a77ca92051
5
5
  SHA512:
6
- metadata.gz: e51fc1ffce61bf542d4057803ae3f2ac811285b54a221d4bc2ce6cfccc18e9de2828ba98de82d246efa7b1fdf58c44cce8e9205ac1343889f173462b8dd8f546
7
- data.tar.gz: 4b5706d9f926372415acafa3c0d9339d653dd35542642a48593d400fd929ec03f1f32cd5624d99b0c1e870471f591c385b18b02b742d8b83d501fef599f64ffc
6
+ metadata.gz: 25411b18a7d0279ebc736981cc47db542340d49c01429b8419e95e3f3d3c66ce633de11c8b645a0eb1643dc41adedb215522d0f2a06d173cd6140aeedb44156f
7
+ data.tar.gz: e1cc9c01f114534c4c44df4f036a9c9743b7330c1cfee710799381d9cdafe736d2c04498c673e3d79cd64671d4f270fcd37fc7cd0cbebf07d423736a5705851f
data/CHANGELOG.md CHANGED
@@ -1,7 +1,41 @@
1
- ### master [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.28.1...master)]
1
+ ### master [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.31.3...master)]
2
2
 
3
3
  * xxx
4
4
 
5
+ ### 0.31.3 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.31.1...0.31.3)]
6
+
7
+ Bugfix:
8
+
9
+ * Fix `wait_for_selector` to work. *It is strongly recommended to update for 0.29.0-0.31.x users.*
10
+
11
+ ### 0.31.1 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.31.0...0.31.1)]
12
+
13
+ Bugfix:
14
+
15
+ * Fix `Page#pdf` to work on Windows.
16
+
17
+ ### 0.31.0 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.30.0...0.31.0)]
18
+
19
+ New features:
20
+
21
+ * Now puppeteer-ruby is compatible with Windows
22
+
23
+ Bugfix:
24
+
25
+ * Fix `Page#add_script_tag` and `Page#add_style_tag` to work
26
+
27
+ ### 0.30.0 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.29.0...0.30.0)]
28
+
29
+ New features:
30
+
31
+ * S, SS, Seval, SSeval is renamed to query_selector, query_selector_all, eval_on_selector, eval_on_selector_all
32
+
33
+ ### 0.29.0 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.28.1...0.29.0)]
34
+
35
+ New features:
36
+
37
+ * Add `AriaQueryHandler`. Now we can use "aria/...." for selectors.
38
+
5
39
  ### 0.28.1 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.0.27...0.28.1)]
6
40
 
7
41
  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.3
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~~