selenium-webdriver 4.0.0-alpha.5 → 4.0.0-beta.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.
- package/CHANGES.md +35 -1
- package/LICENSE +1 -1
- package/NOTICE +1 -1
- package/README.md +4 -4
- package/chrome.js +72 -592
- package/chromium.js +829 -0
- package/devtools/CDPConnection.js +37 -0
- package/edge.js +124 -86
- package/example/chrome_android.js +16 -13
- package/example/chrome_mobile_emulation.js +18 -14
- package/example/firefox_channels.js +35 -28
- package/example/google_search.js +9 -9
- package/example/google_search_test.js +20 -22
- package/example/headless.js +27 -19
- package/example/logging.js +34 -38
- package/firefox.js +200 -200
- package/http/index.js +131 -115
- package/http/util.js +56 -64
- package/ie.js +180 -104
- package/index.js +246 -199
- package/io/exec.js +34 -39
- package/io/index.js +142 -152
- package/io/zip.js +75 -65
- package/lib/actions.js +140 -122
- package/lib/atoms/find-elements.js +124 -0
- package/lib/atoms/get-attribute.js +79 -59
- package/lib/atoms/is-displayed.js +72 -73
- package/lib/atoms/mutation-listener.js +38 -0
- package/lib/by.js +192 -65
- package/lib/capabilities.js +82 -78
- package/lib/command.js +20 -20
- package/lib/error.js +134 -168
- package/lib/http.js +337 -230
- package/lib/input.js +325 -302
- package/lib/logging.js +127 -138
- package/lib/promise.js +60 -66
- package/lib/proxy.js +31 -41
- package/lib/session.js +12 -15
- package/lib/symbols.js +3 -4
- package/lib/until.js +162 -160
- package/lib/webdriver.js +1024 -541
- package/net/index.js +30 -36
- package/net/portprober.js +31 -144
- package/opera.js +406 -0
- package/package.json +19 -12
- package/proxy.js +2 -2
- package/remote/index.js +190 -187
- package/safari.js +40 -49
- package/testing/index.js +166 -155
package/lib/logging.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// specific language governing permissions and limitations
|
|
16
16
|
// under the License.
|
|
17
17
|
|
|
18
|
-
'use strict'
|
|
18
|
+
'use strict'
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* @fileoverview Defines WebDriver's logging system. The logging system is
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
* **NOTE:** Only a few browsers support the remote logging API (notably
|
|
57
57
|
* Firefox and Chrome). Firefox supports basic logging functionality, while
|
|
58
58
|
* Chrome exposes robust
|
|
59
|
-
* [performance logging](https://
|
|
59
|
+
* [performance logging](https://chromedriver.chromium.org/logging)
|
|
60
60
|
* options. Remote logging is still considered a non-standard feature, and the
|
|
61
61
|
* APIs exposed by this module for it are non-frozen. This module will be
|
|
62
62
|
* updated, possibly breaking backwards-compatibility, once logging is
|
|
@@ -76,29 +76,29 @@ class Level {
|
|
|
76
76
|
*/
|
|
77
77
|
constructor(name, level) {
|
|
78
78
|
if (level < 0) {
|
|
79
|
-
throw new TypeError('Level must be >= 0')
|
|
79
|
+
throw new TypeError('Level must be >= 0')
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
/** @private {string} */
|
|
83
|
-
this.name_ = name
|
|
83
|
+
this.name_ = name
|
|
84
84
|
|
|
85
85
|
/** @private {number} */
|
|
86
|
-
this.value_ = level
|
|
86
|
+
this.value_ = level
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
/** This logger's name. */
|
|
90
90
|
get name() {
|
|
91
|
-
return this.name_
|
|
91
|
+
return this.name_
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
/** The numeric log level. */
|
|
95
95
|
get value() {
|
|
96
|
-
return this.value_
|
|
96
|
+
return this.value_
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
/** @override */
|
|
100
100
|
toString() {
|
|
101
|
-
return this.name
|
|
101
|
+
return this.name
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
|
|
@@ -106,66 +106,57 @@ class Level {
|
|
|
106
106
|
* Indicates no log messages should be recorded.
|
|
107
107
|
* @const
|
|
108
108
|
*/
|
|
109
|
-
Level.OFF = new Level('OFF', Infinity)
|
|
110
|
-
|
|
109
|
+
Level.OFF = new Level('OFF', Infinity)
|
|
111
110
|
|
|
112
111
|
/**
|
|
113
112
|
* Log messages with a level of `1000` or higher.
|
|
114
113
|
* @const
|
|
115
114
|
*/
|
|
116
|
-
Level.SEVERE = new Level('SEVERE', 1000)
|
|
117
|
-
|
|
115
|
+
Level.SEVERE = new Level('SEVERE', 1000)
|
|
118
116
|
|
|
119
117
|
/**
|
|
120
118
|
* Log messages with a level of `900` or higher.
|
|
121
119
|
* @const
|
|
122
120
|
*/
|
|
123
|
-
Level.WARNING = new Level('WARNING', 900)
|
|
124
|
-
|
|
121
|
+
Level.WARNING = new Level('WARNING', 900)
|
|
125
122
|
|
|
126
123
|
/**
|
|
127
124
|
* Log messages with a level of `800` or higher.
|
|
128
125
|
* @const
|
|
129
126
|
*/
|
|
130
|
-
Level.INFO = new Level('INFO', 800)
|
|
131
|
-
|
|
127
|
+
Level.INFO = new Level('INFO', 800)
|
|
132
128
|
|
|
133
129
|
/**
|
|
134
130
|
* Log messages with a level of `700` or higher.
|
|
135
131
|
* @const
|
|
136
132
|
*/
|
|
137
|
-
Level.DEBUG = new Level('DEBUG', 700)
|
|
138
|
-
|
|
133
|
+
Level.DEBUG = new Level('DEBUG', 700)
|
|
139
134
|
|
|
140
135
|
/**
|
|
141
136
|
* Log messages with a level of `500` or higher.
|
|
142
137
|
* @const
|
|
143
138
|
*/
|
|
144
|
-
Level.FINE = new Level('FINE', 500)
|
|
145
|
-
|
|
139
|
+
Level.FINE = new Level('FINE', 500)
|
|
146
140
|
|
|
147
141
|
/**
|
|
148
142
|
* Log messages with a level of `400` or higher.
|
|
149
143
|
* @const
|
|
150
144
|
*/
|
|
151
|
-
Level.FINER = new Level('FINER', 400)
|
|
152
|
-
|
|
145
|
+
Level.FINER = new Level('FINER', 400)
|
|
153
146
|
|
|
154
147
|
/**
|
|
155
148
|
* Log messages with a level of `300` or higher.
|
|
156
149
|
* @const
|
|
157
150
|
*/
|
|
158
|
-
Level.FINEST = new Level('FINEST', 300)
|
|
159
|
-
|
|
151
|
+
Level.FINEST = new Level('FINEST', 300)
|
|
160
152
|
|
|
161
153
|
/**
|
|
162
154
|
* Indicates all log messages should be recorded.
|
|
163
155
|
* @const
|
|
164
156
|
*/
|
|
165
|
-
Level.ALL = new Level('ALL', 0)
|
|
166
|
-
|
|
157
|
+
Level.ALL = new Level('ALL', 0)
|
|
167
158
|
|
|
168
|
-
const ALL_LEVELS = /** !Set<Level> */new Set([
|
|
159
|
+
const ALL_LEVELS = /** !Set<Level> */ new Set([
|
|
169
160
|
Level.OFF,
|
|
170
161
|
Level.SEVERE,
|
|
171
162
|
Level.WARNING,
|
|
@@ -174,9 +165,8 @@ const ALL_LEVELS = /** !Set<Level> */new Set([
|
|
|
174
165
|
Level.FINE,
|
|
175
166
|
Level.FINER,
|
|
176
167
|
Level.FINEST,
|
|
177
|
-
Level.ALL
|
|
178
|
-
])
|
|
179
|
-
|
|
168
|
+
Level.ALL,
|
|
169
|
+
])
|
|
180
170
|
|
|
181
171
|
const LEVELS_BY_NAME = /** !Map<string, !Level> */ new Map([
|
|
182
172
|
[Level.OFF.name, Level.OFF],
|
|
@@ -187,9 +177,8 @@ const LEVELS_BY_NAME = /** !Map<string, !Level> */ new Map([
|
|
|
187
177
|
[Level.FINE.name, Level.FINE],
|
|
188
178
|
[Level.FINER.name, Level.FINER],
|
|
189
179
|
[Level.FINEST.name, Level.FINEST],
|
|
190
|
-
[Level.ALL.name, Level.ALL]
|
|
191
|
-
])
|
|
192
|
-
|
|
180
|
+
[Level.ALL.name, Level.ALL],
|
|
181
|
+
])
|
|
193
182
|
|
|
194
183
|
/**
|
|
195
184
|
* Converts a level name or value to a {@link Level} value. If the name/value
|
|
@@ -201,20 +190,19 @@ const LEVELS_BY_NAME = /** !Map<string, !Level> */ new Map([
|
|
|
201
190
|
*/
|
|
202
191
|
function getLevel(nameOrValue) {
|
|
203
192
|
if (typeof nameOrValue === 'string') {
|
|
204
|
-
return LEVELS_BY_NAME.get(nameOrValue) || Level.ALL
|
|
193
|
+
return LEVELS_BY_NAME.get(nameOrValue) || Level.ALL
|
|
205
194
|
}
|
|
206
195
|
if (typeof nameOrValue !== 'number') {
|
|
207
|
-
throw new TypeError('not a string or number')
|
|
196
|
+
throw new TypeError('not a string or number')
|
|
208
197
|
}
|
|
209
198
|
for (let level of ALL_LEVELS) {
|
|
210
199
|
if (nameOrValue >= level.value) {
|
|
211
|
-
return level
|
|
200
|
+
return level
|
|
212
201
|
}
|
|
213
202
|
}
|
|
214
|
-
return Level.ALL
|
|
203
|
+
return Level.ALL
|
|
215
204
|
}
|
|
216
205
|
|
|
217
|
-
|
|
218
206
|
/**
|
|
219
207
|
* Describes a single log entry.
|
|
220
208
|
*
|
|
@@ -230,11 +218,11 @@ class Entry {
|
|
|
230
218
|
* @param {string=} opt_type The log type, if known.
|
|
231
219
|
*/
|
|
232
220
|
constructor(level, message, opt_timestamp, opt_type) {
|
|
233
|
-
this.level = level instanceof Level ? level : getLevel(level)
|
|
234
|
-
this.message = message
|
|
221
|
+
this.level = level instanceof Level ? level : getLevel(level)
|
|
222
|
+
this.message = message
|
|
235
223
|
this.timestamp =
|
|
236
|
-
|
|
237
|
-
this.type = opt_type || ''
|
|
224
|
+
typeof opt_timestamp === 'number' ? opt_timestamp : Date.now()
|
|
225
|
+
this.type = opt_type || ''
|
|
238
226
|
}
|
|
239
227
|
|
|
240
228
|
/**
|
|
@@ -243,15 +231,14 @@ class Entry {
|
|
|
243
231
|
*/
|
|
244
232
|
toJSON() {
|
|
245
233
|
return {
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
}
|
|
234
|
+
level: this.level.name,
|
|
235
|
+
message: this.message,
|
|
236
|
+
timestamp: this.timestamp,
|
|
237
|
+
type: this.type,
|
|
238
|
+
}
|
|
251
239
|
}
|
|
252
240
|
}
|
|
253
241
|
|
|
254
|
-
|
|
255
242
|
/**
|
|
256
243
|
* An object used to log debugging messages. Loggers use a hierarchical,
|
|
257
244
|
* dot-separated naming scheme. For instance, "foo" is considered the parent of
|
|
@@ -275,21 +262,21 @@ class Logger {
|
|
|
275
262
|
*/
|
|
276
263
|
constructor(name, opt_level) {
|
|
277
264
|
/** @private {string} */
|
|
278
|
-
this.name_ = name
|
|
265
|
+
this.name_ = name
|
|
279
266
|
|
|
280
267
|
/** @private {Level} */
|
|
281
|
-
this.level_ = opt_level || null
|
|
268
|
+
this.level_ = opt_level || null
|
|
282
269
|
|
|
283
270
|
/** @private {Logger} */
|
|
284
|
-
this.parent_ = null
|
|
271
|
+
this.parent_ = null
|
|
285
272
|
|
|
286
273
|
/** @private {Set<function(!Entry)>} */
|
|
287
|
-
this.handlers_ = null
|
|
274
|
+
this.handlers_ = null
|
|
288
275
|
}
|
|
289
276
|
|
|
290
277
|
/** @return {string} the name of this logger. */
|
|
291
278
|
getName() {
|
|
292
|
-
return this.name_
|
|
279
|
+
return this.name_
|
|
293
280
|
}
|
|
294
281
|
|
|
295
282
|
/**
|
|
@@ -297,25 +284,25 @@ class Logger {
|
|
|
297
284
|
* should inherit its level from its parent logger.
|
|
298
285
|
*/
|
|
299
286
|
setLevel(level) {
|
|
300
|
-
this.level_ = level
|
|
287
|
+
this.level_ = level
|
|
301
288
|
}
|
|
302
289
|
|
|
303
290
|
/** @return {Level} the log level for this logger. */
|
|
304
291
|
getLevel() {
|
|
305
|
-
return this.level_
|
|
292
|
+
return this.level_
|
|
306
293
|
}
|
|
307
294
|
|
|
308
295
|
/**
|
|
309
296
|
* @return {!Level} the effective level for this logger.
|
|
310
297
|
*/
|
|
311
298
|
getEffectiveLevel() {
|
|
312
|
-
let logger = this
|
|
313
|
-
let level
|
|
299
|
+
let logger = this
|
|
300
|
+
let level
|
|
314
301
|
do {
|
|
315
|
-
level = logger.level_
|
|
316
|
-
logger = logger.parent_
|
|
317
|
-
} while (logger && !level)
|
|
318
|
-
return level || Level.OFF
|
|
302
|
+
level = logger.level_
|
|
303
|
+
logger = logger.parent_
|
|
304
|
+
} while (logger && !level)
|
|
305
|
+
return level || Level.OFF
|
|
319
306
|
}
|
|
320
307
|
|
|
321
308
|
/**
|
|
@@ -324,8 +311,10 @@ class Logger {
|
|
|
324
311
|
* by this instance.
|
|
325
312
|
*/
|
|
326
313
|
isLoggable(level) {
|
|
327
|
-
return
|
|
328
|
-
|
|
314
|
+
return (
|
|
315
|
+
level.value !== Level.OFF.value &&
|
|
316
|
+
level.value >= this.getEffectiveLevel().value
|
|
317
|
+
)
|
|
329
318
|
}
|
|
330
319
|
|
|
331
320
|
/**
|
|
@@ -336,9 +325,9 @@ class Logger {
|
|
|
336
325
|
*/
|
|
337
326
|
addHandler(handler) {
|
|
338
327
|
if (!this.handlers_) {
|
|
339
|
-
this.handlers_ = new Set
|
|
328
|
+
this.handlers_ = new Set()
|
|
340
329
|
}
|
|
341
|
-
this.handlers_.add(handler)
|
|
330
|
+
this.handlers_.add(handler)
|
|
342
331
|
}
|
|
343
332
|
|
|
344
333
|
/**
|
|
@@ -349,9 +338,9 @@ class Logger {
|
|
|
349
338
|
*/
|
|
350
339
|
removeHandler(handler) {
|
|
351
340
|
if (!this.handlers_) {
|
|
352
|
-
return false
|
|
341
|
+
return false
|
|
353
342
|
}
|
|
354
|
-
return this.handlers_.delete(handler)
|
|
343
|
+
return this.handlers_.delete(handler)
|
|
355
344
|
}
|
|
356
345
|
|
|
357
346
|
/**
|
|
@@ -367,15 +356,18 @@ class Logger {
|
|
|
367
356
|
*/
|
|
368
357
|
log(level, loggable) {
|
|
369
358
|
if (!this.isLoggable(level)) {
|
|
370
|
-
return
|
|
359
|
+
return
|
|
371
360
|
}
|
|
372
|
-
let message =
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
361
|
+
let message =
|
|
362
|
+
'[' +
|
|
363
|
+
this.name_ +
|
|
364
|
+
'] ' +
|
|
365
|
+
(typeof loggable === 'function' ? loggable() : loggable)
|
|
366
|
+
let entry = new Entry(level, message, Date.now())
|
|
367
|
+
for (let logger = this; logger; logger = logger.parent_) {
|
|
376
368
|
if (logger.handlers_) {
|
|
377
369
|
for (let handler of logger.handlers_) {
|
|
378
|
-
handler(entry)
|
|
370
|
+
handler(entry)
|
|
379
371
|
}
|
|
380
372
|
}
|
|
381
373
|
}
|
|
@@ -387,7 +379,7 @@ class Logger {
|
|
|
387
379
|
* function that will return the message.
|
|
388
380
|
*/
|
|
389
381
|
severe(loggable) {
|
|
390
|
-
this.log(Level.SEVERE, loggable)
|
|
382
|
+
this.log(Level.SEVERE, loggable)
|
|
391
383
|
}
|
|
392
384
|
|
|
393
385
|
/**
|
|
@@ -396,7 +388,7 @@ class Logger {
|
|
|
396
388
|
* function that will return the message.
|
|
397
389
|
*/
|
|
398
390
|
warning(loggable) {
|
|
399
|
-
this.log(Level.WARNING, loggable)
|
|
391
|
+
this.log(Level.WARNING, loggable)
|
|
400
392
|
}
|
|
401
393
|
|
|
402
394
|
/**
|
|
@@ -405,7 +397,7 @@ class Logger {
|
|
|
405
397
|
* function that will return the message.
|
|
406
398
|
*/
|
|
407
399
|
info(loggable) {
|
|
408
|
-
this.log(Level.INFO, loggable)
|
|
400
|
+
this.log(Level.INFO, loggable)
|
|
409
401
|
}
|
|
410
402
|
|
|
411
403
|
/**
|
|
@@ -414,7 +406,7 @@ class Logger {
|
|
|
414
406
|
* function that will return the message.
|
|
415
407
|
*/
|
|
416
408
|
debug(loggable) {
|
|
417
|
-
this.log(Level.DEBUG, loggable)
|
|
409
|
+
this.log(Level.DEBUG, loggable)
|
|
418
410
|
}
|
|
419
411
|
|
|
420
412
|
/**
|
|
@@ -423,7 +415,7 @@ class Logger {
|
|
|
423
415
|
* function that will return the message.
|
|
424
416
|
*/
|
|
425
417
|
fine(loggable) {
|
|
426
|
-
this.log(Level.FINE, loggable)
|
|
418
|
+
this.log(Level.FINE, loggable)
|
|
427
419
|
}
|
|
428
420
|
|
|
429
421
|
/**
|
|
@@ -432,7 +424,7 @@ class Logger {
|
|
|
432
424
|
* function that will return the message.
|
|
433
425
|
*/
|
|
434
426
|
finer(loggable) {
|
|
435
|
-
this.log(Level.FINER, loggable)
|
|
427
|
+
this.log(Level.FINER, loggable)
|
|
436
428
|
}
|
|
437
429
|
|
|
438
430
|
/**
|
|
@@ -441,11 +433,10 @@ class Logger {
|
|
|
441
433
|
* function that will return the message.
|
|
442
434
|
*/
|
|
443
435
|
finest(loggable) {
|
|
444
|
-
this.log(Level.FINEST, loggable)
|
|
436
|
+
this.log(Level.FINEST, loggable)
|
|
445
437
|
}
|
|
446
438
|
}
|
|
447
439
|
|
|
448
|
-
|
|
449
440
|
/**
|
|
450
441
|
* Maintains a collection of loggers.
|
|
451
442
|
*
|
|
@@ -454,8 +445,8 @@ class Logger {
|
|
|
454
445
|
class LogManager {
|
|
455
446
|
constructor() {
|
|
456
447
|
/** @private {!Map<string, !Logger>} */
|
|
457
|
-
this.loggers_ = new Map
|
|
458
|
-
this.root_ = new Logger('', Level.OFF)
|
|
448
|
+
this.loggers_ = new Map()
|
|
449
|
+
this.root_ = new Logger('', Level.OFF)
|
|
459
450
|
}
|
|
460
451
|
|
|
461
452
|
/**
|
|
@@ -468,14 +459,14 @@ class LogManager {
|
|
|
468
459
|
*/
|
|
469
460
|
getLogger(name) {
|
|
470
461
|
if (!name) {
|
|
471
|
-
return this.root_
|
|
462
|
+
return this.root_
|
|
472
463
|
}
|
|
473
|
-
let parent = this.root_
|
|
464
|
+
let parent = this.root_
|
|
474
465
|
for (let i = name.indexOf('.'); i != -1; i = name.indexOf('.', i + 1)) {
|
|
475
|
-
let parentName = name.substr(0, i)
|
|
476
|
-
parent = this.createLogger_(parentName, parent)
|
|
466
|
+
let parentName = name.substr(0, i)
|
|
467
|
+
parent = this.createLogger_(parentName, parent)
|
|
477
468
|
}
|
|
478
|
-
return this.createLogger_(name, parent)
|
|
469
|
+
return this.createLogger_(name, parent)
|
|
479
470
|
}
|
|
480
471
|
|
|
481
472
|
/**
|
|
@@ -488,18 +479,16 @@ class LogManager {
|
|
|
488
479
|
*/
|
|
489
480
|
createLogger_(name, parent) {
|
|
490
481
|
if (this.loggers_.has(name)) {
|
|
491
|
-
return /** @type {!Logger} */(this.loggers_.get(name))
|
|
482
|
+
return /** @type {!Logger} */ (this.loggers_.get(name))
|
|
492
483
|
}
|
|
493
|
-
let logger = new Logger(name, null)
|
|
494
|
-
logger.parent_ = parent
|
|
495
|
-
this.loggers_.set(name, logger)
|
|
496
|
-
return logger
|
|
484
|
+
let logger = new Logger(name, null)
|
|
485
|
+
logger.parent_ = parent
|
|
486
|
+
this.loggers_.set(name, logger)
|
|
487
|
+
return logger
|
|
497
488
|
}
|
|
498
489
|
}
|
|
499
490
|
|
|
500
|
-
|
|
501
|
-
const logManager = new LogManager;
|
|
502
|
-
|
|
491
|
+
const logManager = new LogManager()
|
|
503
492
|
|
|
504
493
|
/**
|
|
505
494
|
* Retrieves a named logger, creating it in the process. This function will
|
|
@@ -513,10 +502,9 @@ const logManager = new LogManager;
|
|
|
513
502
|
* @return {!Logger} the requested logger.
|
|
514
503
|
*/
|
|
515
504
|
function getLogger(name) {
|
|
516
|
-
return logManager.getLogger(name)
|
|
505
|
+
return logManager.getLogger(name)
|
|
517
506
|
}
|
|
518
507
|
|
|
519
|
-
|
|
520
508
|
/**
|
|
521
509
|
* Pads a number to ensure it has a minimum of two digits.
|
|
522
510
|
*
|
|
@@ -525,44 +513,51 @@ function getLogger(name) {
|
|
|
525
513
|
*/
|
|
526
514
|
function pad(n) {
|
|
527
515
|
if (n >= 10) {
|
|
528
|
-
return '' + n
|
|
516
|
+
return '' + n
|
|
529
517
|
} else {
|
|
530
|
-
return '0' + n
|
|
518
|
+
return '0' + n
|
|
531
519
|
}
|
|
532
520
|
}
|
|
533
521
|
|
|
534
|
-
|
|
535
522
|
/**
|
|
536
523
|
* Logs all messages to the Console API.
|
|
537
524
|
* @param {!Entry} entry the entry to log.
|
|
538
525
|
*/
|
|
539
526
|
function consoleHandler(entry) {
|
|
540
527
|
if (typeof console === 'undefined' || !console) {
|
|
541
|
-
return
|
|
528
|
+
return
|
|
542
529
|
}
|
|
543
530
|
|
|
544
|
-
var timestamp = new Date(entry.timestamp)
|
|
531
|
+
var timestamp = new Date(entry.timestamp)
|
|
545
532
|
var msg =
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
533
|
+
'[' +
|
|
534
|
+
timestamp.getUTCFullYear() +
|
|
535
|
+
'-' +
|
|
536
|
+
pad(timestamp.getUTCMonth() + 1) +
|
|
537
|
+
'-' +
|
|
538
|
+
pad(timestamp.getUTCDate()) +
|
|
539
|
+
'T' +
|
|
540
|
+
pad(timestamp.getUTCHours()) +
|
|
541
|
+
':' +
|
|
542
|
+
pad(timestamp.getUTCMinutes()) +
|
|
543
|
+
':' +
|
|
544
|
+
pad(timestamp.getUTCSeconds()) +
|
|
545
|
+
'Z] ' +
|
|
546
|
+
'[' +
|
|
547
|
+
entry.level.name +
|
|
548
|
+
'] ' +
|
|
549
|
+
entry.message
|
|
550
|
+
|
|
551
|
+
var level = entry.level.value
|
|
556
552
|
if (level >= Level.SEVERE.value) {
|
|
557
|
-
console.error(msg)
|
|
553
|
+
console.error(msg)
|
|
558
554
|
} else if (level >= Level.WARNING.value) {
|
|
559
|
-
console.warn(msg)
|
|
555
|
+
console.warn(msg)
|
|
560
556
|
} else {
|
|
561
|
-
console.log(msg)
|
|
557
|
+
console.log(msg)
|
|
562
558
|
}
|
|
563
559
|
}
|
|
564
560
|
|
|
565
|
-
|
|
566
561
|
/**
|
|
567
562
|
* Adds the console handler to the given logger. The console handler will log
|
|
568
563
|
* all messages using the JavaScript Console API.
|
|
@@ -571,11 +566,10 @@ function consoleHandler(entry) {
|
|
|
571
566
|
* to the root logger.
|
|
572
567
|
*/
|
|
573
568
|
function addConsoleHandler(opt_logger) {
|
|
574
|
-
let logger = opt_logger || logManager.root_
|
|
575
|
-
logger.addHandler(consoleHandler)
|
|
569
|
+
let logger = opt_logger || logManager.root_
|
|
570
|
+
logger.addHandler(consoleHandler)
|
|
576
571
|
}
|
|
577
572
|
|
|
578
|
-
|
|
579
573
|
/**
|
|
580
574
|
* Removes the console log handler from the given logger.
|
|
581
575
|
*
|
|
@@ -584,19 +578,17 @@ function addConsoleHandler(opt_logger) {
|
|
|
584
578
|
* @see exports.addConsoleHandler
|
|
585
579
|
*/
|
|
586
580
|
function removeConsoleHandler(opt_logger) {
|
|
587
|
-
let logger = opt_logger || logManager.root_
|
|
588
|
-
logger.removeHandler(consoleHandler)
|
|
581
|
+
let logger = opt_logger || logManager.root_
|
|
582
|
+
logger.removeHandler(consoleHandler)
|
|
589
583
|
}
|
|
590
584
|
|
|
591
|
-
|
|
592
585
|
/**
|
|
593
586
|
* Installs the console log handler on the root logger.
|
|
594
587
|
*/
|
|
595
588
|
function installConsoleHandler() {
|
|
596
|
-
addConsoleHandler(logManager.root_)
|
|
589
|
+
addConsoleHandler(logManager.root_)
|
|
597
590
|
}
|
|
598
591
|
|
|
599
|
-
|
|
600
592
|
/**
|
|
601
593
|
* Common log types.
|
|
602
594
|
* @enum {string}
|
|
@@ -611,9 +603,8 @@ const Type = {
|
|
|
611
603
|
/** Logs related to performance. */
|
|
612
604
|
PERFORMANCE: 'performance',
|
|
613
605
|
/** Logs from the remote server. */
|
|
614
|
-
SERVER: 'server'
|
|
615
|
-
}
|
|
616
|
-
|
|
606
|
+
SERVER: 'server',
|
|
607
|
+
}
|
|
617
608
|
|
|
618
609
|
/**
|
|
619
610
|
* Describes the log preferences for a WebDriver session.
|
|
@@ -623,7 +614,7 @@ const Type = {
|
|
|
623
614
|
class Preferences {
|
|
624
615
|
constructor() {
|
|
625
616
|
/** @private {!Map<string, !Level>} */
|
|
626
|
-
this.prefs_ = new Map
|
|
617
|
+
this.prefs_ = new Map()
|
|
627
618
|
}
|
|
628
619
|
|
|
629
620
|
/**
|
|
@@ -634,9 +625,9 @@ class Preferences {
|
|
|
634
625
|
*/
|
|
635
626
|
setLevel(type, level) {
|
|
636
627
|
if (typeof type !== 'string') {
|
|
637
|
-
throw TypeError('specified log type is not a string: ' + typeof type)
|
|
628
|
+
throw TypeError('specified log type is not a string: ' + typeof type)
|
|
638
629
|
}
|
|
639
|
-
this.prefs_.set(type, level instanceof Level ? level : getLevel(level))
|
|
630
|
+
this.prefs_.set(type, level instanceof Level ? level : getLevel(level))
|
|
640
631
|
}
|
|
641
632
|
|
|
642
633
|
/**
|
|
@@ -645,18 +636,16 @@ class Preferences {
|
|
|
645
636
|
* preferences.
|
|
646
637
|
*/
|
|
647
638
|
toJSON() {
|
|
648
|
-
let json = {}
|
|
639
|
+
let json = {}
|
|
649
640
|
for (let key of this.prefs_.keys()) {
|
|
650
|
-
json[key] = this.prefs_.get(key).name
|
|
641
|
+
json[key] = this.prefs_.get(key).name
|
|
651
642
|
}
|
|
652
|
-
return json
|
|
643
|
+
return json
|
|
653
644
|
}
|
|
654
645
|
}
|
|
655
646
|
|
|
656
|
-
|
|
657
647
|
// PUBLIC API
|
|
658
648
|
|
|
659
|
-
|
|
660
649
|
module.exports = {
|
|
661
650
|
Entry: Entry,
|
|
662
651
|
Level: Level,
|
|
@@ -668,5 +657,5 @@ module.exports = {
|
|
|
668
657
|
getLevel: getLevel,
|
|
669
658
|
getLogger: getLogger,
|
|
670
659
|
installConsoleHandler: installConsoleHandler,
|
|
671
|
-
removeConsoleHandler: removeConsoleHandler
|
|
672
|
-
}
|
|
660
|
+
removeConsoleHandler: removeConsoleHandler,
|
|
661
|
+
}
|