codeceptjs 4.0.0-rc.23 → 4.0.0-rc.24
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/README.md +9 -10
- package/docs/ai.md +3 -51
- package/docs/architecture.md +16 -0
- package/docs/bootstrap.md +1 -1
- package/docs/continuous-integration.md +16 -44
- package/docs/custom-helpers.md +1 -1
- package/docs/detox.md +1 -1
- package/docs/docker.md +1 -30
- package/docs/examples.md +0 -1
- package/docs/helpers/Appium.md +16 -2
- package/docs/helpers/Playwright.md +161 -160
- package/docs/helpers/Puppeteer.md +143 -250
- package/docs/helpers/WebDriver.md +134 -177
- package/docs/hooks.md +11 -1
- package/docs/index.md +1 -1
- package/docs/installation.md +2 -19
- package/docs/locators.md +1 -1
- package/docs/migrate-from-cypress.md +98 -0
- package/docs/migrate-from-java.md +108 -0
- package/docs/migrate-from-protractor.md +101 -0
- package/docs/migrate-from-testcafe.md +99 -0
- package/docs/migration-4.md +195 -8
- package/docs/plugins/aiTrace.md +49 -0
- package/docs/plugins/analyze.md +66 -0
- package/docs/plugins/auth.md +241 -0
- package/docs/plugins/autoDelay.md +48 -0
- package/docs/plugins/browser.md +41 -0
- package/docs/plugins/coverage.md +39 -0
- package/docs/plugins/customLocator.md +119 -0
- package/docs/plugins/customReporter.md +16 -0
- package/docs/plugins/expose.md +75 -0
- package/docs/plugins/heal.md +44 -0
- package/docs/plugins/junitReporter.md +51 -0
- package/docs/plugins/pageInfo.md +34 -0
- package/docs/plugins/pause.md +43 -0
- package/docs/plugins/pauseOnFail.md +18 -0
- package/docs/plugins/retryFailedStep.md +75 -0
- package/docs/plugins/screencast.md +55 -0
- package/docs/plugins/screenshot.md +58 -0
- package/docs/plugins/screenshotOnFail.md +18 -0
- package/docs/plugins/stepTimeout.md +65 -0
- package/docs/plugins.md +40 -862
- package/docs/reports.md +18 -4
- package/docs/retry.md +48 -18
- package/docs/store.md +94 -0
- package/docs/timeouts.md +1 -1
- package/docs/tutorial.md +207 -155
- package/docs/webdriver.md +6 -73
- package/lib/actor.js +0 -35
- package/lib/command/run-multiple.js +1 -2
- package/lib/helper/Playwright.js +1 -15
- package/lib/helper/Puppeteer.js +0 -103
- package/lib/helper/WebDriver.js +1 -28
- package/lib/helper/extras/PlaywrightLocator.js +10 -0
- package/lib/locator.js +0 -13
- package/lib/plugin/analyze.js +3 -4
- package/lib/plugin/pauseOnFail.js +3 -1
- package/lib/plugin/retryFailedStep.js +7 -7
- package/lib/plugin/screenshot.js +0 -5
- package/lib/plugin/screenshotOnFail.js +3 -1
- package/lib/plugin/stepTimeout.js +1 -1
- package/lib/recorder.js +1 -1
- package/lib/workers.js +0 -4
- package/package.json +3 -4
- package/docs/helpers/Mochawesome.md +0 -8
- package/docs/helpers/MockServer.md +0 -212
- package/docs/helpers/Polly.md +0 -44
- package/docs/helpers/Protractor.md +0 -1769
- package/docs/helpers/SoftExpectHelper.md +0 -352
- package/docs/react.md +0 -70
- package/lib/helper/Mochawesome.js +0 -96
- package/lib/helper/extras/PlaywrightReactVueLocator.js +0 -61
- package/lib/helper/extras/React.js +0 -65
|
@@ -14,11 +14,7 @@ title: WebDriver
|
|
|
14
14
|
WebDriver helper which wraps [webdriverio][1] library to
|
|
15
15
|
manipulate browser using Selenium WebDriver or PhantomJS.
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
With the release of WebdriverIO version v8.14.0, and onwards, all driver management hassles are now a thing of the past 🙌. Read more [here][3].
|
|
20
|
-
One of the significant advantages of this update is that you can now get rid of any driver services you previously had to manage, such as
|
|
21
|
-
`wdio-chromedriver-service`, `wdio-geckodriver-service`, `wdio-edgedriver-service`, `wdio-safaridriver-service`, and even `@wdio/selenium-standalone-service`.
|
|
17
|
+
No Selenium Server, ChromeDriver, or GeckoDriver to install or start. Since WebdriverIO 9, driver management is fully automatic — WebdriverIO downloads and starts the matching driver for you. Read more [here][2]. Please check [Testing with WebDriver][3] for more details.
|
|
22
18
|
|
|
23
19
|
For those who require custom driver options, fear not; WebDriver Helper allows you to pass in driver options through custom WebDriver configuration.
|
|
24
20
|
If you have a custom grid, use a cloud service, or prefer to run your own driver, there's no need to worry since WebDriver Helper will only start a driver when there are no other connection information settings like hostname or port specified.
|
|
@@ -35,26 +31,26 @@ Type: [object][17]
|
|
|
35
31
|
|
|
36
32
|
* `url` **[string][18]** base url of website to be tested.
|
|
37
33
|
* `browser` **[string][18]** Browser in which to perform testing.
|
|
38
|
-
* `bidiProtocol` **[boolean][
|
|
34
|
+
* `bidiProtocol` **[boolean][34]?** WebDriver Bidi Protocol. Default: false. More info: [https://webdriver.io/docs/api/webdriverBidi/][38]
|
|
39
35
|
* `basicAuth` **[string][18]?** (optional) the basic authentication to pass to base url. Example: {username: 'username', password: 'password'}
|
|
40
36
|
* `host` **[string][18]?** WebDriver host to connect.
|
|
41
|
-
* `port` **[number][
|
|
37
|
+
* `port` **[number][23]?** WebDriver port to connect.
|
|
42
38
|
* `protocol` **[string][18]?** protocol for WebDriver server.
|
|
43
39
|
* `path` **[string][18]?** path to WebDriver server.
|
|
44
|
-
* `restart` **[boolean][
|
|
45
|
-
* `smartWait` **([boolean][
|
|
46
|
-
* `disableScreenshots` **[boolean][
|
|
47
|
-
* `fullPageScreenshots` **[boolean][
|
|
48
|
-
* `uniqueScreenshotNames` **[boolean][
|
|
49
|
-
* `keepBrowserState` **[boolean][
|
|
50
|
-
* `keepCookies` **[boolean][
|
|
40
|
+
* `restart` **[boolean][34]?** restart browser between tests.
|
|
41
|
+
* `smartWait` **([boolean][34] | [number][23])?** **enables [SmartWait][39]**; wait for additional milliseconds for element to appear. Enable for 5 secs: "smartWait": 5000.
|
|
42
|
+
* `disableScreenshots` **[boolean][34]?** don't save screenshots on failure.
|
|
43
|
+
* `fullPageScreenshots` **[boolean][34]?** (optional - make full page screenshots on failure.
|
|
44
|
+
* `uniqueScreenshotNames` **[boolean][34]?** option to prevent screenshot override if you have scenarios with the same name in different suites.
|
|
45
|
+
* `keepBrowserState` **[boolean][34]?** keep browser state between tests when `restart` is set to false.
|
|
46
|
+
* `keepCookies` **[boolean][34]?** keep cookies between tests when `restart` set to false.
|
|
51
47
|
* `windowSize` **[string][18]?** default window size. Set to `maximize` or a dimension in the format `640x480`.
|
|
52
|
-
* `waitForTimeout` **[number][
|
|
48
|
+
* `waitForTimeout` **[number][23]?** sets default wait time in *ms* for all `wait*` functions.
|
|
53
49
|
* `desiredCapabilities` **[object][17]?** Selenium's [desired capabilities][7].
|
|
54
|
-
* `manualStart` **[boolean][
|
|
55
|
-
* `timeouts` **[object][17]?** [WebDriver timeouts][
|
|
56
|
-
* `highlightElement` **[boolean][
|
|
57
|
-
* `logLevel` **[string][18]?** level of logging verbosity. Default: silent. Options: trace | debug | info | warn | error | silent. More info: [https://webdriver.io/docs/configuration/#loglevel][
|
|
50
|
+
* `manualStart` **[boolean][34]?** do not start browser before a test, start it manually inside a helper with `this.helpers["WebDriver"]._startBrowser()`.
|
|
51
|
+
* `timeouts` **[object][17]?** [WebDriver timeouts][40] defined as hash.
|
|
52
|
+
* `highlightElement` **[boolean][34]?** highlight the interacting elements. Default: false. Note: only activate under verbose mode (--verbose).
|
|
53
|
+
* `logLevel` **[string][18]?** level of logging verbosity. Default: silent. Options: trace | debug | info | warn | error | silent. More info: [https://webdriver.io/docs/configuration/#loglevel][41]
|
|
58
54
|
|
|
59
55
|
## wrapError
|
|
60
56
|
|
|
@@ -546,10 +542,6 @@ I.appendField('name', 'John', '.form-container');
|
|
|
546
542
|
|
|
547
543
|
Returns **void** automatically synchronized promise through #recorder
|
|
548
544
|
|
|
549
|
-
|
|
550
|
-
This action supports [React locators](https://codecept.io/react#locators)
|
|
551
|
-
|
|
552
|
-
|
|
553
545
|
### attachFile
|
|
554
546
|
|
|
555
547
|
Appium: not tested
|
|
@@ -694,8 +686,12 @@ I.click('//form/*[@type=submit]');
|
|
|
694
686
|
I.click('Logout', '#nav');
|
|
695
687
|
// using strict locator
|
|
696
688
|
I.click({css: 'nav a.login'});
|
|
689
|
+
// using ARIA role locator
|
|
690
|
+
I.click({role: 'button', name: 'Submit'});
|
|
697
691
|
```
|
|
698
692
|
|
|
693
|
+
> ℹ️ ARIA role locators (`{role, name}`) match elements the way assistive technology does and survive markup refactors. See [Locators][22].
|
|
694
|
+
|
|
699
695
|
#### Parameters
|
|
700
696
|
|
|
701
697
|
* `locator` **([string][18] | [object][17])** (optional, `'//body'` by default) clickable link or button located by text, or any element located by CSS|XPath|strict locator.
|
|
@@ -703,10 +699,6 @@ I.click({css: 'nav a.login'});
|
|
|
703
699
|
|
|
704
700
|
Returns **void** automatically synchronized promise through #recorder
|
|
705
701
|
|
|
706
|
-
|
|
707
|
-
This action supports [React locators](https://codecept.io/react#locators)
|
|
708
|
-
|
|
709
|
-
|
|
710
702
|
### clickXY
|
|
711
703
|
|
|
712
704
|
Performs click at specific coordinates.
|
|
@@ -723,11 +715,11 @@ I.clickXY('#someElement', 50, 30);
|
|
|
723
715
|
|
|
724
716
|
#### Parameters
|
|
725
717
|
|
|
726
|
-
* `locator` **([string][18] | [object][17] | [number][
|
|
727
|
-
* `x` **[number][
|
|
728
|
-
* `y` **[number][
|
|
718
|
+
* `locator` **([string][18] | [object][17] | [number][23])** Element to click on or X coordinate if no element.
|
|
719
|
+
* `x` **[number][23]?** X coordinate relative to element's top-left, or Y coordinate if locator is a number.
|
|
720
|
+
* `y` **[number][23]?** Y coordinate relative to element's top-left.
|
|
729
721
|
|
|
730
|
-
Returns **[Promise][
|
|
722
|
+
Returns **[Promise][24]<void>** 
|
|
731
723
|
|
|
732
724
|
### closeCurrentTab
|
|
733
725
|
|
|
@@ -751,7 +743,7 @@ Returns **void** automatically synchronized promise through #recorder
|
|
|
751
743
|
|
|
752
744
|
### defineTimeout
|
|
753
745
|
|
|
754
|
-
Set [WebDriver timeouts][
|
|
746
|
+
Set [WebDriver timeouts][25] in realtime.
|
|
755
747
|
|
|
756
748
|
Timeouts are expected to be passed as object:
|
|
757
749
|
|
|
@@ -781,10 +773,6 @@ I.dontSee('Login', '.nav'); // no login inside .nav element
|
|
|
781
773
|
|
|
782
774
|
Returns **void** automatically synchronized promise through #recorder
|
|
783
775
|
|
|
784
|
-
|
|
785
|
-
This action supports [React locators](https://codecept.io/react#locators)
|
|
786
|
-
|
|
787
|
-
|
|
788
776
|
### dontSeeCheckboxIsChecked
|
|
789
777
|
|
|
790
778
|
Appium: not tested
|
|
@@ -866,10 +854,6 @@ I.dontSeeElement('.modal', '#container');
|
|
|
866
854
|
|
|
867
855
|
Returns **void** automatically synchronized promise through #recorder
|
|
868
856
|
|
|
869
|
-
|
|
870
|
-
This action supports [React locators](https://codecept.io/react#locators)
|
|
871
|
-
|
|
872
|
-
|
|
873
857
|
### dontSeeElementInDOM
|
|
874
858
|
|
|
875
859
|
Opposite to `seeElementInDOM`. Checks that element is not on page.
|
|
@@ -964,10 +948,6 @@ I.doubleClick('.btn.edit');
|
|
|
964
948
|
|
|
965
949
|
Returns **void** automatically synchronized promise through #recorder
|
|
966
950
|
|
|
967
|
-
|
|
968
|
-
This action supports [React locators](https://codecept.io/react#locators)
|
|
969
|
-
|
|
970
|
-
|
|
971
951
|
### dragAndDrop
|
|
972
952
|
|
|
973
953
|
Appium: not tested
|
|
@@ -997,7 +977,7 @@ I.dragSlider('#slider', -70);
|
|
|
997
977
|
#### Parameters
|
|
998
978
|
|
|
999
979
|
* `locator` **([string][18] | [object][17])** located by label|name|CSS|XPath|strict locator.
|
|
1000
|
-
* `offsetX` **[number][
|
|
980
|
+
* `offsetX` **[number][23]** position to drag.
|
|
1001
981
|
|
|
1002
982
|
Returns **void** automatically synchronized promise through #recorder
|
|
1003
983
|
|
|
@@ -1006,7 +986,7 @@ Returns **void** automatically synchronized promise through #recorder
|
|
|
1006
986
|
Executes async script on page.
|
|
1007
987
|
Provided function should execute a passed callback (as first argument) to signal it is finished.
|
|
1008
988
|
|
|
1009
|
-
Example: In Vue.js to make components completely rendered we are waiting for [nextTick][
|
|
989
|
+
Example: In Vue.js to make components completely rendered we are waiting for [nextTick][26].
|
|
1010
990
|
|
|
1011
991
|
```js
|
|
1012
992
|
I.executeAsyncScript(function(done) {
|
|
@@ -1027,13 +1007,13 @@ let val = await I.executeAsyncScript(function(url, done) {
|
|
|
1027
1007
|
#### Parameters
|
|
1028
1008
|
|
|
1029
1009
|
* `args` **...any** to be passed to function.
|
|
1030
|
-
* `fn` **([string][18] | [function][
|
|
1010
|
+
* `fn` **([string][18] | [function][27])** function to be executed in browser context.
|
|
1031
1011
|
|
|
1032
|
-
Returns **[Promise][
|
|
1012
|
+
Returns **[Promise][24]<any>** script return value
|
|
1033
1013
|
|
|
1034
1014
|
### executeScript
|
|
1035
1015
|
|
|
1036
|
-
Wraps [execute][
|
|
1016
|
+
Wraps [execute][28] command.
|
|
1037
1017
|
|
|
1038
1018
|
Executes sync script on a page.
|
|
1039
1019
|
Pass arguments to function as additional parameters.
|
|
@@ -1062,9 +1042,9 @@ let date = await I.executeScript(function(el) {
|
|
|
1062
1042
|
#### Parameters
|
|
1063
1043
|
|
|
1064
1044
|
* `args` **...any** to be passed to function.
|
|
1065
|
-
* `fn` **([string][18] | [function][
|
|
1045
|
+
* `fn` **([string][18] | [function][27])** function to be executed in browser context.
|
|
1066
1046
|
|
|
1067
|
-
Returns **[Promise][
|
|
1047
|
+
Returns **[Promise][24]<any>** script return value
|
|
1068
1048
|
|
|
1069
1049
|
### fillField
|
|
1070
1050
|
|
|
@@ -1082,22 +1062,21 @@ I.fillField('password', secret('123456'));
|
|
|
1082
1062
|
I.fillField('form#login input[name=username]', 'John');
|
|
1083
1063
|
// or by strict locator
|
|
1084
1064
|
I.fillField({css: 'form#login input[name=username]'}, 'John');
|
|
1065
|
+
// by ARIA role locator
|
|
1066
|
+
I.fillField({role: 'textbox', name: 'Email'}, 'hello@world.com');
|
|
1085
1067
|
// within a context
|
|
1086
1068
|
I.fillField('Name', 'John', '#section2');
|
|
1087
1069
|
```
|
|
1088
1070
|
|
|
1071
|
+
> ℹ️ ARIA role locators (`{role, name}`) match fields by their accessible name and survive markup refactors. See [Locators][22].
|
|
1072
|
+
|
|
1089
1073
|
#### Parameters
|
|
1090
1074
|
|
|
1091
1075
|
* `field` **([string][18] | [object][17])** located by label|name|CSS|XPath|strict locator.
|
|
1092
1076
|
* `value` **([string][18] | [object][17])** text value to fill.
|
|
1093
1077
|
* `context` **([string][18]? | [object][17])** (optional, `null` by default) element located by CSS | XPath | strict locator.
|
|
1094
1078
|
|
|
1095
|
-
Returns **void** automatically synchronized promise through #recorder
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
This action supports [React locators](https://codecept.io/react#locators)
|
|
1099
|
-
|
|
1100
|
-
{{ custom }}
|
|
1079
|
+
Returns **void** automatically synchronized promise through #recorder{{ custom }}
|
|
1101
1080
|
|
|
1102
1081
|
### focus
|
|
1103
1082
|
|
|
@@ -1114,7 +1093,7 @@ I.see('#add-to-cart-bnt');
|
|
|
1114
1093
|
#### Parameters
|
|
1115
1094
|
|
|
1116
1095
|
* `locator` **([string][18] | [object][17])** field located by label|name|CSS|XPath|strict locator.
|
|
1117
|
-
* `options` **any?** Playwright only: [Additional options][
|
|
1096
|
+
* `options` **any?** Playwright only: [Additional options][29] for available options object as 2nd argument.
|
|
1118
1097
|
|
|
1119
1098
|
Returns **void** automatically synchronized promise through #recorder
|
|
1120
1099
|
|
|
@@ -1152,10 +1131,6 @@ I.forceClick({css: 'nav a.login'});
|
|
|
1152
1131
|
|
|
1153
1132
|
Returns **void** automatically synchronized promise through #recorder
|
|
1154
1133
|
|
|
1155
|
-
|
|
1156
|
-
This action supports [React locators](https://codecept.io/react#locators)
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
1134
|
### forceRightClick
|
|
1160
1135
|
|
|
1161
1136
|
Emulates right click on an element.
|
|
@@ -1180,10 +1155,6 @@ I.forceRightClick('Menu');
|
|
|
1180
1155
|
|
|
1181
1156
|
Returns **void** automatically synchronized promise through #recorder
|
|
1182
1157
|
|
|
1183
|
-
|
|
1184
|
-
This action supports [React locators](https://codecept.io/react#locators)
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
1158
|
### grabAllWindowHandles
|
|
1188
1159
|
|
|
1189
1160
|
Get all Window Handles.
|
|
@@ -1193,7 +1164,7 @@ Useful for referencing a specific handle when calling `I.switchToWindow(handle)`
|
|
|
1193
1164
|
const windows = await I.grabAllWindowHandles();
|
|
1194
1165
|
```
|
|
1195
1166
|
|
|
1196
|
-
Returns **[Promise][
|
|
1167
|
+
Returns **[Promise][24]<[Array][30]<[string][18]>>** 
|
|
1197
1168
|
|
|
1198
1169
|
### grabAttributeFrom
|
|
1199
1170
|
|
|
@@ -1210,7 +1181,7 @@ let hint = await I.grabAttributeFrom('#tooltip', 'title');
|
|
|
1210
1181
|
* `locator` **([string][18] | [object][17])** element located by CSS|XPath|strict locator.
|
|
1211
1182
|
* `attr` **[string][18]** attribute name.
|
|
1212
1183
|
|
|
1213
|
-
Returns **[Promise][
|
|
1184
|
+
Returns **[Promise][24]<[string][18]>** attribute value
|
|
1214
1185
|
|
|
1215
1186
|
### grabAttributeFromAll
|
|
1216
1187
|
|
|
@@ -1226,7 +1197,7 @@ let hints = await I.grabAttributeFromAll('.tooltip', 'title');
|
|
|
1226
1197
|
* `locator` **([string][18] | [object][17])** element located by CSS|XPath|strict locator.
|
|
1227
1198
|
* `attr` **[string][18]** attribute name.
|
|
1228
1199
|
|
|
1229
|
-
Returns **[Promise][
|
|
1200
|
+
Returns **[Promise][24]<[Array][30]<[string][18]>>** attribute value
|
|
1230
1201
|
|
|
1231
1202
|
### grabBrowserLogs
|
|
1232
1203
|
|
|
@@ -1238,7 +1209,7 @@ let logs = await I.grabBrowserLogs();
|
|
|
1238
1209
|
console.log(JSON.stringify(logs))
|
|
1239
1210
|
```
|
|
1240
1211
|
|
|
1241
|
-
Returns **([Promise][
|
|
1212
|
+
Returns **([Promise][24]<[Array][30]<[object][17]>> | [undefined][31])** all browser logs
|
|
1242
1213
|
|
|
1243
1214
|
### grabCookie
|
|
1244
1215
|
|
|
@@ -1272,7 +1243,7 @@ const value = await I.grabCssPropertyFrom('h3', 'font-weight');
|
|
|
1272
1243
|
* `locator` **([string][18] | [object][17])** element located by CSS|XPath|strict locator.
|
|
1273
1244
|
* `cssProperty` **[string][18]** CSS property name.
|
|
1274
1245
|
|
|
1275
|
-
Returns **[Promise][
|
|
1246
|
+
Returns **[Promise][24]<[string][18]>** CSS value
|
|
1276
1247
|
|
|
1277
1248
|
### grabCssPropertyFromAll
|
|
1278
1249
|
|
|
@@ -1288,7 +1259,7 @@ const values = await I.grabCssPropertyFromAll('h3', 'font-weight');
|
|
|
1288
1259
|
* `locator` **([string][18] | [object][17])** element located by CSS|XPath|strict locator.
|
|
1289
1260
|
* `cssProperty` **[string][18]** CSS property name.
|
|
1290
1261
|
|
|
1291
|
-
Returns **[Promise][
|
|
1262
|
+
Returns **[Promise][24]<[Array][30]<[string][18]>>** CSS value
|
|
1292
1263
|
|
|
1293
1264
|
### grabCurrentUrl
|
|
1294
1265
|
|
|
@@ -1300,7 +1271,7 @@ let url = await I.grabCurrentUrl();
|
|
|
1300
1271
|
console.log(`Current URL is [${url}]`);
|
|
1301
1272
|
```
|
|
1302
1273
|
|
|
1303
|
-
Returns **[Promise][
|
|
1274
|
+
Returns **[Promise][24]<[string][18]>** current URL
|
|
1304
1275
|
|
|
1305
1276
|
### grabCurrentWindowHandle
|
|
1306
1277
|
|
|
@@ -1311,7 +1282,7 @@ Useful for referencing it when calling `I.switchToWindow(handle)`
|
|
|
1311
1282
|
const window = await I.grabCurrentWindowHandle();
|
|
1312
1283
|
```
|
|
1313
1284
|
|
|
1314
|
-
Returns **[Promise][
|
|
1285
|
+
Returns **[Promise][24]<[string][18]>** 
|
|
1315
1286
|
|
|
1316
1287
|
### grabElementBoundingRect
|
|
1317
1288
|
|
|
@@ -1339,7 +1310,7 @@ const width = await I.grabElementBoundingRect('h3', 'width');
|
|
|
1339
1310
|
* `prop`  
|
|
1340
1311
|
* `elementSize` **[string][18]?** x, y, width or height of the given element.
|
|
1341
1312
|
|
|
1342
|
-
Returns **([Promise][
|
|
1313
|
+
Returns **([Promise][24]<DOMRect> | [Promise][24]<[number][23]>)** Element bounding rectangle
|
|
1343
1314
|
|
|
1344
1315
|
### grabHTMLFrom
|
|
1345
1316
|
|
|
@@ -1356,7 +1327,7 @@ let postHTML = await I.grabHTMLFrom('#post');
|
|
|
1356
1327
|
* `locator`  
|
|
1357
1328
|
* `element` **([string][18] | [object][17])** located by CSS|XPath|strict locator.
|
|
1358
1329
|
|
|
1359
|
-
Returns **[Promise][
|
|
1330
|
+
Returns **[Promise][24]<[string][18]>** HTML code for an element
|
|
1360
1331
|
|
|
1361
1332
|
### grabHTMLFromAll
|
|
1362
1333
|
|
|
@@ -1372,7 +1343,7 @@ let postHTMLs = await I.grabHTMLFromAll('.post');
|
|
|
1372
1343
|
* `locator`  
|
|
1373
1344
|
* `element` **([string][18] | [object][17])** located by CSS|XPath|strict locator.
|
|
1374
1345
|
|
|
1375
|
-
Returns **[Promise][
|
|
1346
|
+
Returns **[Promise][24]<[Array][30]<[string][18]>>** HTML code for an element
|
|
1376
1347
|
|
|
1377
1348
|
### grabNumberOfOpenTabs
|
|
1378
1349
|
|
|
@@ -1383,7 +1354,7 @@ Resumes test execution, so **should be used inside async function with `await`**
|
|
|
1383
1354
|
let tabs = await I.grabNumberOfOpenTabs();
|
|
1384
1355
|
```
|
|
1385
1356
|
|
|
1386
|
-
Returns **[Promise][
|
|
1357
|
+
Returns **[Promise][24]<[number][23]>** number of open tabs
|
|
1387
1358
|
|
|
1388
1359
|
### grabNumberOfVisibleElements
|
|
1389
1360
|
|
|
@@ -1398,7 +1369,7 @@ let numOfElements = await I.grabNumberOfVisibleElements('p');
|
|
|
1398
1369
|
|
|
1399
1370
|
* `locator` **([string][18] | [object][17])** located by CSS|XPath|strict locator.
|
|
1400
1371
|
|
|
1401
|
-
Returns **[Promise][
|
|
1372
|
+
Returns **[Promise][24]<[number][23]>** number of visible elements
|
|
1402
1373
|
|
|
1403
1374
|
### grabPageScrollPosition
|
|
1404
1375
|
|
|
@@ -1409,7 +1380,7 @@ Resumes test execution, so **should be used inside an async function with `await
|
|
|
1409
1380
|
let { x, y } = await I.grabPageScrollPosition();
|
|
1410
1381
|
```
|
|
1411
1382
|
|
|
1412
|
-
Returns **[Promise][
|
|
1383
|
+
Returns **[Promise][24]<PageScrollPosition>** scroll position
|
|
1413
1384
|
|
|
1414
1385
|
### grabPopupText
|
|
1415
1386
|
|
|
@@ -1419,7 +1390,7 @@ Grab the text within the popup. If no popup is visible then it will return null.
|
|
|
1419
1390
|
await I.grabPopupText();
|
|
1420
1391
|
```
|
|
1421
1392
|
|
|
1422
|
-
Returns **[Promise][
|
|
1393
|
+
Returns **[Promise][24]<[string][18]>** 
|
|
1423
1394
|
|
|
1424
1395
|
### grabSource
|
|
1425
1396
|
|
|
@@ -1430,7 +1401,7 @@ Resumes test execution, so **should be used inside async function with `await`**
|
|
|
1430
1401
|
let pageSource = await I.grabSource();
|
|
1431
1402
|
```
|
|
1432
1403
|
|
|
1433
|
-
Returns **[Promise][
|
|
1404
|
+
Returns **[Promise][24]<[string][18]>** source code
|
|
1434
1405
|
|
|
1435
1406
|
### grabTextFrom
|
|
1436
1407
|
|
|
@@ -1447,7 +1418,7 @@ If multiple elements found returns first element.
|
|
|
1447
1418
|
|
|
1448
1419
|
* `locator` **([string][18] | [object][17])** element located by CSS|XPath|strict locator.
|
|
1449
1420
|
|
|
1450
|
-
Returns **[Promise][
|
|
1421
|
+
Returns **[Promise][24]<[string][18]>** attribute value
|
|
1451
1422
|
|
|
1452
1423
|
### grabTextFromAll
|
|
1453
1424
|
|
|
@@ -1462,7 +1433,7 @@ let pins = await I.grabTextFromAll('#pin li');
|
|
|
1462
1433
|
|
|
1463
1434
|
* `locator` **([string][18] | [object][17])** element located by CSS|XPath|strict locator.
|
|
1464
1435
|
|
|
1465
|
-
Returns **[Promise][
|
|
1436
|
+
Returns **[Promise][24]<[Array][30]<[string][18]>>** attribute value
|
|
1466
1437
|
|
|
1467
1438
|
### grabTitle
|
|
1468
1439
|
|
|
@@ -1473,7 +1444,7 @@ Resumes test execution, so **should be used inside async with `await`** operator
|
|
|
1473
1444
|
let title = await I.grabTitle();
|
|
1474
1445
|
```
|
|
1475
1446
|
|
|
1476
|
-
Returns **[Promise][
|
|
1447
|
+
Returns **[Promise][24]<[string][18]>** title
|
|
1477
1448
|
|
|
1478
1449
|
### grabValueFrom
|
|
1479
1450
|
|
|
@@ -1489,7 +1460,7 @@ let email = await I.grabValueFrom('input[name=email]');
|
|
|
1489
1460
|
|
|
1490
1461
|
* `locator` **([string][18] | [object][17])** field located by label|name|CSS|XPath|strict locator.
|
|
1491
1462
|
|
|
1492
|
-
Returns **[Promise][
|
|
1463
|
+
Returns **[Promise][24]<[string][18]>** attribute value
|
|
1493
1464
|
|
|
1494
1465
|
### grabValueFromAll
|
|
1495
1466
|
|
|
@@ -1504,7 +1475,7 @@ let inputs = await I.grabValueFromAll('//form/input');
|
|
|
1504
1475
|
|
|
1505
1476
|
* `locator` **([string][18] | [object][17])** field located by label|name|CSS|XPath|strict locator.
|
|
1506
1477
|
|
|
1507
|
-
Returns **[Promise][
|
|
1478
|
+
Returns **[Promise][24]<[Array][30]<[string][18]>>** attribute value
|
|
1508
1479
|
|
|
1509
1480
|
### grabWebElement
|
|
1510
1481
|
|
|
@@ -1519,7 +1490,7 @@ const webElement = await I.grabWebElement('#button');
|
|
|
1519
1490
|
|
|
1520
1491
|
* `locator` **([string][18] | [object][17])** element located by CSS|XPath|strict locator.
|
|
1521
1492
|
|
|
1522
|
-
Returns **[Promise][
|
|
1493
|
+
Returns **[Promise][24]<any>** WebElement of being used Web helper
|
|
1523
1494
|
|
|
1524
1495
|
### grabWebElements
|
|
1525
1496
|
|
|
@@ -1534,7 +1505,7 @@ const webElements = await I.grabWebElements('#button');
|
|
|
1534
1505
|
|
|
1535
1506
|
* `locator` **([string][18] | [object][17])** element located by CSS|XPath|strict locator.
|
|
1536
1507
|
|
|
1537
|
-
Returns **[Promise][
|
|
1508
|
+
Returns **[Promise][24]<any>** WebElement of being used Web helper
|
|
1538
1509
|
|
|
1539
1510
|
### moveCursorTo
|
|
1540
1511
|
|
|
@@ -1555,8 +1526,8 @@ I.moveCursorTo('#submit', '.container');
|
|
|
1555
1526
|
* `locator` **([string][18] | [object][17])** located by CSS|XPath|strict locator.
|
|
1556
1527
|
* `xOffset`  
|
|
1557
1528
|
* `yOffset`  
|
|
1558
|
-
* `offsetX` **([number][
|
|
1559
|
-
* `offsetY` **[number][
|
|
1529
|
+
* `offsetX` **([number][23] | [string][18] | [object][17])** (optional, `0` by default) X-axis offset or context locator.
|
|
1530
|
+
* `offsetY` **[number][23]** (optional, `0` by default) Y-axis offset.
|
|
1560
1531
|
|
|
1561
1532
|
Returns **void** automatically synchronized promise through #recorder
|
|
1562
1533
|
|
|
@@ -1581,7 +1552,7 @@ Returns **void** automatically synchronized promise through #recorder
|
|
|
1581
1552
|
|
|
1582
1553
|
Presses a key in the browser (on a focused element).
|
|
1583
1554
|
|
|
1584
|
-
*Hint:* For populating text field or textarea, it is recommended to use [`fillField`][
|
|
1555
|
+
*Hint:* For populating text field or textarea, it is recommended to use [`fillField`][32].
|
|
1585
1556
|
|
|
1586
1557
|
```js
|
|
1587
1558
|
I.pressKey('Backspace');
|
|
@@ -1640,7 +1611,7 @@ Some of the supported key names are:
|
|
|
1640
1611
|
|
|
1641
1612
|
#### Parameters
|
|
1642
1613
|
|
|
1643
|
-
* `key` **([string][18] | [Array][
|
|
1614
|
+
* `key` **([string][18] | [Array][30]<[string][18]>)** key or array of keys to press.
|
|
1644
1615
|
|
|
1645
1616
|
Returns **void** automatically synchronized promise through #recorder
|
|
1646
1617
|
|
|
@@ -1648,7 +1619,7 @@ Returns **void** automatically synchronized promise through #recorder
|
|
|
1648
1619
|
|
|
1649
1620
|
Presses a key in the browser and leaves it in a down state.
|
|
1650
1621
|
|
|
1651
|
-
To make combinations with modifier key and user operation (e.g. `'Control'` + [`click`][
|
|
1622
|
+
To make combinations with modifier key and user operation (e.g. `'Control'` + [`click`][33]).
|
|
1652
1623
|
|
|
1653
1624
|
```js
|
|
1654
1625
|
I.pressKeyDown('Control');
|
|
@@ -1666,7 +1637,7 @@ Returns **void** automatically synchronized promise through #recorder
|
|
|
1666
1637
|
|
|
1667
1638
|
Releases a key in the browser which was previously set to a down state.
|
|
1668
1639
|
|
|
1669
|
-
To make combinations with modifier key and user operation (e.g. `'Control'` + [`click`][
|
|
1640
|
+
To make combinations with modifier key and user operation (e.g. `'Control'` + [`click`][33]).
|
|
1670
1641
|
|
|
1671
1642
|
```js
|
|
1672
1643
|
I.pressKeyDown('Control');
|
|
@@ -1699,8 +1670,8 @@ First parameter can be set to `maximize`.
|
|
|
1699
1670
|
|
|
1700
1671
|
#### Parameters
|
|
1701
1672
|
|
|
1702
|
-
* `width` **[number][
|
|
1703
|
-
* `height` **[number][
|
|
1673
|
+
* `width` **[number][23]** width in pixels or `maximize`.
|
|
1674
|
+
* `height` **[number][23]** height in pixels.
|
|
1704
1675
|
|
|
1705
1676
|
Returns **void** automatically synchronized promise through #recorder
|
|
1706
1677
|
|
|
@@ -1724,10 +1695,6 @@ I.rightClick('Click me', '.context');
|
|
|
1724
1695
|
|
|
1725
1696
|
Returns **void** automatically synchronized promise through #recorder
|
|
1726
1697
|
|
|
1727
|
-
|
|
1728
|
-
This action supports [React locators](https://codecept.io/react#locators)
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
1698
|
### runInWeb
|
|
1732
1699
|
|
|
1733
1700
|
Placeholder for ~ locator only test case write once run on both Appium and WebDriver.
|
|
@@ -1784,7 +1751,7 @@ I.saveScreenshot('debug.png', true) //resizes to available scrollHeight and scro
|
|
|
1784
1751
|
#### Parameters
|
|
1785
1752
|
|
|
1786
1753
|
* `fileName` **[string][18]** file name to save.
|
|
1787
|
-
* `fullPage` **[boolean][
|
|
1754
|
+
* `fullPage` **[boolean][34]** (optional, `false` by default) flag to enable fullscreen screenshot mode.
|
|
1788
1755
|
|
|
1789
1756
|
Returns **void** automatically synchronized promise through #recorder
|
|
1790
1757
|
|
|
@@ -1801,7 +1768,7 @@ I.scrollIntoView('#submit', { behavior: "smooth", block: "center", inline: "cent
|
|
|
1801
1768
|
#### Parameters
|
|
1802
1769
|
|
|
1803
1770
|
* `locator` **([string][18] | [object][17])** located by CSS|XPath|strict locator.
|
|
1804
|
-
* `scrollIntoViewOptions` **(ScrollIntoViewOptions | [boolean][
|
|
1771
|
+
* `scrollIntoViewOptions` **(ScrollIntoViewOptions | [boolean][34])** either alignToTop=true|false or scrollIntoViewOptions. See [https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView][35].
|
|
1805
1772
|
|
|
1806
1773
|
Returns **void** automatically synchronized promise through #recorder
|
|
1807
1774
|
|
|
@@ -1838,8 +1805,8 @@ I.scrollTo('#submit', 5, 5);
|
|
|
1838
1805
|
#### Parameters
|
|
1839
1806
|
|
|
1840
1807
|
* `locator` **([string][18] | [object][17])** located by CSS|XPath|strict locator.
|
|
1841
|
-
* `offsetX` **[number][
|
|
1842
|
-
* `offsetY` **[number][
|
|
1808
|
+
* `offsetX` **[number][23]** (optional, `0` by default) X-axis offset.
|
|
1809
|
+
* `offsetY` **[number][23]** (optional, `0` by default) Y-axis offset.
|
|
1843
1810
|
|
|
1844
1811
|
Returns **void** automatically synchronized promise through #recorder
|
|
1845
1812
|
|
|
@@ -1861,10 +1828,6 @@ I.see('Register', {css: 'form.register'}); // use strict locator
|
|
|
1861
1828
|
|
|
1862
1829
|
Returns **void** automatically synchronized promise through #recorder
|
|
1863
1830
|
|
|
1864
|
-
|
|
1865
|
-
This action supports [React locators](https://codecept.io/react#locators)
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
1831
|
### seeAttributesOnElements
|
|
1869
1832
|
|
|
1870
1833
|
Checks that all elements with given locator have given attributes.
|
|
@@ -1969,8 +1932,12 @@ The second parameter is a context (CSS or XPath locator) to narrow the search.
|
|
|
1969
1932
|
```js
|
|
1970
1933
|
I.seeElement('#modal');
|
|
1971
1934
|
I.seeElement('#modal', '#container');
|
|
1935
|
+
// using ARIA role locator
|
|
1936
|
+
I.seeElement({role: 'dialog'});
|
|
1972
1937
|
```
|
|
1973
1938
|
|
|
1939
|
+
> ℹ️ ARIA role locators (`{role, name}`) match elements the way assistive technology does and survive markup refactors. See [Locators][22].
|
|
1940
|
+
|
|
1974
1941
|
#### Parameters
|
|
1975
1942
|
|
|
1976
1943
|
* `locator` **([string][18] | [object][17])** located by CSS|XPath|strict locator.
|
|
@@ -1978,10 +1945,6 @@ I.seeElement('#modal', '#container');
|
|
|
1978
1945
|
|
|
1979
1946
|
Returns **void** automatically synchronized promise through #recorder
|
|
1980
1947
|
|
|
1981
|
-
|
|
1982
|
-
This action supports [React locators](https://codecept.io/react#locators)
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
1948
|
### seeElementInDOM
|
|
1986
1949
|
|
|
1987
1950
|
Checks that a given Element is present in the DOM
|
|
@@ -2084,14 +2047,10 @@ I.seeNumberOfElements('#submitBtn', 1);
|
|
|
2084
2047
|
#### Parameters
|
|
2085
2048
|
|
|
2086
2049
|
* `locator` **([string][18] | [object][17])** element located by CSS|XPath|strict locator.
|
|
2087
|
-
* `num` **[number][
|
|
2050
|
+
* `num` **[number][23]** number of elements.
|
|
2088
2051
|
|
|
2089
2052
|
Returns **void** automatically synchronized promise through #recorder
|
|
2090
2053
|
|
|
2091
|
-
|
|
2092
|
-
This action supports [React locators](https://codecept.io/react#locators)
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
2054
|
### seeNumberOfVisibleElements
|
|
2096
2055
|
|
|
2097
2056
|
Asserts that an element is visible a given number of times.
|
|
@@ -2104,14 +2063,10 @@ I.seeNumberOfVisibleElements('.buttons', 3);
|
|
|
2104
2063
|
#### Parameters
|
|
2105
2064
|
|
|
2106
2065
|
* `locator` **([string][18] | [object][17])** element located by CSS|XPath|strict locator.
|
|
2107
|
-
* `num` **[number][
|
|
2066
|
+
* `num` **[number][23]** number of elements.
|
|
2108
2067
|
|
|
2109
2068
|
Returns **void** automatically synchronized promise through #recorder
|
|
2110
2069
|
|
|
2111
|
-
|
|
2112
|
-
This action supports [React locators](https://codecept.io/react#locators)
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
2070
|
### seeTextEquals
|
|
2116
2071
|
|
|
2117
2072
|
Checks that text is equal to provided one.
|
|
@@ -2169,14 +2124,14 @@ I.selectOption('Which OS do you use?', ['Android', 'iOS']);
|
|
|
2169
2124
|
#### Parameters
|
|
2170
2125
|
|
|
2171
2126
|
* `select` **([string][18] | [object][17])** field located by label|name|CSS|XPath|strict locator.
|
|
2172
|
-
* `option` **([string][18] | [Array][
|
|
2127
|
+
* `option` **([string][18] | [Array][30]<any>)** visible text or value of option.
|
|
2173
2128
|
* `context` **([string][18]? | [object][17])** (optional, `null` by default) element located by CSS | XPath | strict locator.
|
|
2174
2129
|
|
|
2175
2130
|
Returns **void** automatically synchronized promise through #recorder
|
|
2176
2131
|
|
|
2177
2132
|
### setCookie
|
|
2178
2133
|
|
|
2179
|
-
Uses Selenium's JSON [cookie format][
|
|
2134
|
+
Uses Selenium's JSON [cookie format][36].
|
|
2180
2135
|
Sets cookie(s).
|
|
2181
2136
|
|
|
2182
2137
|
Can be a single cookie object or an array of cookies:
|
|
@@ -2193,7 +2148,7 @@ I.setCookie([
|
|
|
2193
2148
|
|
|
2194
2149
|
#### Parameters
|
|
2195
2150
|
|
|
2196
|
-
* `cookie` **(Cookie | [Array][
|
|
2151
|
+
* `cookie` **(Cookie | [Array][30]<Cookie>)** a cookie object or array of cookie objects.
|
|
2197
2152
|
|
|
2198
2153
|
Returns **void** automatically synchronized promise through #recorder
|
|
2199
2154
|
|
|
@@ -2223,8 +2178,8 @@ I.switchToNextTab(2);
|
|
|
2223
2178
|
|
|
2224
2179
|
#### Parameters
|
|
2225
2180
|
|
|
2226
|
-
* `num` **[number][
|
|
2227
|
-
* `sec` **([number][
|
|
2181
|
+
* `num` **[number][23]?** (optional) number of tabs to switch forward, default: 1.
|
|
2182
|
+
* `sec` **([number][23] | null)?** (optional) time in seconds to wait.
|
|
2228
2183
|
|
|
2229
2184
|
Returns **void** automatically synchronized promise through #recorder
|
|
2230
2185
|
|
|
@@ -2239,8 +2194,8 @@ I.switchToPreviousTab(2);
|
|
|
2239
2194
|
|
|
2240
2195
|
#### Parameters
|
|
2241
2196
|
|
|
2242
|
-
* `num` **[number][
|
|
2243
|
-
* `sec` **[number][
|
|
2197
|
+
* `num` **[number][23]?** (optional) number of tabs to switch backward, default: 1.
|
|
2198
|
+
* `sec` **[number][23]??** (optional) time in seconds to wait.
|
|
2244
2199
|
|
|
2245
2200
|
Returns **void** automatically synchronized promise through #recorder
|
|
2246
2201
|
|
|
@@ -2266,7 +2221,7 @@ await I.switchToWindow( window );
|
|
|
2266
2221
|
|
|
2267
2222
|
Types out the given text into an active field.
|
|
2268
2223
|
To slow down typing use a second parameter, to set interval between key presses.
|
|
2269
|
-
*Note:* Should be used when [`fillField`][
|
|
2224
|
+
*Note:* Should be used when [`fillField`][32] is not an option.
|
|
2270
2225
|
|
|
2271
2226
|
```js
|
|
2272
2227
|
// passing in a string
|
|
@@ -2285,8 +2240,8 @@ I.type(secret('123456'));
|
|
|
2285
2240
|
#### Parameters
|
|
2286
2241
|
|
|
2287
2242
|
* `keys`  
|
|
2288
|
-
* `delay` **[number][
|
|
2289
|
-
* `key` **([string][18] | [Array][
|
|
2243
|
+
* `delay` **[number][23]?** (optional) delay in ms between key presses
|
|
2244
|
+
* `key` **([string][18] | [Array][30]<[string][18]>)** or array of keys to type.
|
|
2290
2245
|
|
|
2291
2246
|
Returns **void** automatically synchronized promise through #recorder
|
|
2292
2247
|
|
|
@@ -2313,12 +2268,12 @@ Returns **void** automatically synchronized promise through #recorder
|
|
|
2313
2268
|
|
|
2314
2269
|
### useWebDriverTo
|
|
2315
2270
|
|
|
2316
|
-
Use [webdriverio][
|
|
2271
|
+
Use [webdriverio][37] API inside a test.
|
|
2317
2272
|
|
|
2318
2273
|
First argument is a description of an action.
|
|
2319
2274
|
Second argument is async function that gets this helper as parameter.
|
|
2320
2275
|
|
|
2321
|
-
{ [`browser`][
|
|
2276
|
+
{ [`browser`][37]) } object from WebDriver API is available.
|
|
2322
2277
|
|
|
2323
2278
|
```js
|
|
2324
2279
|
I.useWebDriverTo('open multiple windows', async ({ browser }) {
|
|
@@ -2330,7 +2285,7 @@ I.useWebDriverTo('open multiple windows', async ({ browser }) {
|
|
|
2330
2285
|
#### Parameters
|
|
2331
2286
|
|
|
2332
2287
|
* `description` **[string][18]** used to show in logs.
|
|
2333
|
-
* `fn` **[function][
|
|
2288
|
+
* `fn` **[function][27]** async functuion that executed with WebDriver helper as argument
|
|
2334
2289
|
|
|
2335
2290
|
### wait
|
|
2336
2291
|
|
|
@@ -2342,7 +2297,7 @@ I.wait(2); // wait 2 secs
|
|
|
2342
2297
|
|
|
2343
2298
|
#### Parameters
|
|
2344
2299
|
|
|
2345
|
-
* `sec` **[number][
|
|
2300
|
+
* `sec` **[number][23]** number of second to wait.
|
|
2346
2301
|
|
|
2347
2302
|
Returns **void** automatically synchronized promise through #recorder
|
|
2348
2303
|
|
|
@@ -2369,7 +2324,7 @@ I.waitForClickable('.btn.continue', 5); // wait for 5 secs
|
|
|
2369
2324
|
|
|
2370
2325
|
* `locator` **([string][18] | [object][17])** element located by CSS|XPath|strict locator.
|
|
2371
2326
|
* `waitTimeout`  
|
|
2372
|
-
* `sec` **[number][
|
|
2327
|
+
* `sec` **[number][23]?** (optional, `1` by default) time in seconds to wait
|
|
2373
2328
|
|
|
2374
2329
|
Returns **void** automatically synchronized promise through #recorder
|
|
2375
2330
|
|
|
@@ -2384,7 +2339,7 @@ I.waitForCookie("token");
|
|
|
2384
2339
|
#### Parameters
|
|
2385
2340
|
|
|
2386
2341
|
* `name` **[string][18]** expected cookie name.
|
|
2387
|
-
* `sec` **[number][
|
|
2342
|
+
* `sec` **[number][23]** (optional, `3` by default) time in seconds to wait
|
|
2388
2343
|
|
|
2389
2344
|
Returns **void** automatically synchronized promise through #recorder
|
|
2390
2345
|
|
|
@@ -2400,7 +2355,7 @@ I.waitForDetached('#popup');
|
|
|
2400
2355
|
#### Parameters
|
|
2401
2356
|
|
|
2402
2357
|
* `locator` **([string][18] | [object][17])** element located by CSS|XPath|strict locator.
|
|
2403
|
-
* `sec` **[number][
|
|
2358
|
+
* `sec` **[number][23]** (optional, `1` by default) time in seconds to wait
|
|
2404
2359
|
|
|
2405
2360
|
Returns **void** automatically synchronized promise through #recorder
|
|
2406
2361
|
|
|
@@ -2417,7 +2372,7 @@ I.waitForElement('.btn.continue', 5); // wait for 5 secs
|
|
|
2417
2372
|
#### Parameters
|
|
2418
2373
|
|
|
2419
2374
|
* `locator` **([string][18] | [object][17])** element located by CSS|XPath|strict locator.
|
|
2420
|
-
* `sec` **[number][
|
|
2375
|
+
* `sec` **[number][23]?** (optional, `1` by default) time in seconds to wait
|
|
2421
2376
|
|
|
2422
2377
|
Returns **void** automatically synchronized promise through #recorder
|
|
2423
2378
|
|
|
@@ -2429,7 +2384,7 @@ Element can be located by CSS or XPath.
|
|
|
2429
2384
|
#### Parameters
|
|
2430
2385
|
|
|
2431
2386
|
* `locator` **([string][18] | [object][17])** element located by CSS|XPath|strict locator.
|
|
2432
|
-
* `sec` **[number][
|
|
2387
|
+
* `sec` **[number][23]** (optional) time in seconds to wait, 1 by default.
|
|
2433
2388
|
|
|
2434
2389
|
Returns **void** automatically synchronized promise through #recorder
|
|
2435
2390
|
|
|
@@ -2450,9 +2405,9 @@ I.waitForFunction((count) => window.requests == count, [3], 5) // pass args and
|
|
|
2450
2405
|
|
|
2451
2406
|
#### Parameters
|
|
2452
2407
|
|
|
2453
|
-
* `fn` **([string][18] | [function][
|
|
2454
|
-
* `argsOrSec` **([Array][
|
|
2455
|
-
* `sec` **[number][
|
|
2408
|
+
* `fn` **([string][18] | [function][27])** to be executed in browser context.
|
|
2409
|
+
* `argsOrSec` **([Array][30]<any> | [number][23])?** (optional, `1` by default) arguments for function or seconds.
|
|
2410
|
+
* `sec` **[number][23]?** (optional, `1` by default) time in seconds to wait
|
|
2456
2411
|
|
|
2457
2412
|
Returns **void** automatically synchronized promise through #recorder
|
|
2458
2413
|
|
|
@@ -2468,7 +2423,7 @@ I.waitForInvisible('#popup');
|
|
|
2468
2423
|
#### Parameters
|
|
2469
2424
|
|
|
2470
2425
|
* `locator` **([string][18] | [object][17])** element located by CSS|XPath|strict locator.
|
|
2471
|
-
* `sec` **[number][
|
|
2426
|
+
* `sec` **[number][23]** (optional, `1` by default) time in seconds to wait
|
|
2472
2427
|
|
|
2473
2428
|
Returns **void** automatically synchronized promise through #recorder
|
|
2474
2429
|
|
|
@@ -2482,8 +2437,8 @@ I.waitForNumberOfTabs(2);
|
|
|
2482
2437
|
|
|
2483
2438
|
#### Parameters
|
|
2484
2439
|
|
|
2485
|
-
* `expectedTabs` **[number][
|
|
2486
|
-
* `sec` **[number][
|
|
2440
|
+
* `expectedTabs` **[number][23]** expecting the number of tabs.
|
|
2441
|
+
* `sec` **[number][23]** number of secs to wait.
|
|
2487
2442
|
|
|
2488
2443
|
Returns **void** automatically synchronized promise through #recorder
|
|
2489
2444
|
|
|
@@ -2501,7 +2456,7 @@ I.waitForText('Thank you, form has been submitted', 5, '#modal');
|
|
|
2501
2456
|
#### Parameters
|
|
2502
2457
|
|
|
2503
2458
|
* `text` **[string][18]** to wait for.
|
|
2504
|
-
* `sec` **[number][
|
|
2459
|
+
* `sec` **[number][23]** (optional, `1` by default) time in seconds to wait
|
|
2505
2460
|
* `context` **([string][18] | [object][17])?** (optional) element located by CSS|XPath|strict locator.
|
|
2506
2461
|
|
|
2507
2462
|
Returns **void** automatically synchronized promise through #recorder
|
|
@@ -2518,7 +2473,7 @@ I.waitForValue('//input', "GoodValue");
|
|
|
2518
2473
|
|
|
2519
2474
|
* `field` **([string][18] | [object][17])** input field.
|
|
2520
2475
|
* `value` **[string][18]** expected value.
|
|
2521
|
-
* `sec` **[number][
|
|
2476
|
+
* `sec` **[number][23]** (optional, `1` by default) time in seconds to wait
|
|
2522
2477
|
|
|
2523
2478
|
Returns **void** automatically synchronized promise through #recorder
|
|
2524
2479
|
|
|
@@ -2534,7 +2489,7 @@ I.waitForVisible('#popup');
|
|
|
2534
2489
|
#### Parameters
|
|
2535
2490
|
|
|
2536
2491
|
* `locator` **([string][18] | [object][17])** element located by CSS|XPath|strict locator.
|
|
2537
|
-
* `sec` **[number][
|
|
2492
|
+
* `sec` **[number][23]** (optional, `1` by default) time in seconds to wait
|
|
2538
2493
|
|
|
2539
2494
|
Returns **void** automatically synchronized promise through #recorder
|
|
2540
2495
|
|
|
@@ -2549,7 +2504,7 @@ I.waitInUrl('/info', 2);
|
|
|
2549
2504
|
#### Parameters
|
|
2550
2505
|
|
|
2551
2506
|
* `urlPart` **[string][18]** value to check.
|
|
2552
|
-
* `sec` **[number][
|
|
2507
|
+
* `sec` **[number][23]** (optional, `1` by default) time in seconds to wait
|
|
2553
2508
|
|
|
2554
2509
|
Returns **void** automatically synchronized promise through #recorder
|
|
2555
2510
|
|
|
@@ -2564,8 +2519,8 @@ I.waitNumberOfVisibleElements('a', 3);
|
|
|
2564
2519
|
#### Parameters
|
|
2565
2520
|
|
|
2566
2521
|
* `locator` **([string][18] | [object][17])** element located by CSS|XPath|strict locator.
|
|
2567
|
-
* `num` **[number][
|
|
2568
|
-
* `sec` **[number][
|
|
2522
|
+
* `num` **[number][23]** number of elements.
|
|
2523
|
+
* `sec` **[number][23]** (optional, `1` by default) time in seconds to wait
|
|
2569
2524
|
|
|
2570
2525
|
Returns **void** automatically synchronized promise through #recorder
|
|
2571
2526
|
|
|
@@ -2581,7 +2536,7 @@ I.waitToHide('#popup');
|
|
|
2581
2536
|
#### Parameters
|
|
2582
2537
|
|
|
2583
2538
|
* `locator` **([string][18] | [object][17])** element located by CSS|XPath|strict locator.
|
|
2584
|
-
* `sec` **[number][
|
|
2539
|
+
* `sec` **[number][23]** (optional, `1` by default) time in seconds to wait
|
|
2585
2540
|
|
|
2586
2541
|
Returns **void** automatically synchronized promise through #recorder
|
|
2587
2542
|
|
|
@@ -2597,15 +2552,15 @@ I.waitUrlEquals('http://127.0.0.1:8000/info');
|
|
|
2597
2552
|
#### Parameters
|
|
2598
2553
|
|
|
2599
2554
|
* `urlPart` **[string][18]** value to check.
|
|
2600
|
-
* `sec` **[number][
|
|
2555
|
+
* `sec` **[number][23]** (optional, `1` by default) time in seconds to wait
|
|
2601
2556
|
|
|
2602
2557
|
Returns **void** automatically synchronized promise through #recorder
|
|
2603
2558
|
|
|
2604
2559
|
[1]: http://webdriver.io/
|
|
2605
2560
|
|
|
2606
|
-
[2]: https://
|
|
2561
|
+
[2]: https://webdriver.io/blog/2023/07/31/driver-management/
|
|
2607
2562
|
|
|
2608
|
-
[3]: https://
|
|
2563
|
+
[3]: https://codecept.io/webdriver/#testing-with-webdriver
|
|
2609
2564
|
|
|
2610
2565
|
[4]: http://webdriver.io/guide/getstarted/configuration.html
|
|
2611
2566
|
|
|
@@ -2643,40 +2598,42 @@ Returns **void** automatically synchronized promise through #recorder
|
|
|
2643
2598
|
|
|
2644
2599
|
[21]: https://playwright.dev/docs/api/class-locator#locator-blur
|
|
2645
2600
|
|
|
2646
|
-
[22]:
|
|
2601
|
+
[22]: /locators#aria-locators
|
|
2602
|
+
|
|
2603
|
+
[23]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number
|
|
2647
2604
|
|
|
2648
|
-
[
|
|
2605
|
+
[24]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise
|
|
2649
2606
|
|
|
2650
|
-
[
|
|
2607
|
+
[25]: https://webdriver.io/docs/timeouts.html
|
|
2651
2608
|
|
|
2652
|
-
[
|
|
2609
|
+
[26]: https://vuejs.org/v2/api/#Vue-nextTick
|
|
2653
2610
|
|
|
2654
|
-
[
|
|
2611
|
+
[27]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function
|
|
2655
2612
|
|
|
2656
|
-
[
|
|
2613
|
+
[28]: http://webdriver.io/api/protocol/execute.html
|
|
2657
2614
|
|
|
2658
|
-
[
|
|
2615
|
+
[29]: https://playwright.dev/docs/api/class-locator#locator-focus
|
|
2659
2616
|
|
|
2660
|
-
[
|
|
2617
|
+
[30]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array
|
|
2661
2618
|
|
|
2662
|
-
[
|
|
2619
|
+
[31]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined
|
|
2663
2620
|
|
|
2664
|
-
[
|
|
2621
|
+
[32]: #fillfield
|
|
2665
2622
|
|
|
2666
|
-
[
|
|
2623
|
+
[33]: #click
|
|
2667
2624
|
|
|
2668
|
-
[
|
|
2625
|
+
[34]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean
|
|
2669
2626
|
|
|
2670
|
-
[
|
|
2627
|
+
[35]: https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
|
|
2671
2628
|
|
|
2672
|
-
[
|
|
2629
|
+
[36]: https://code.google.com/p/selenium/wiki/JsonWireProtocol#Cookie_JSON_Object
|
|
2673
2630
|
|
|
2674
|
-
[
|
|
2631
|
+
[37]: https://webdriver.io/docs/api.html
|
|
2675
2632
|
|
|
2676
|
-
[
|
|
2633
|
+
[38]: https://webdriver.io/docs/api/webdriverBidi/
|
|
2677
2634
|
|
|
2678
|
-
[
|
|
2635
|
+
[39]: http://codecept.io/acceptance/#smartwait
|
|
2679
2636
|
|
|
2680
|
-
[
|
|
2637
|
+
[40]: http://webdriver.io/docs/timeouts.html
|
|
2681
2638
|
|
|
2682
|
-
[
|
|
2639
|
+
[41]: https://webdriver.io/docs/configuration/#loglevel
|