codeceptjs 2.2.0 → 2.2.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/CHANGELOG.md +30 -1
- package/README.md +15 -22
- package/bin/codecept.js +3 -1
- package/docs/advanced.md +1 -1
- package/docs/angular.md +6 -9
- package/docs/basics.md +388 -86
- package/docs/bdd.md +4 -3
- package/docs/build/Nightmare.js +3 -0
- package/docs/build/Polly.js +26 -12
- package/docs/build/Puppeteer.js +14 -13
- package/docs/build/TestCafe.js +101 -2
- package/docs/build/WebDriver.js +53 -52
- package/docs/changelog.md +86 -57
- package/docs/detox.md +235 -0
- package/docs/helpers/Detox.md +579 -0
- package/docs/helpers/Polly.md +13 -3
- package/docs/helpers/Puppeteer.md +155 -156
- package/docs/helpers/TestCafe.md +53 -0
- package/docs/helpers/WebDriver.md +209 -204
- package/docs/locators.md +2 -0
- package/docs/mobile.md +5 -1
- package/docs/puppeteer.md +59 -13
- package/docs/quickstart.md +47 -12
- package/docs/testcafe.md +157 -0
- package/docs/webdriver.md +453 -0
- package/lib/command/definitions.js +152 -7
- package/lib/command/gherkin/snippets.js +19 -8
- package/lib/command/init.js +30 -22
- package/lib/command/utils.js +1 -1
- package/lib/container.js +36 -10
- package/lib/data/dataScenarioConfig.js +18 -0
- package/lib/helper/Nightmare.js +3 -0
- package/lib/helper/Polly.js +26 -12
- package/lib/helper/Puppeteer.js +14 -13
- package/lib/helper/TestCafe.js +72 -2
- package/lib/helper/WebDriver.js +53 -52
- package/lib/helper/testcafe/testcafe-utils.js +3 -2
- package/lib/interfaces/scenarioConfig.js +2 -2
- package/lib/listener/config.js +2 -2
- package/lib/plugin/allure.js +3 -0
- package/lib/step.js +5 -2
- package/lib/ui.js +1 -1
- package/lib/utils.js +13 -21
- package/package.json +14 -12
|
@@ -31,13 +31,14 @@ This helper should be configured in codecept.json or codecept.conf.js
|
|
|
31
31
|
- `keepCookies`: - keep cookies between tests when `restart` is set to false.
|
|
32
32
|
- `waitForAction`: (optional) how long to wait after click, doubleClick or PressKey actions in ms. Default: 100.
|
|
33
33
|
- `waitForNavigation`: . When to consider navigation succeeded. Possible options: `load`, `domcontentloaded`, `networkidle0`, `networkidle2`. See [Puppeteer API][3]. Array values are accepted as well.
|
|
34
|
+
- `pressKeyDelay`: . Delay between key presses in ms. Used when calling Puppeteers page.type(...) in fillField/appendField
|
|
34
35
|
- `getPageTimeout` config option to set maximum navigation time in milliseconds.
|
|
35
36
|
- `waitForTimeout`: (optional) default wait\ timeout in ms. Default: 1000.
|
|
36
37
|
- `windowSize`: (optional) default window size. Set a dimension like `640x480`.
|
|
37
38
|
- `userAgent`: (optional) user-agent string.
|
|
38
39
|
- `manualStart`: - do not start browser before a test, start it manually inside a helper with `this.helpers["Puppeteer"]._startBrowser()`.
|
|
39
|
-
- `browser`: - can be changed to `firefox` when using [puppeteer-firefox][
|
|
40
|
-
- `chrome`: (optional) pass additional [Puppeteer run options][
|
|
40
|
+
- `browser`: - can be changed to `firefox` when using [puppeteer-firefox][2].
|
|
41
|
+
- `chrome`: (optional) pass additional [Puppeteer run options][4].
|
|
41
42
|
|
|
42
43
|
#### Example #1: Wait for 0 network connections.
|
|
43
44
|
|
|
@@ -82,7 +83,7 @@ This helper should be configured in codecept.json or codecept.conf.js
|
|
|
82
83
|
}
|
|
83
84
|
```
|
|
84
85
|
|
|
85
|
-
#### Example #4: Connect to remote browser by specifying [websocket endpoint][
|
|
86
|
+
#### Example #4: Connect to remote browser by specifying [websocket endpoint][5]
|
|
86
87
|
|
|
87
88
|
```json
|
|
88
89
|
{
|
|
@@ -192,13 +193,13 @@ Set current page
|
|
|
192
193
|
|
|
193
194
|
#### Parameters
|
|
194
195
|
|
|
195
|
-
- `page` [object][
|
|
196
|
+
- `page` [object][6] page to set
|
|
196
197
|
|
|
197
198
|
### acceptPopup
|
|
198
199
|
|
|
199
200
|
Accepts the active JavaScript native popup window, as created by window.alert|window.confirm|window.prompt.
|
|
200
201
|
Don't confuse popups with modal windows, as created by [various
|
|
201
|
-
libraries][
|
|
202
|
+
libraries][7].
|
|
202
203
|
|
|
203
204
|
### amAcceptingPopups
|
|
204
205
|
|
|
@@ -236,7 +237,7 @@ I.amOnPage('/login'); // opens a login page
|
|
|
236
237
|
|
|
237
238
|
#### Parameters
|
|
238
239
|
|
|
239
|
-
- `url` [string][
|
|
240
|
+
- `url` [string][8] url path or global url.
|
|
240
241
|
|
|
241
242
|
|
|
242
243
|
|
|
@@ -251,8 +252,8 @@ I.appendField('#myTextField', 'appended');
|
|
|
251
252
|
|
|
252
253
|
#### Parameters
|
|
253
254
|
|
|
254
|
-
- `field` ([string][
|
|
255
|
-
- `value` [string][
|
|
255
|
+
- `field` ([string][8] \| [object][6]) located by label|name|CSS|XPath|strict locator
|
|
256
|
+
- `value` [string][8] text value to append.
|
|
256
257
|
|
|
257
258
|
|
|
258
259
|
|
|
@@ -273,8 +274,8 @@ I.attachFile('form input[name=avatar]', 'data/avatar.jpg');
|
|
|
273
274
|
|
|
274
275
|
#### Parameters
|
|
275
276
|
|
|
276
|
-
- `locator` ([string][
|
|
277
|
-
- `pathToFile` [string][
|
|
277
|
+
- `locator` ([string][8] \| [object][6]) field located by label|name|CSS|XPath|strict locator.
|
|
278
|
+
- `pathToFile` [string][8] local file path relative to codecept.json config file.
|
|
278
279
|
|
|
279
280
|
|
|
280
281
|
|
|
@@ -297,8 +298,8 @@ I.checkOption('agree', '//form');
|
|
|
297
298
|
|
|
298
299
|
#### Parameters
|
|
299
300
|
|
|
300
|
-
- `field` ([string][
|
|
301
|
-
- `context` [string][
|
|
301
|
+
- `field` ([string][8] \| [object][6]) checkbox located by label | name | CSS | XPath | strict locator.
|
|
302
|
+
- `context` [string][8] (optional, `null` by default) element located by CSS | XPath | strict locator.
|
|
302
303
|
|
|
303
304
|
|
|
304
305
|
|
|
@@ -315,7 +316,7 @@ I.clearCookie('test');
|
|
|
315
316
|
#### Parameters
|
|
316
317
|
|
|
317
318
|
- `name`
|
|
318
|
-
- `cookie` [string][
|
|
319
|
+
- `cookie` [string][8] (optional, `null` by default) cookie name
|
|
319
320
|
|
|
320
321
|
|
|
321
322
|
|
|
@@ -332,7 +333,7 @@ I.clearField('#email');
|
|
|
332
333
|
#### Parameters
|
|
333
334
|
|
|
334
335
|
- `field`
|
|
335
|
-
- `editable` ([string][
|
|
336
|
+
- `editable` ([string][8] \| [object][6]) field located by label|name|CSS|XPath|strict locator.
|
|
336
337
|
|
|
337
338
|
|
|
338
339
|
|
|
@@ -362,8 +363,8 @@ I.click({css: 'nav a.login'});
|
|
|
362
363
|
|
|
363
364
|
#### Parameters
|
|
364
365
|
|
|
365
|
-
- `locator` ([string][
|
|
366
|
-
- `context` ([string][
|
|
366
|
+
- `locator` ([string][8] \| [object][6]) clickable link or button located by text, or any element located by CSS|XPath|strict locator.
|
|
367
|
+
- `context` ([string][8] \| [object][6]) (optional, `null` by default) element to search in CSS|XPath|Strict locator.
|
|
367
368
|
|
|
368
369
|
|
|
369
370
|
|
|
@@ -381,8 +382,8 @@ I.clickLink('Logout', '#nav');
|
|
|
381
382
|
|
|
382
383
|
#### Parameters
|
|
383
384
|
|
|
384
|
-
- `locator` ([string][
|
|
385
|
-
- `context` ([string][
|
|
385
|
+
- `locator` ([string][8] \| [object][6]) clickable link or button located by text, or any element located by CSS|XPath|strict locator
|
|
386
|
+
- `context` ([string][8] \| [object][6]) (optional, `null` by default) element to search in CSS|XPath|Strict locator
|
|
386
387
|
|
|
387
388
|
|
|
388
389
|
|
|
@@ -418,8 +419,8 @@ I.dontSee('Login', '.nav'); // no login inside .nav element
|
|
|
418
419
|
|
|
419
420
|
#### Parameters
|
|
420
421
|
|
|
421
|
-
- `text` [string][
|
|
422
|
-
- `context` ([string][
|
|
422
|
+
- `text` [string][8] which is not present.
|
|
423
|
+
- `context` ([string][8] \| [object][6]) (optional) element located by CSS|XPath|strict locator in which to perfrom search.
|
|
423
424
|
|
|
424
425
|
|
|
425
426
|
|
|
@@ -438,7 +439,7 @@ I.dontSeeeCheckboxIsChedcked('agree'); // located by name
|
|
|
438
439
|
|
|
439
440
|
#### Parameters
|
|
440
441
|
|
|
441
|
-
- `field` ([string][
|
|
442
|
+
- `field` ([string][8] \| [object][6]) located by label|name|CSS|XPath|strict locator.
|
|
442
443
|
|
|
443
444
|
|
|
444
445
|
|
|
@@ -452,7 +453,7 @@ I.dontSeeCookie('auth'); // no auth cookie
|
|
|
452
453
|
|
|
453
454
|
#### Parameters
|
|
454
455
|
|
|
455
|
-
- `name` [string][
|
|
456
|
+
- `name` [string][8] cookie name.
|
|
456
457
|
|
|
457
458
|
|
|
458
459
|
|
|
@@ -468,7 +469,7 @@ I.dontSeeCurrentUrlEquals('http://mysite.com/login'); // absolute urls are also
|
|
|
468
469
|
|
|
469
470
|
#### Parameters
|
|
470
471
|
|
|
471
|
-
- `url` [string][
|
|
472
|
+
- `url` [string][8] value to check.
|
|
472
473
|
|
|
473
474
|
|
|
474
475
|
|
|
@@ -482,7 +483,7 @@ I.dontSeeElement('.modal'); // modal is not shown
|
|
|
482
483
|
|
|
483
484
|
#### Parameters
|
|
484
485
|
|
|
485
|
-
- `locator` ([string][
|
|
486
|
+
- `locator` ([string][8] \| [object][6]) located by CSS|XPath|Strict locator.
|
|
486
487
|
|
|
487
488
|
|
|
488
489
|
|
|
@@ -501,7 +502,7 @@ I.dontSeeElementInDOM('.nav'); // checks that element is not on page visible or
|
|
|
501
502
|
|
|
502
503
|
#### Parameters
|
|
503
504
|
|
|
504
|
-
- `locator` ([string][
|
|
505
|
+
- `locator` ([string][8] \| [object][6]) located by CSS|XPath|Strict locator.
|
|
505
506
|
|
|
506
507
|
|
|
507
508
|
|
|
@@ -511,7 +512,7 @@ Checks that current url does not contain a provided fragment.
|
|
|
511
512
|
|
|
512
513
|
#### Parameters
|
|
513
514
|
|
|
514
|
-
- `url` [string][
|
|
515
|
+
- `url` [string][8] value to check.
|
|
515
516
|
|
|
516
517
|
|
|
517
518
|
|
|
@@ -527,8 +528,8 @@ I.dontSeeInField({ css: 'form input.email' }, 'user@user.com'); // field by CSS
|
|
|
527
528
|
|
|
528
529
|
#### Parameters
|
|
529
530
|
|
|
530
|
-
- `field` ([string][
|
|
531
|
-
- `value` [string][
|
|
531
|
+
- `field` ([string][8] \| [object][6]) located by label|name|CSS|XPath|strict locator.
|
|
532
|
+
- `value` [string][8] value to check.
|
|
532
533
|
|
|
533
534
|
|
|
534
535
|
|
|
@@ -543,7 +544,7 @@ I.dontSeeInSource('<!--'); // no comments in source
|
|
|
543
544
|
#### Parameters
|
|
544
545
|
|
|
545
546
|
- `text`
|
|
546
|
-
- `value` [string][
|
|
547
|
+
- `value` [string][8] to check.
|
|
547
548
|
|
|
548
549
|
|
|
549
550
|
|
|
@@ -557,7 +558,7 @@ I.dontSeeInTitle('Error');
|
|
|
557
558
|
|
|
558
559
|
#### Parameters
|
|
559
560
|
|
|
560
|
-
- `text` [string][
|
|
561
|
+
- `text` [string][8] value to check.
|
|
561
562
|
|
|
562
563
|
|
|
563
564
|
|
|
@@ -575,8 +576,8 @@ I.doubleClick('.btn.edit');
|
|
|
575
576
|
|
|
576
577
|
#### Parameters
|
|
577
578
|
|
|
578
|
-
- `locator` ([string][
|
|
579
|
-
- `context` ([string][
|
|
579
|
+
- `locator` ([string][8] \| [object][6]) clickable link or button located by text, or any element located by CSS|XPath|strict locator.
|
|
580
|
+
- `context` ([string][8] \| [object][6]) (optional, `null` by default) element to search in CSS|XPath|Strict locator.
|
|
580
581
|
|
|
581
582
|
|
|
582
583
|
|
|
@@ -605,8 +606,8 @@ I.dragAndDrop('#dragHandle', '#container');
|
|
|
605
606
|
|
|
606
607
|
#### Parameters
|
|
607
608
|
|
|
608
|
-
- `srcElement` ([string][
|
|
609
|
-
- `destElement` ([string][
|
|
609
|
+
- `srcElement` ([string][8] \| [object][6]) located by CSS|XPath|strict locator.
|
|
610
|
+
- `destElement` ([string][8] \| [object][6]) located by CSS|XPath|strict locator.
|
|
610
611
|
|
|
611
612
|
|
|
612
613
|
|
|
@@ -622,8 +623,8 @@ I.dragSlider('#slider', -70);
|
|
|
622
623
|
|
|
623
624
|
#### Parameters
|
|
624
625
|
|
|
625
|
-
- `locator` ([string][
|
|
626
|
-
- `offsetX` [number][
|
|
626
|
+
- `locator` ([string][8] \| [object][6]) located by label|name|CSS|XPath|strict locator.
|
|
627
|
+
- `offsetX` [number][9] position to drag.
|
|
627
628
|
|
|
628
629
|
|
|
629
630
|
|
|
@@ -637,7 +638,7 @@ This action supports [React locators](https://codecept.io/react#locators)
|
|
|
637
638
|
Executes async script on page.
|
|
638
639
|
Provided function should execute a passed callback (as first argument) to signal it is finished.
|
|
639
640
|
|
|
640
|
-
Example: In Vue.js to make components completely rendered we are waiting for [nextTick][
|
|
641
|
+
Example: In Vue.js to make components completely rendered we are waiting for [nextTick][10].
|
|
641
642
|
|
|
642
643
|
```js
|
|
643
644
|
I.executeAsyncScript(function(done) {
|
|
@@ -657,7 +658,7 @@ let val = await I.executeAsyncScript(function(url, done) {
|
|
|
657
658
|
|
|
658
659
|
#### Parameters
|
|
659
660
|
|
|
660
|
-
- `fn` ([string][
|
|
661
|
+
- `fn` ([string][8] \| [function][11]) function to be executed in browser context.
|
|
661
662
|
|
|
662
663
|
### executeScript
|
|
663
664
|
|
|
@@ -687,7 +688,7 @@ let date = await I.executeScript(function(el) {
|
|
|
687
688
|
|
|
688
689
|
#### Parameters
|
|
689
690
|
|
|
690
|
-
- `fn` ([string][
|
|
691
|
+
- `fn` ([string][8] \| [function][11]) function to be executed in browser context.
|
|
691
692
|
|
|
692
693
|
### fillField
|
|
693
694
|
|
|
@@ -707,8 +708,8 @@ I.fillField({css: 'form#login input[name=username]'}, 'John');
|
|
|
707
708
|
|
|
708
709
|
#### Parameters
|
|
709
710
|
|
|
710
|
-
- `field` ([string][
|
|
711
|
-
- `value` [string][
|
|
711
|
+
- `field` ([string][8] \| [object][6]) located by label|name|CSS|XPath|strict locator.
|
|
712
|
+
- `value` [string][8] text value to fill.
|
|
712
713
|
|
|
713
714
|
|
|
714
715
|
|
|
@@ -729,10 +730,10 @@ let hint = await I.grabAttributeFrom('#tooltip', 'title');
|
|
|
729
730
|
|
|
730
731
|
#### Parameters
|
|
731
732
|
|
|
732
|
-
- `locator` ([string][
|
|
733
|
-
- `attr` [string][
|
|
733
|
+
- `locator` ([string][8] \| [object][6]) element located by CSS|XPath|strict locator.
|
|
734
|
+
- `attr` [string][8] attribute name.
|
|
734
735
|
|
|
735
|
-
Returns [Promise][
|
|
736
|
+
Returns [Promise][12]<[string][8]> attribute value
|
|
736
737
|
|
|
737
738
|
|
|
738
739
|
|
|
@@ -766,7 +767,7 @@ assert(cookie.value, '123456');
|
|
|
766
767
|
|
|
767
768
|
- `name` cookie name.
|
|
768
769
|
|
|
769
|
-
Returns [Promise][
|
|
770
|
+
Returns [Promise][12]<[string][8]> attribute value
|
|
770
771
|
|
|
771
772
|
Returns cookie in JSON format. If name not passed returns all cookies for this domain.
|
|
772
773
|
|
|
@@ -781,10 +782,10 @@ const value = await I.grabCssPropertyFrom('h3', 'font-weight');
|
|
|
781
782
|
|
|
782
783
|
#### Parameters
|
|
783
784
|
|
|
784
|
-
- `locator` ([string][
|
|
785
|
-
- `cssProperty` [string][
|
|
785
|
+
- `locator` ([string][8] \| [object][6]) element located by CSS|XPath|strict locator.
|
|
786
|
+
- `cssProperty` [string][8] CSS property name.
|
|
786
787
|
|
|
787
|
-
Returns [Promise][
|
|
788
|
+
Returns [Promise][12]<[string][8]> CSS value
|
|
788
789
|
|
|
789
790
|
|
|
790
791
|
|
|
@@ -803,7 +804,7 @@ let url = await I.grabCurrentUrl();
|
|
|
803
804
|
console.log(`Current URL is [${url}]`);
|
|
804
805
|
```
|
|
805
806
|
|
|
806
|
-
Returns [Promise][
|
|
807
|
+
Returns [Promise][12]<[string][8]> current URL
|
|
807
808
|
|
|
808
809
|
|
|
809
810
|
|
|
@@ -847,7 +848,7 @@ let postHTML = await I.grabHTMLFrom('#post');
|
|
|
847
848
|
|
|
848
849
|
- `locator` element located by CSS|XPath|strict locator.
|
|
849
850
|
|
|
850
|
-
Returns [Promise][
|
|
851
|
+
Returns [Promise][12]<[string][8]> HTML code for an element
|
|
851
852
|
|
|
852
853
|
|
|
853
854
|
|
|
@@ -859,7 +860,7 @@ Grab number of open tabs.
|
|
|
859
860
|
let tabs = await I.grabNumberOfOpenTabs();
|
|
860
861
|
```
|
|
861
862
|
|
|
862
|
-
Returns [Promise][
|
|
863
|
+
Returns [Promise][12]<[number][9]> number of open tabs
|
|
863
864
|
|
|
864
865
|
|
|
865
866
|
|
|
@@ -873,9 +874,9 @@ let numOfElements = await I.grabNumberOfVisibleElements('p');
|
|
|
873
874
|
|
|
874
875
|
#### Parameters
|
|
875
876
|
|
|
876
|
-
- `locator` ([string][
|
|
877
|
+
- `locator` ([string][8] \| [object][6]) located by CSS|XPath|strict locator.
|
|
877
878
|
|
|
878
|
-
Returns [Promise][
|
|
879
|
+
Returns [Promise][12]<[number][9]> number of visible elements
|
|
879
880
|
|
|
880
881
|
|
|
881
882
|
|
|
@@ -893,7 +894,7 @@ Resumes test execution, so should be used inside an async function with `await`
|
|
|
893
894
|
let { x, y } = await I.grabPageScrollPosition();
|
|
894
895
|
```
|
|
895
896
|
|
|
896
|
-
Returns [Promise][
|
|
897
|
+
Returns [Promise][12]<[object][6]> scroll position
|
|
897
898
|
|
|
898
899
|
|
|
899
900
|
|
|
@@ -914,7 +915,7 @@ Resumes test execution, so should be used inside an async function.
|
|
|
914
915
|
let pageSource = await I.grabSource();
|
|
915
916
|
```
|
|
916
917
|
|
|
917
|
-
Returns [Promise][
|
|
918
|
+
Returns [Promise][12]<[string][8]> source code
|
|
918
919
|
|
|
919
920
|
|
|
920
921
|
|
|
@@ -933,7 +934,7 @@ If multiple elements found returns an array of texts.
|
|
|
933
934
|
|
|
934
935
|
- `locator` element located by CSS|XPath|strict locator.
|
|
935
936
|
|
|
936
|
-
Returns [Promise][
|
|
937
|
+
Returns [Promise][12]<[string][8]> attribute value
|
|
937
938
|
|
|
938
939
|
|
|
939
940
|
|
|
@@ -951,7 +952,7 @@ Resumes test execution, so should be used inside async with `await` operator.
|
|
|
951
952
|
let title = await I.grabTitle();
|
|
952
953
|
```
|
|
953
954
|
|
|
954
|
-
Returns [Promise][
|
|
955
|
+
Returns [Promise][12]<[string][8]> title
|
|
955
956
|
|
|
956
957
|
|
|
957
958
|
|
|
@@ -966,16 +967,16 @@ let email = await I.grabValueFrom('input[name=email]');
|
|
|
966
967
|
|
|
967
968
|
#### Parameters
|
|
968
969
|
|
|
969
|
-
- `locator` ([string][
|
|
970
|
+
- `locator` ([string][8] \| [object][6]) field located by label|name|CSS|XPath|strict locator.
|
|
970
971
|
|
|
971
|
-
Returns [Promise][
|
|
972
|
+
Returns [Promise][12]<[string][8]> attribute value
|
|
972
973
|
|
|
973
974
|
|
|
974
975
|
|
|
975
976
|
### handleDownloads
|
|
976
977
|
|
|
977
978
|
Sets a directory to where save files. Allows to test file downloads.
|
|
978
|
-
Should be used with [FileSystem helper][
|
|
979
|
+
Should be used with [FileSystem helper][13] to check that file were downloaded correctly.
|
|
979
980
|
|
|
980
981
|
By default files are saved to `output/downloads`.
|
|
981
982
|
This directory is cleaned on every `handleDownloads` call, to ensure no old files are kept.
|
|
@@ -989,7 +990,7 @@ I.seeFile('avatar.jpg');
|
|
|
989
990
|
|
|
990
991
|
#### Parameters
|
|
991
992
|
|
|
992
|
-
- `downloadPath` [string][
|
|
993
|
+
- `downloadPath` [string][8] change this parameter to set another directory for saving
|
|
993
994
|
|
|
994
995
|
### haveRequestHeaders
|
|
995
996
|
|
|
@@ -1003,7 +1004,7 @@ I.haveRequestHeaders({
|
|
|
1003
1004
|
|
|
1004
1005
|
#### Parameters
|
|
1005
1006
|
|
|
1006
|
-
- `customHeaders` [object][
|
|
1007
|
+
- `customHeaders` [object][6] headers to set
|
|
1007
1008
|
|
|
1008
1009
|
### moveCursorTo
|
|
1009
1010
|
|
|
@@ -1017,9 +1018,9 @@ I.moveCursorTo('#submit', 5,5);
|
|
|
1017
1018
|
|
|
1018
1019
|
#### Parameters
|
|
1019
1020
|
|
|
1020
|
-
- `locator` ([string][
|
|
1021
|
-
- `offsetX` [number][
|
|
1022
|
-
- `offsetY` [number][
|
|
1021
|
+
- `locator` ([string][8] \| [object][6]) located by CSS|XPath|strict locator.
|
|
1022
|
+
- `offsetX` [number][9] (optional, `0` by default) X-axis offset.
|
|
1023
|
+
- `offsetY` [number][9] (optional, `0` by default) Y-axis offset.
|
|
1023
1024
|
|
|
1024
1025
|
|
|
1025
1026
|
|
|
@@ -1039,7 +1040,7 @@ I.openNewTab();
|
|
|
1039
1040
|
### pressKey
|
|
1040
1041
|
|
|
1041
1042
|
Presses a key on a focused element.
|
|
1042
|
-
Special keys like 'Enter', 'Control', [etc][
|
|
1043
|
+
Special keys like 'Enter', 'Control', [etc][14]
|
|
1043
1044
|
will be replaced with corresponding unicode.
|
|
1044
1045
|
If modifier key is used (Control, Command, Alt, Shift) in array, it will be released afterwards.
|
|
1045
1046
|
|
|
@@ -1050,7 +1051,7 @@ I.pressKey(['Control','a']);
|
|
|
1050
1051
|
|
|
1051
1052
|
#### Parameters
|
|
1052
1053
|
|
|
1053
|
-
- `key` ([string][
|
|
1054
|
+
- `key` ([string][8] \| [array][15]) key or array of keys to press.
|
|
1054
1055
|
|
|
1055
1056
|
|
|
1056
1057
|
|
|
@@ -1105,8 +1106,8 @@ First parameter can be set to `maximize`.
|
|
|
1105
1106
|
|
|
1106
1107
|
#### Parameters
|
|
1107
1108
|
|
|
1108
|
-
- `width` [number][
|
|
1109
|
-
- `height` [number][
|
|
1109
|
+
- `width` [number][9] width in pixels or `maximize`.
|
|
1110
|
+
- `height` [number][9] height in pixels.
|
|
1110
1111
|
|
|
1111
1112
|
Unlike other drivers Puppeteer changes the size of a viewport, not the window!
|
|
1112
1113
|
Puppeteer does not control the window of a browser so it can't adjust its real size.
|
|
@@ -1127,8 +1128,8 @@ I.rightClick('Click me', '.context');
|
|
|
1127
1128
|
|
|
1128
1129
|
#### Parameters
|
|
1129
1130
|
|
|
1130
|
-
- `locator` ([string][
|
|
1131
|
-
- `context` ([string][
|
|
1131
|
+
- `locator` ([string][8] \| [object][6]) clickable element located by CSS|XPath|strict locator.
|
|
1132
|
+
- `context` ([string][8] \| [object][6]) (optional, `null` by default) element located by CSS|XPath|strict locator.
|
|
1132
1133
|
|
|
1133
1134
|
|
|
1134
1135
|
|
|
@@ -1149,8 +1150,8 @@ I.saveScreenshot('debug.png', true) //resizes to available scrollHeight and scro
|
|
|
1149
1150
|
|
|
1150
1151
|
#### Parameters
|
|
1151
1152
|
|
|
1152
|
-
- `fileName` [string][
|
|
1153
|
-
- `fullPage` [boolean][
|
|
1153
|
+
- `fileName` [string][8] file name to save.
|
|
1154
|
+
- `fullPage` [boolean][16] (optional, `false` by default) flag to enable fullscreen screenshot mode.
|
|
1154
1155
|
|
|
1155
1156
|
|
|
1156
1157
|
|
|
@@ -1188,9 +1189,9 @@ I.scrollTo('#submit', 5, 5);
|
|
|
1188
1189
|
|
|
1189
1190
|
#### Parameters
|
|
1190
1191
|
|
|
1191
|
-
- `locator` ([string][
|
|
1192
|
-
- `offsetX` [number][
|
|
1193
|
-
- `offsetY` [number][
|
|
1192
|
+
- `locator` ([string][8] \| [object][6]) located by CSS|XPath|strict locator.
|
|
1193
|
+
- `offsetX` [number][9] (optional, `0` by default) X-axis offset.
|
|
1194
|
+
- `offsetY` [number][9] (optional, `0` by default) Y-axis offset.
|
|
1194
1195
|
|
|
1195
1196
|
|
|
1196
1197
|
|
|
@@ -1207,8 +1208,8 @@ I.see('Register', {css: 'form.register'}); // use strict locator
|
|
|
1207
1208
|
|
|
1208
1209
|
#### Parameters
|
|
1209
1210
|
|
|
1210
|
-
- `text` [string][
|
|
1211
|
-
- `context` ([string][
|
|
1211
|
+
- `text` [string][8] expected on page.
|
|
1212
|
+
- `context` ([string][8] \| [object][6]) (optional, `null` by default) element located by CSS|Xpath|strict locator in which to search for text.
|
|
1212
1213
|
|
|
1213
1214
|
|
|
1214
1215
|
|
|
@@ -1226,8 +1227,8 @@ I.seeAttributesOnElements('//form', { method: "post"});
|
|
|
1226
1227
|
|
|
1227
1228
|
#### Parameters
|
|
1228
1229
|
|
|
1229
|
-
- `locator` ([string][
|
|
1230
|
-
- `attributes` [object][
|
|
1230
|
+
- `locator` ([string][8] \| [object][6]) located by CSS|XPath|strict locator.
|
|
1231
|
+
- `attributes` [object][6] attributes and their values to check.
|
|
1231
1232
|
|
|
1232
1233
|
|
|
1233
1234
|
|
|
@@ -1248,7 +1249,7 @@ I.seeCheckboxIsChecked({css: '#signup_form input[type=checkbox]'});
|
|
|
1248
1249
|
|
|
1249
1250
|
#### Parameters
|
|
1250
1251
|
|
|
1251
|
-
- `field` ([string][
|
|
1252
|
+
- `field` ([string][8] \| [object][6]) located by label|name|CSS|XPath|strict locator.
|
|
1252
1253
|
|
|
1253
1254
|
|
|
1254
1255
|
|
|
@@ -1262,7 +1263,7 @@ I.seeCookie('Auth');
|
|
|
1262
1263
|
|
|
1263
1264
|
#### Parameters
|
|
1264
1265
|
|
|
1265
|
-
- `name` [string][
|
|
1266
|
+
- `name` [string][8] cookie name.
|
|
1266
1267
|
|
|
1267
1268
|
|
|
1268
1269
|
|
|
@@ -1276,8 +1277,8 @@ I.seeCssPropertiesOnElements('h3', { 'font-weight': "bold"});
|
|
|
1276
1277
|
|
|
1277
1278
|
#### Parameters
|
|
1278
1279
|
|
|
1279
|
-
- `locator` ([string][
|
|
1280
|
-
- `cssProperties` [object][
|
|
1280
|
+
- `locator` ([string][8] \| [object][6]) located by CSS|XPath|strict locator.
|
|
1281
|
+
- `cssProperties` [object][6] object with CSS properties and their values to check.
|
|
1281
1282
|
|
|
1282
1283
|
|
|
1283
1284
|
|
|
@@ -1299,7 +1300,7 @@ I.seeCurrentUrlEquals('http://my.site.com/register');
|
|
|
1299
1300
|
|
|
1300
1301
|
#### Parameters
|
|
1301
1302
|
|
|
1302
|
-
- `url` [string][
|
|
1303
|
+
- `url` [string][8] value to check.
|
|
1303
1304
|
|
|
1304
1305
|
|
|
1305
1306
|
|
|
@@ -1314,7 +1315,7 @@ I.seeElement('#modal');
|
|
|
1314
1315
|
|
|
1315
1316
|
#### Parameters
|
|
1316
1317
|
|
|
1317
|
-
- `locator` ([string][
|
|
1318
|
+
- `locator` ([string][8] \| [object][6]) located by CSS|XPath|strict locator.
|
|
1318
1319
|
|
|
1319
1320
|
|
|
1320
1321
|
|
|
@@ -1334,7 +1335,7 @@ I.seeElementInDOM('#modal');
|
|
|
1334
1335
|
|
|
1335
1336
|
#### Parameters
|
|
1336
1337
|
|
|
1337
|
-
- `locator` ([string][
|
|
1338
|
+
- `locator` ([string][8] \| [object][6]) element located by CSS|XPath|strict locator.
|
|
1338
1339
|
|
|
1339
1340
|
|
|
1340
1341
|
|
|
@@ -1348,7 +1349,7 @@ I.seeInCurrentUrl('/register'); // we are on registration page
|
|
|
1348
1349
|
|
|
1349
1350
|
#### Parameters
|
|
1350
1351
|
|
|
1351
|
-
- `url` [string][
|
|
1352
|
+
- `url` [string][8] a fragment to check
|
|
1352
1353
|
|
|
1353
1354
|
|
|
1354
1355
|
|
|
@@ -1366,8 +1367,8 @@ I.seeInField('#searchform input','Search');
|
|
|
1366
1367
|
|
|
1367
1368
|
#### Parameters
|
|
1368
1369
|
|
|
1369
|
-
- `field` ([string][
|
|
1370
|
-
- `value` [string][
|
|
1370
|
+
- `field` ([string][8] \| [object][6]) located by label|name|CSS|XPath|strict locator.
|
|
1371
|
+
- `value` [string][8] value to check.
|
|
1371
1372
|
|
|
1372
1373
|
|
|
1373
1374
|
|
|
@@ -1390,7 +1391,7 @@ I.seeInSource('<h1>Green eggs & ham</h1>');
|
|
|
1390
1391
|
|
|
1391
1392
|
#### Parameters
|
|
1392
1393
|
|
|
1393
|
-
- `text` [string][
|
|
1394
|
+
- `text` [string][8] value to check.
|
|
1394
1395
|
|
|
1395
1396
|
|
|
1396
1397
|
|
|
@@ -1404,7 +1405,7 @@ I.seeInTitle('Home Page');
|
|
|
1404
1405
|
|
|
1405
1406
|
#### Parameters
|
|
1406
1407
|
|
|
1407
|
-
- `text` [string][
|
|
1408
|
+
- `text` [string][8] text value to check.
|
|
1408
1409
|
|
|
1409
1410
|
|
|
1410
1411
|
|
|
@@ -1419,8 +1420,8 @@ I.seeNumberOfElements('#submitBtn', 1);
|
|
|
1419
1420
|
|
|
1420
1421
|
#### Parameters
|
|
1421
1422
|
|
|
1422
|
-
- `locator` ([string][
|
|
1423
|
-
- `num` [number][
|
|
1423
|
+
- `locator` ([string][8] \| [object][6]) element located by CSS|XPath|strict locator.
|
|
1424
|
+
- `num` [number][9] number of elements.
|
|
1424
1425
|
|
|
1425
1426
|
|
|
1426
1427
|
|
|
@@ -1439,8 +1440,8 @@ I.seeNumberOfVisibleElements('.buttons', 3);
|
|
|
1439
1440
|
|
|
1440
1441
|
#### Parameters
|
|
1441
1442
|
|
|
1442
|
-
- `locator` ([string][
|
|
1443
|
-
- `num` [number][
|
|
1443
|
+
- `locator` ([string][8] \| [object][6]) element located by CSS|XPath|strict locator.
|
|
1444
|
+
- `num` [number][9] number of elements.
|
|
1444
1445
|
|
|
1445
1446
|
|
|
1446
1447
|
|
|
@@ -1496,8 +1497,8 @@ I.selectOption('Which OS do you use?', ['Android', 'iOS']);
|
|
|
1496
1497
|
|
|
1497
1498
|
#### Parameters
|
|
1498
1499
|
|
|
1499
|
-
- `select` ([string][
|
|
1500
|
-
- `option` ([string][
|
|
1500
|
+
- `select` ([string][8] \| [object][6]) field located by label|name|CSS|XPath|strict locator.
|
|
1501
|
+
- `option` ([string][8] \| [array][15]) visible text or value of option.
|
|
1501
1502
|
|
|
1502
1503
|
|
|
1503
1504
|
|
|
@@ -1511,7 +1512,7 @@ I.setCookie({name: 'auth', value: true});
|
|
|
1511
1512
|
|
|
1512
1513
|
#### Parameters
|
|
1513
1514
|
|
|
1514
|
-
- `cookie` [object][
|
|
1515
|
+
- `cookie` [object][6] a cookie object.
|
|
1515
1516
|
|
|
1516
1517
|
|
|
1517
1518
|
|
|
@@ -1526,7 +1527,7 @@ I.switchTo(); // switch back to main page
|
|
|
1526
1527
|
|
|
1527
1528
|
#### Parameters
|
|
1528
1529
|
|
|
1529
|
-
- `locator` ([string][
|
|
1530
|
+
- `locator` ([string][8] \| [object][6]) (optional, `null` by default) element located by CSS|XPath|strict locator.
|
|
1530
1531
|
|
|
1531
1532
|
|
|
1532
1533
|
|
|
@@ -1541,7 +1542,7 @@ I.switchToNextTab(2);
|
|
|
1541
1542
|
|
|
1542
1543
|
#### Parameters
|
|
1543
1544
|
|
|
1544
|
-
- `num` [number][
|
|
1545
|
+
- `num` [number][9]
|
|
1545
1546
|
|
|
1546
1547
|
### switchToPreviousTab
|
|
1547
1548
|
|
|
@@ -1554,7 +1555,7 @@ I.switchToPreviousTab(2);
|
|
|
1554
1555
|
|
|
1555
1556
|
#### Parameters
|
|
1556
1557
|
|
|
1557
|
-
- `num` [number][
|
|
1558
|
+
- `num` [number][9]
|
|
1558
1559
|
|
|
1559
1560
|
### uncheckOption
|
|
1560
1561
|
|
|
@@ -1571,8 +1572,8 @@ I.uncheckOption('agree', '//form');
|
|
|
1571
1572
|
|
|
1572
1573
|
#### Parameters
|
|
1573
1574
|
|
|
1574
|
-
- `field` ([string][
|
|
1575
|
-
- `context` [string][
|
|
1575
|
+
- `field` ([string][8] \| [object][6]) checkbox located by label | name | CSS | XPath | strict locator.
|
|
1576
|
+
- `context` [string][8] (optional, `null` by default) element located by CSS | XPath | strict locator.
|
|
1576
1577
|
|
|
1577
1578
|
|
|
1578
1579
|
|
|
@@ -1586,7 +1587,7 @@ I.wait(2); // wait 2 secs
|
|
|
1586
1587
|
|
|
1587
1588
|
#### Parameters
|
|
1588
1589
|
|
|
1589
|
-
- `sec` [number][
|
|
1590
|
+
- `sec` [number][9] number of second to wait.
|
|
1590
1591
|
|
|
1591
1592
|
|
|
1592
1593
|
|
|
@@ -1601,8 +1602,8 @@ I.waitForDetached('#popup');
|
|
|
1601
1602
|
|
|
1602
1603
|
#### Parameters
|
|
1603
1604
|
|
|
1604
|
-
- `locator` ([string][
|
|
1605
|
-
- `sec` [number][
|
|
1605
|
+
- `locator` ([string][8] \| [object][6]) element located by CSS|XPath|strict locator.
|
|
1606
|
+
- `sec` [number][9] (optional, `1` by default) time in seconds to wait
|
|
1606
1607
|
|
|
1607
1608
|
|
|
1608
1609
|
|
|
@@ -1618,8 +1619,8 @@ I.waitForElement('.btn.continue', 5); // wait for 5 secs
|
|
|
1618
1619
|
|
|
1619
1620
|
#### Parameters
|
|
1620
1621
|
|
|
1621
|
-
- `locator` ([string][
|
|
1622
|
-
- `sec` [number][
|
|
1622
|
+
- `locator` ([string][8] \| [object][6]) element located by CSS|XPath|strict locator.
|
|
1623
|
+
- `sec` [number][9] (optional, `1` by default) time in seconds to wait
|
|
1623
1624
|
|
|
1624
1625
|
|
|
1625
1626
|
|
|
@@ -1635,7 +1636,7 @@ Element can be located by CSS or XPath.
|
|
|
1635
1636
|
|
|
1636
1637
|
#### Parameters
|
|
1637
1638
|
|
|
1638
|
-
- `locator` ([string][
|
|
1639
|
+
- `locator` ([string][8] \| [object][6]) element located by CSS|XPath|strict locator.
|
|
1639
1640
|
- `sec` (optional) time in seconds to wait, 1 by default.
|
|
1640
1641
|
|
|
1641
1642
|
|
|
@@ -1657,9 +1658,9 @@ I.waitForFunction((count) => window.requests == count, [3], 5) // pass args and
|
|
|
1657
1658
|
|
|
1658
1659
|
#### Parameters
|
|
1659
1660
|
|
|
1660
|
-
- `fn` ([string][
|
|
1661
|
-
- `argsOrSec` ([array][
|
|
1662
|
-
- `sec` [number][
|
|
1661
|
+
- `fn` ([string][8] \| [function][11]) to be executed in browser context.
|
|
1662
|
+
- `argsOrSec` ([array][15] \| [number][9]) (optional, `1` by default) arguments for function or seconds.
|
|
1663
|
+
- `sec` [number][9] (optional, `1` by default) time in seconds to wait
|
|
1663
1664
|
|
|
1664
1665
|
|
|
1665
1666
|
|
|
@@ -1674,8 +1675,8 @@ I.waitForInvisible('#popup');
|
|
|
1674
1675
|
|
|
1675
1676
|
#### Parameters
|
|
1676
1677
|
|
|
1677
|
-
- `locator` ([string][
|
|
1678
|
-
- `sec` [number][
|
|
1678
|
+
- `locator` ([string][8] \| [object][6]) element located by CSS|XPath|strict locator.
|
|
1679
|
+
- `sec` [number][9] (optional, `1` by default) time in seconds to wait
|
|
1679
1680
|
|
|
1680
1681
|
|
|
1681
1682
|
|
|
@@ -1700,8 +1701,8 @@ I.waitForRequest(request => request.url() === 'http://example.com' && request.me
|
|
|
1700
1701
|
|
|
1701
1702
|
#### Parameters
|
|
1702
1703
|
|
|
1703
|
-
- `urlOrPredicate` ([string][
|
|
1704
|
-
- `sec` [number][
|
|
1704
|
+
- `urlOrPredicate` ([string][8] \| [function][11])
|
|
1705
|
+
- `sec` [number][9]? seconds to wait
|
|
1705
1706
|
|
|
1706
1707
|
### waitForResponse
|
|
1707
1708
|
|
|
@@ -1714,8 +1715,8 @@ I.waitForResponse(request => request.url() === 'http://example.com' && request.m
|
|
|
1714
1715
|
|
|
1715
1716
|
#### Parameters
|
|
1716
1717
|
|
|
1717
|
-
- `urlOrPredicate` ([string][
|
|
1718
|
-
- `sec` [number][
|
|
1718
|
+
- `urlOrPredicate` ([string][8] \| [function][11])
|
|
1719
|
+
- `sec` [number][9]? number of seconds to wait
|
|
1719
1720
|
|
|
1720
1721
|
### waitForText
|
|
1721
1722
|
|
|
@@ -1730,9 +1731,9 @@ I.waitForText('Thank you, form has been submitted', 5, '#modal');
|
|
|
1730
1731
|
|
|
1731
1732
|
#### Parameters
|
|
1732
1733
|
|
|
1733
|
-
- `text` [string][
|
|
1734
|
-
- `sec` [number][
|
|
1735
|
-
- `context` ([string][
|
|
1734
|
+
- `text` [string][8] to wait for.
|
|
1735
|
+
- `sec` [number][9] (optional, `1` by default) time in seconds to wait
|
|
1736
|
+
- `context` ([string][8] \| [object][6]) (optional) element located by CSS|XPath|strict locator.
|
|
1736
1737
|
|
|
1737
1738
|
|
|
1738
1739
|
|
|
@@ -1746,9 +1747,9 @@ I.waitForValue('//input', "GoodValue");
|
|
|
1746
1747
|
|
|
1747
1748
|
#### Parameters
|
|
1748
1749
|
|
|
1749
|
-
- `field` ([string][
|
|
1750
|
-
- `value` [string][
|
|
1751
|
-
- `sec` [number][
|
|
1750
|
+
- `field` ([string][8] \| [object][6]) input field.
|
|
1751
|
+
- `value` [string][8] expected value.
|
|
1752
|
+
- `sec` [number][9] (optional, `1` by default) time in seconds to wait
|
|
1752
1753
|
|
|
1753
1754
|
|
|
1754
1755
|
|
|
@@ -1763,10 +1764,10 @@ I.waitForVisible('#popup');
|
|
|
1763
1764
|
|
|
1764
1765
|
#### Parameters
|
|
1765
1766
|
|
|
1766
|
-
- `locator` ([string][
|
|
1767
|
-
- `sec` [number][
|
|
1767
|
+
- `locator` ([string][8] \| [object][6]) element located by CSS|XPath|strict locator.
|
|
1768
|
+
- `sec` [number][9] (optional, `1` by default) time in seconds to wait
|
|
1768
1769
|
|
|
1769
|
-
This method accepts [React selectors][
|
|
1770
|
+
This method accepts [React selectors][17].
|
|
1770
1771
|
|
|
1771
1772
|
### waitInUrl
|
|
1772
1773
|
|
|
@@ -1778,8 +1779,8 @@ I.waitInUrl('/info', 2);
|
|
|
1778
1779
|
|
|
1779
1780
|
#### Parameters
|
|
1780
1781
|
|
|
1781
|
-
- `urlPart` [string][
|
|
1782
|
-
- `sec` [number][
|
|
1782
|
+
- `urlPart` [string][8] value to check.
|
|
1783
|
+
- `sec` [number][9] (optional, `1` by default) time in seconds to wait
|
|
1783
1784
|
|
|
1784
1785
|
|
|
1785
1786
|
|
|
@@ -1793,9 +1794,9 @@ I.waitNumberOfVisibleElements('a', 3);
|
|
|
1793
1794
|
|
|
1794
1795
|
#### Parameters
|
|
1795
1796
|
|
|
1796
|
-
- `locator` ([string][
|
|
1797
|
-
- `num` [number][
|
|
1798
|
-
- `sec` [number][
|
|
1797
|
+
- `locator` ([string][8] \| [object][6]) element located by CSS|XPath|strict locator.
|
|
1798
|
+
- `num` [number][9] number of elements.
|
|
1799
|
+
- `sec` [number][9] (optional, `1` by default) time in seconds to wait
|
|
1799
1800
|
|
|
1800
1801
|
|
|
1801
1802
|
|
|
@@ -1815,8 +1816,8 @@ I.waitToHide('#popup');
|
|
|
1815
1816
|
|
|
1816
1817
|
#### Parameters
|
|
1817
1818
|
|
|
1818
|
-
- `locator` ([string][
|
|
1819
|
-
- `sec` [number][
|
|
1819
|
+
- `locator` ([string][8] \| [object][6]) element located by CSS|XPath|strict locator.
|
|
1820
|
+
- `sec` [number][9] (optional, `1` by default) time in seconds to wait
|
|
1820
1821
|
|
|
1821
1822
|
|
|
1822
1823
|
|
|
@@ -1831,9 +1832,9 @@ I.waitUntil(() => window.requests == 0, 5);
|
|
|
1831
1832
|
|
|
1832
1833
|
#### Parameters
|
|
1833
1834
|
|
|
1834
|
-
- `fn` ([function][
|
|
1835
|
-
- `sec` [number][
|
|
1836
|
-
- `timeoutMsg` [string][
|
|
1835
|
+
- `fn` ([function][11] \| [string][8]) function which is executed in browser context.
|
|
1836
|
+
- `sec` [number][9] (optional, `1` by default) time in seconds to wait
|
|
1837
|
+
- `timeoutMsg` [string][8] message to show in case of timeout fail.
|
|
1837
1838
|
|
|
1838
1839
|
|
|
1839
1840
|
|
|
@@ -1848,8 +1849,8 @@ I.waitUrlEquals('http://127.0.0.1:8000/info');
|
|
|
1848
1849
|
|
|
1849
1850
|
#### Parameters
|
|
1850
1851
|
|
|
1851
|
-
- `urlPart` [string][
|
|
1852
|
-
- `sec` [number][
|
|
1852
|
+
- `urlPart` [string][8] value to check.
|
|
1853
|
+
- `sec` [number][9] (optional, `1` by default) time in seconds to wait
|
|
1853
1854
|
|
|
1854
1855
|
|
|
1855
1856
|
|
|
@@ -1859,32 +1860,30 @@ I.waitUrlEquals('http://127.0.0.1:8000/info');
|
|
|
1859
1860
|
|
|
1860
1861
|
[3]: https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagewaitfornavigationoptions
|
|
1861
1862
|
|
|
1862
|
-
[4]:
|
|
1863
|
+
[4]: https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#puppeteerlaunchoptions
|
|
1863
1864
|
|
|
1864
|
-
[5]: https://github.
|
|
1865
|
+
[5]: https://chromedevtools.github.io/devtools-protocol/#how-do-i-access-the-browser-target
|
|
1865
1866
|
|
|
1866
|
-
[6]: https://
|
|
1867
|
+
[6]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
|
|
1867
1868
|
|
|
1868
|
-
[7]:
|
|
1869
|
+
[7]: http://jster.net/category/windows-modals-popups
|
|
1869
1870
|
|
|
1870
|
-
[8]:
|
|
1871
|
+
[8]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String
|
|
1871
1872
|
|
|
1872
|
-
[9]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/
|
|
1873
|
+
[9]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number
|
|
1873
1874
|
|
|
1874
|
-
[10]: https://
|
|
1875
|
+
[10]: https://vuejs.org/v2/api/#Vue-nextTick
|
|
1875
1876
|
|
|
1876
|
-
[11]: https://
|
|
1877
|
+
[11]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function
|
|
1877
1878
|
|
|
1878
|
-
[12]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/
|
|
1879
|
+
[12]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise
|
|
1879
1880
|
|
|
1880
|
-
[13]: https://
|
|
1881
|
+
[13]: https://codecept.io/helpers/FileSystem
|
|
1881
1882
|
|
|
1882
|
-
[14]: https://
|
|
1883
|
+
[14]: https://code.google.com/p/selenium/wiki/JsonWireProtocol#/session/:sessionId/element/:id/value
|
|
1883
1884
|
|
|
1884
|
-
[15]: https://
|
|
1885
|
+
[15]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array
|
|
1885
1886
|
|
|
1886
|
-
[16]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/
|
|
1887
|
+
[16]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean
|
|
1887
1888
|
|
|
1888
|
-
[17]: https://
|
|
1889
|
-
|
|
1890
|
-
[18]: https://codecept.io/react
|
|
1889
|
+
[17]: https://codecept.io/react
|