mirror of
https://github.com/appium/appium.git
synced 2026-11-14 06:44:19 +08:00
Compare commits
304
Commits
1.10.0-beta.2
...
v1.14.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9c325d3d35 | ||
|
|
ad9988facb | ||
|
|
f0b39a1cdc | ||
|
|
0927126820 | ||
|
|
6d792ed4d3 | ||
|
|
d4844fb0bb | ||
|
|
82b8a5ab88 | ||
|
|
7036350b76 | ||
|
|
4836c08d55 | ||
|
|
11b8d36d83 | ||
|
|
adf93d085e | ||
|
|
94b305dec7 | ||
|
|
2bd4e486a7 | ||
|
|
ede9605458 | ||
|
|
1860828bca | ||
|
|
6c3f9c2794 | ||
|
|
ecac10a3e1 | ||
|
|
dba3a87c54 | ||
|
|
38f2876859 | ||
|
|
073291d29b | ||
|
|
da3f5f9be7 | ||
|
|
920197b7ba | ||
|
|
0c1adf1d42 | ||
|
|
1494b6cb4c | ||
|
|
30193f041e | ||
|
|
ae93e8a4bf | ||
|
|
efa9ce5b0b | ||
|
|
49ed66602d | ||
|
|
39c03cfabc | ||
|
|
b231aebadd | ||
|
|
3f102d7331 | ||
|
|
5e636e7885 | ||
|
|
4fb0400615 | ||
|
|
bb9fe57325 | ||
|
|
2b760944b0 | ||
|
|
e002f05bb0 | ||
|
|
64fd885ac5 | ||
|
|
fbb6e2ea1a | ||
|
|
8cda72666a | ||
|
|
c0f952b6e3 | ||
|
|
ca4b6964fb | ||
|
|
8922016f16 | ||
|
|
783252b09c | ||
|
|
aee8250641 | ||
|
|
eb4ddafc36 | ||
|
|
240810d028 | ||
|
|
2ca8d941c6 | ||
|
|
77264b15dc | ||
|
|
7a8ccb5307 | ||
|
|
66f07b288c | ||
|
|
2304304038 | ||
|
|
5e7b6cf1a6 | ||
|
|
0500ce8287 | ||
|
|
90a73e6fd5 | ||
|
|
21afea74d2 | ||
|
|
02c729ef9c | ||
|
|
cd07564127 | ||
|
|
cdfd8fabfc | ||
|
|
ef38020a14 | ||
|
|
ef6fa9088f | ||
|
|
c596608bfd | ||
|
|
bc9718899f | ||
|
|
1d2f4d62ac | ||
|
|
4b5a1df80d | ||
|
|
3d7a011388 | ||
|
|
da99ceedc5 | ||
|
|
24cd5837c1 | ||
|
|
ea1962cdea | ||
|
|
e35e4f7bae | ||
|
|
277ed72d45 | ||
|
|
e599b3acfe | ||
|
|
01f86acd1a | ||
|
|
b5dce73508 | ||
|
|
678f0ba278 | ||
|
|
cf994b6b3d | ||
|
|
2b165af0ad | ||
|
|
33c1d6aec2 | ||
|
|
93c3111324 | ||
|
|
7aefac479c | ||
|
|
4ccc8665f8 | ||
|
|
6e4a0e6480 | ||
|
|
d7e01e6371 | ||
|
|
fb53a8ff1c | ||
|
|
e3fe431c61 | ||
|
|
ea202bbd7b | ||
|
|
b2fec324f7 | ||
|
|
72adc8b0ab | ||
|
|
79c66dcf34 | ||
|
|
acb88dca74 | ||
|
|
cacb39a708 | ||
|
|
2d3be8a5ca | ||
|
|
438d6c3b38 | ||
|
|
48f28351bd | ||
|
|
0764b6eff8 | ||
|
|
079b1fc08d | ||
|
|
465efb481d | ||
|
|
4c06293f01 | ||
|
|
2fac6ee125 | ||
|
|
a532aa4978 | ||
|
|
3d5ce43e58 | ||
|
|
f8cdd1979d | ||
|
|
fa4d75c7e7 | ||
|
|
e646760a17 | ||
|
|
2188faacba | ||
|
|
83ba650b12 | ||
|
|
3fbe003c84 | ||
|
|
276880ffbb | ||
|
|
99fa1f37ed | ||
|
|
c6be91e6c3 | ||
|
|
734850a305 | ||
|
|
048e25a6e3 | ||
|
|
cd6a149354 | ||
|
|
b9c4265cdc | ||
|
|
32505a2dae | ||
|
|
eb436fe573 | ||
|
|
c2086d609d | ||
|
|
145c4aa9fd | ||
|
|
cfab0466ba | ||
|
|
aac21af13d | ||
|
|
dbb7c449ff | ||
|
|
f732fc5470 | ||
|
|
315a1b8b34 | ||
|
|
906350fd33 | ||
|
|
4e8bbbcc88 | ||
|
|
5ac4338ba7 | ||
|
|
663218ea06 | ||
|
|
0ad48e3db3 | ||
|
|
8e5ec38d3f | ||
|
|
7366bb4d8e | ||
|
|
3e2feb127c | ||
|
|
c6483d9a35 | ||
|
|
e7d391b8d9 | ||
|
|
786b14567e | ||
|
|
c9a9aa354e | ||
|
|
bbb13226a4 | ||
|
|
d7687660da | ||
|
|
e0e3c7a90a | ||
|
|
030c9a7df8 | ||
|
|
c747eae57a | ||
|
|
e345cc2a98 | ||
|
|
29d4f8baa0 | ||
|
|
07182b4a3f | ||
|
|
b0f50f4342 | ||
|
|
c7cf9f6d83 | ||
|
|
061fac0bd3 | ||
|
|
a84b4c1e7b | ||
|
|
69e9e79221 | ||
|
|
6bd4523cd2 | ||
|
|
21cd2828df | ||
|
|
6339926c43 | ||
|
|
b11c828b6f | ||
|
|
585da2a15d | ||
|
|
e608088390 | ||
|
|
bce4d6f91e | ||
|
|
5896ac5439 | ||
|
|
2ff0cb5d08 | ||
|
|
00e7e3d168 | ||
|
|
b5fc8f5d59 | ||
|
|
88947a884b | ||
|
|
71e326e01a | ||
|
|
8c15ac66f1 | ||
|
|
1f97ee3d58 | ||
|
|
113a9189d6 | ||
|
|
873d85f47c | ||
|
|
1b7a792358 | ||
|
|
106ccf931a | ||
|
|
829845e71b | ||
|
|
146d18a596 | ||
|
|
9e50423d1e | ||
|
|
90588806cd | ||
|
|
45d71de9b0 | ||
|
|
4efd3df586 | ||
|
|
a3ee59bf9e | ||
|
|
93cb1d85b4 | ||
|
|
853bc808bb | ||
|
|
a08cc42c65 | ||
|
|
959afa9f9d | ||
|
|
7cfb65c1fe | ||
|
|
d4b0cf3eb8 | ||
|
|
ef49649f5e | ||
|
|
5cd688c4d3 | ||
|
|
72cb565741 | ||
|
|
541beecc27 | ||
|
|
8e77a96de4 | ||
|
|
deca9c3180 | ||
|
|
856ceb3339 | ||
|
|
c98a4dd73a | ||
|
|
259b2f3005 | ||
|
|
b5a6088c7a | ||
|
|
16accdac94 | ||
|
|
60fc87ea2d | ||
|
|
59a7dbcdbe | ||
|
|
24df4d585e | ||
|
|
a1706d89fd | ||
|
|
1d86032037 | ||
|
|
1d43acfd1f | ||
|
|
04e68b024c | ||
|
|
38acc6daac | ||
|
|
264a58e9ac | ||
|
|
5f1694d323 | ||
|
|
aba8fac597 | ||
|
|
fe03aedb1b | ||
|
|
0e582a2eff | ||
|
|
bcd743ff11 | ||
|
|
6cf4de2a62 | ||
|
|
62029e26c6 | ||
|
|
707afccb48 | ||
|
|
14010b2524 | ||
|
|
aa51ce3134 | ||
|
|
fd4afcacc2 | ||
|
|
2dd348e391 | ||
|
|
701fc16468 | ||
|
|
783c5e3c2e | ||
|
|
896072ebf5 | ||
|
|
5d77509703 | ||
|
|
bba037d655 | ||
|
|
2f9e339482 | ||
|
|
b90aa66964 | ||
|
|
97fbb1942e | ||
|
|
41941a1c9d | ||
|
|
ac0bed0a80 | ||
|
|
76778da778 | ||
|
|
7c9058a1e1 | ||
|
|
32d5deba53 | ||
|
|
2c644c7f2a | ||
|
|
10753839a9 | ||
|
|
97f324a58b | ||
|
|
25040552ed | ||
|
|
f5b8bf94f8 | ||
|
|
57cec2cb43 | ||
|
|
7a1e9076f4 | ||
|
|
6a87f37836 | ||
|
|
543781146f | ||
|
|
b428cdb030 | ||
|
|
f39f2d4728 | ||
|
|
872cb8563e | ||
|
|
e0c4106d22 | ||
|
|
844094a7bb | ||
|
|
4df45addc3 | ||
|
|
4a4f1cf20e | ||
|
|
e793e279f9 | ||
|
|
29922f8931 | ||
|
|
f60b12cae0 | ||
|
|
eaf00bc3f4 | ||
|
|
23471c7f01 | ||
|
|
aaa6bad146 | ||
|
|
5229607571 | ||
|
|
afab8be9c5 | ||
|
|
f1babf9163 | ||
|
|
21cfe42de1 | ||
|
|
f88c9958ac | ||
|
|
799fd7b037 | ||
|
|
7dd34ca8b9 | ||
|
|
7e61cbb2e0 | ||
|
|
735df9aee9 | ||
|
|
4dcc36ba74 | ||
|
|
cf2841d727 | ||
|
|
ebe93becc3 | ||
|
|
17c5b4b73e | ||
|
|
e097326f8e | ||
|
|
12022c4161 | ||
|
|
9f81f2740a | ||
|
|
0c44036413 | ||
|
|
65ad7bf4ba | ||
|
|
032275cdbd | ||
|
|
b6440cbefc | ||
|
|
49832c3033 | ||
|
|
c9064d44b4 | ||
|
|
9ace7e881c | ||
|
|
0cc676d6f9 | ||
|
|
372171f7af | ||
|
|
a2ff1b5afd | ||
|
|
88eded2b25 | ||
|
|
3c5ee31816 | ||
|
|
08c9169a73 | ||
|
|
9c2c455a30 | ||
|
|
b31c8cf58b | ||
|
|
b001cb6a60 | ||
|
|
b0257be3a9 | ||
|
|
05fecec9b7 | ||
|
|
37833cfbe0 | ||
|
|
4e94937171 | ||
|
|
0aada1ca11 | ||
|
|
d48d26f14f | ||
|
|
98f6d0a4d9 | ||
|
|
b3ff08e4a3 | ||
|
|
b03f175d3d | ||
|
|
265b963181 | ||
|
|
d301d9ef12 | ||
|
|
bf1a0d16eb | ||
|
|
7c5b73945b | ||
|
|
fafd31457d | ||
|
|
e111b783d9 | ||
|
|
292e099224 | ||
|
|
cde64e4f20 | ||
|
|
a95edb1623 | ||
|
|
ffb1ff25bb | ||
|
|
9fb3e55dae | ||
|
|
caa40a9366 | ||
|
|
446241539c | ||
|
|
70bd1f0e9f | ||
|
|
029f080caf | ||
|
|
54b2684664 | ||
|
|
53da4d467d |
+1
-1
@@ -1,2 +1,2 @@
|
||||
sample-code
|
||||
coverage
|
||||
node_modules
|
||||
|
||||
@@ -8,6 +8,7 @@ Briefly describe the issue you are experiencing (or the feature you want to see
|
||||
* Last Appium version that did not exhibit the issue (if applicable):
|
||||
* Desktop OS/version used to run Appium:
|
||||
* Node.js version (unless using Appium.app|exe):
|
||||
* Npm or Yarn package manager:
|
||||
* Mobile platform/version under test:
|
||||
* Real device or emulator/simulator:
|
||||
* Appium CLI or Appium.app|exe:
|
||||
@@ -18,8 +19,8 @@ If necessary, describe the problem you have been experiencing in more detail.
|
||||
|
||||
## Link to Appium logs
|
||||
|
||||
Create a [GIST](https://gist.github.com) which is a paste of your _full_ Appium logs, and link them here.
|
||||
Do _NOT_ paste your full Appium logs here, as it will make this issue very long and hard to read!
|
||||
Create a [GIST](https://gist.github.com) which is a paste of your _full_ Appium logs, and link them here.
|
||||
Do _NOT_ paste your full Appium logs here, as it will make this issue very long and hard to read!
|
||||
If you are reporting a bug, _always_ include Appium logs!
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
# Configuration for Lock Threads - https://github.com/dessant/lock-threads
|
||||
|
||||
# Number of days of inactivity before a closed issue or pull request is locked
|
||||
daysUntilLock: 365
|
||||
|
||||
# Skip issues and pull requests created before a given timestamp. Timestamp must
|
||||
# follow ISO 8601 (`YYYY-MM-DD`). Set to `false` to disable
|
||||
skipCreatedBefore: false
|
||||
|
||||
# Issues and pull requests with these labels will be ignored. Set to `[]` to disable
|
||||
exemptLabels: []
|
||||
|
||||
# Label to add before locking, such as `outdated`. Set to `false` to disable
|
||||
lockLabel: false
|
||||
|
||||
# Comment to post before locking. Set to `false` to disable
|
||||
lockComment: >
|
||||
This thread has been automatically locked since there has not been
|
||||
any recent activity after it was closed. Please open a new issue for
|
||||
related bugs.
|
||||
|
||||
# Assign `resolved` as the reason for locking. Set to `false` to disable
|
||||
setLockReason: false
|
||||
|
||||
# Limit to only `issues` or `pulls`
|
||||
only: issues
|
||||
@@ -45,7 +45,9 @@ sample-code/javascript-wd/node_modules
|
||||
sample-code/php/vendor
|
||||
sample-code/php/composer.lock
|
||||
sample-code/java/out/
|
||||
sample-code/ruby/Gemfile.lock
|
||||
sample-code/python/test/results/
|
||||
sample-code/python/test/input
|
||||
sample-code/python/.pytest_cache/
|
||||
sample-code/csharp/test/bin
|
||||
sample-code/csharp/test/obj
|
||||
|
||||
+116
-23
@@ -1,43 +1,100 @@
|
||||
language: node_js
|
||||
node_js: "10"
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- g++-4.8
|
||||
- build-essential
|
||||
env:
|
||||
global:
|
||||
- CXX=g++-4.8
|
||||
node_js: "10"
|
||||
jobs:
|
||||
include:
|
||||
- stage: Tests
|
||||
os:
|
||||
- linux
|
||||
- sudo: false
|
||||
name: node 10
|
||||
os: linux
|
||||
script: npm run test && npm run e2e-test
|
||||
node_js: "11"
|
||||
after_script: npm run coverage
|
||||
- stage:
|
||||
os:
|
||||
- linux
|
||||
- sudo: false
|
||||
name: node 12
|
||||
os: linux
|
||||
script: npm run test && npm run e2e-test
|
||||
node_js: "10"
|
||||
node_js: "12"
|
||||
- stage:
|
||||
os:
|
||||
- linux
|
||||
- sudo: false
|
||||
script: npm run test && npm run e2e-test
|
||||
node_js: "8"
|
||||
- stage:
|
||||
os:
|
||||
- linux
|
||||
- sudo: false
|
||||
name: test documentation generation
|
||||
os: linux
|
||||
before_script:
|
||||
- npm install
|
||||
script:
|
||||
- npm run generate-docs
|
||||
|
||||
- stage: Sample Code
|
||||
name: JavaScript (wd)
|
||||
# only want to run this on the main master branch
|
||||
if: branch = master AND type != pull_request
|
||||
env:
|
||||
# this is just to indicate in the Travis job list that this is generating docs
|
||||
- GENERATE_DOCS=true
|
||||
script: npm run generate-docs
|
||||
- stage: BinTray Bundle Build and Upload
|
||||
- SAUCE_LABS=1
|
||||
install:
|
||||
- cd sample-code/javascript-wd
|
||||
- npm install
|
||||
script:
|
||||
- npm run test
|
||||
- stage:
|
||||
name: Python
|
||||
# only want to run this on the main master branch
|
||||
if: branch = master AND type != pull_request
|
||||
os: linux
|
||||
language: python
|
||||
python: "2.7"
|
||||
env:
|
||||
- SAUCE_LABS=1
|
||||
before_install:
|
||||
- pip install --upgrade pip
|
||||
install:
|
||||
- cd sample-code/python
|
||||
- pip install -r requirements.txt
|
||||
- pip install pytest-xdist
|
||||
script:
|
||||
- py.test -v -n 30 test
|
||||
|
||||
- stage: Update assets
|
||||
name: Documentation
|
||||
os: linux
|
||||
if: branch = master AND type != pull_request AND !tag
|
||||
env:
|
||||
- GITHUB_TOKEN=$TRIAGER_BOT_TOKEN
|
||||
before_install:
|
||||
# install linuxbrew
|
||||
- sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
|
||||
- test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
|
||||
- echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile
|
||||
install:
|
||||
- npm install
|
||||
before_script:
|
||||
# do git stuff
|
||||
- brew install hub
|
||||
- hub --version
|
||||
- git remote set-url origin https://triager:$TRIAGER_BOT_TOKEN@github.com/appium/appium
|
||||
- git checkout -b generate-docs-$TRAVIS_COMMIT
|
||||
script:
|
||||
# Generate the docs
|
||||
- npm run generate-docs
|
||||
- git add .
|
||||
|
||||
# log the status so we know what is going on, on failure
|
||||
- git status -s
|
||||
|
||||
# If docs were generated, make a PR to update the docs
|
||||
- |
|
||||
if [[ -n $(git status -s) ]]; then
|
||||
git commit -a -n -m 'Update generated docs [ci skip]';
|
||||
git push origin generate-docs-$TRAVIS_COMMIT;
|
||||
hub pull-request -b "appium:master" -h "appium:generate-docs-$TRAVIS_COMMIT" -m "Update auto-generated docs";
|
||||
fi
|
||||
- stage:
|
||||
name: Bundle
|
||||
# only want to run this on the main master branch
|
||||
if: branch = master AND type != pull_request
|
||||
os:
|
||||
@@ -49,6 +106,7 @@ jobs:
|
||||
- CXX=g++
|
||||
before_install:
|
||||
- gcc --version
|
||||
- brew upgrade carthage
|
||||
install:
|
||||
# Install prod dependencies
|
||||
- npm install
|
||||
@@ -56,10 +114,45 @@ jobs:
|
||||
# Install only the dev dependencies that we need
|
||||
- npm install --only=dev gulp
|
||||
- npm install --only=dev appium-gulp-plugins
|
||||
|
||||
# get appium-xcuitest-driver fully built
|
||||
- pushd node_modules/appium-xcuitest-driver/WebDriverAgent
|
||||
# do not use build script because Travis _will_ have rate limits
|
||||
- carthage bootstrap --no-use-binaries
|
||||
- cp Cartfile.resolved Carthage
|
||||
- mkdir -p ./Resources/WebDriverAgent.bundle
|
||||
- popd
|
||||
before_script:
|
||||
# Build the assets
|
||||
- npm run build
|
||||
|
||||
# Remove the dev depenedencies
|
||||
- npm prune
|
||||
script: npm run zip-and-upload
|
||||
script:
|
||||
- npm run zip
|
||||
- npm install --only=dev gulp
|
||||
- npm install --only=dev appium-gulp-plugins
|
||||
- npm run upload
|
||||
|
||||
- stage: Update appium.io
|
||||
if: tag
|
||||
os: osx
|
||||
env:
|
||||
- HUB_VERBOSE=true
|
||||
- GITHUB_TOKEN=$TRIAGER_BOT_TOKEN
|
||||
before_script:
|
||||
- brew install hub
|
||||
- pip install mkdocs==0.16.3
|
||||
|
||||
# Checkout appium.io repository
|
||||
- git clone https://triager:$TRIAGER_BOT_TOKEN@github.com/appium/appium.io.git --branch=gh-pages && cd appium.io/
|
||||
- git checkout -b docs-$TRAVIS_TAG
|
||||
- bundle install
|
||||
- npm install
|
||||
|
||||
script:
|
||||
# Build the docs and make a PR to get them on appium.io
|
||||
- npm run build:docs
|
||||
- git commit -a -n -m 'Updated docs for latest Appium version'
|
||||
- git push origin docs-$TRAVIS_TAG
|
||||
- hub pull-request -b "appium:gh-pages" -h "appium:docs-$TRAVIS_TAG" -m "Update documentation for latest version" | exit 0 # The PR command works but always returns non-negative
|
||||
|
||||
+200
@@ -1,3 +1,203 @@
|
||||
CHANGES IN VERSION 1.13.0 (FROM 1.12.1)
|
||||
===================================
|
||||
|
||||
Appium 1.13.0 is a minor release
|
||||
|
||||
#### General
|
||||
* Appium 1.13 will be the last minor version to use [UiAutomator1](https://github.com/appium/appium-android-driver) as the default Android automation. As of Appium 1.14, the default Android driver will be [UiAutomator2](https://github.com/appium/appium-uiautomator2-driver). If you don't set the `automationName` for an Android session a big [warning](https://github.com/appium/appium/pull/12481) will be displayed notifying you of the change. This will be a breaking change, and it's recommended if you wish to keep the same behavior, add the capability `automationName=UiAutomator1` to your scripts
|
||||
* Appium 1.13 will be the last minor version to support Node v8. As of Appium 1.14 the supported Node versions will be v10 and v12.
|
||||
* Added capability `defaultImageTemplateScale` to allow arranging of image comparison logic [#307](https://github.com/appium/appium-base-driver/pull/307)
|
||||
* Fixes:
|
||||
* Treat W3C /property and /attribute as aliases in a web context [#311](https://github.com/appium/appium-base-driver/pull/311)
|
||||
|
||||
#### Android
|
||||
* New capabilities:
|
||||
* `remoteAppsCacheLimit`: sets the limit for how many APKs will be cached on a device [#523](https://github.com/appium/appium-android-driver/pull/523)
|
||||
* `chromedriverPorts`: allows specifying multiple ports or a range of Chromedriver ports to use for web tests [#529](https://github.com/appium/appium-android-driver/pull/529)
|
||||
* `buildToolsVersion`: allows you to set the Android `build-tools` version to be something different than the default, which is to use the most recent version [#532](https://github.com/appium/appium-android-driver/pull/532)
|
||||
* Fixes:
|
||||
* Emulators have a bug where they sometimes go offline when root/unroot is called. Only affects unrooted emulators. Workaround is to check if a device went offline after root/unroot was called and then restarting the ADB server if it did [#443](https://github.com/appium/appium-adb/pull/443)
|
||||
* Calls to `mobile:` endpoints weren't being called in web context. Default now is that, in a web context, the native mobile endpoint is always called [#527](https://github.com/appium/appium-android-driver/pull/527)
|
||||
* `network_connection` endpoint was also not usable from web context [#531](https://github.com/appium/appium-android-driver/pull/531)
|
||||
* `pushFile` was not working on some later Android SDK's due to permission errors [#439](https://github.com/appium/appium-adb/pull/439)
|
||||
* Default values in caps not being set correctly [#436](https://github.com/appium/appium-adb/pull/436)
|
||||
* No longer uninstalls apps when session is terminated if `dontStopAppOnReset` is set [#530](https://github.com/appium/appium-android-driver/pull/530)
|
||||
* Allow touch actions in a web context. Only works for absolute coordinates. JSONWP only, not related to W3C Actions implementation [#534](https://github.com/appium/appium-android-driver/pull/534/files)
|
||||
* Update Chromedriver to 73.0.0 [#318](https://github.com/appium/appium-base-driver/pull/318)
|
||||
|
||||
#### Android (UiAutomator2)
|
||||
* Use UiAutomator's screenshot method when default screenshoter fails [#264](https://github.com/appium/appium-uiautomator2-server/pull/264)
|
||||
* Add detailed network information to the device information endpoint (appium/device/info) [#265](https://github.com/appium/appium-uiautomator2-server/pull/265). Addresses [Issue #12502](https://github.com/appium/appium/issues/12502)
|
||||
|
||||
#### Android (Espresso)
|
||||
* Fixes:
|
||||
* Changed incorrect naming of Espresso argument `installTimeout` to the correct `androidInstallTimeout` [#426](https://github.com/appium/appium-espresso-driver/pull/426/files)
|
||||
* Use ADB instead of Espresso to verify activities for better reliability [#425](https://github.com/appium/appium-espresso-driver/pull/425/files)
|
||||
|
||||
#### iOS
|
||||
* Support webview testing for real devices running iOS 12.2+ (1.12.1 already added support for iOS Simulators) [#122](https://github.com/appium/appium-remote-debugger/pull/122). Make sure your ios-webkit-debug-proxy is [up-to-date](https://github.com/google/ios-webkit-debug-proxy/releases/latest) for real devices.
|
||||
* Supports tvOS [#151](https://github.com/appium/WebDriverAgent/pull/151).
|
||||
* See [documentation](https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/ios/ios-tvos.md) for details.
|
||||
* Be sure to update Carthage to the [latest](https://github.com/Carthage/Carthage/releases) to handle TVOs dependencies
|
||||
* Fixes:
|
||||
* Improve performance of video recording by using superior startup detection tools [#12486](https://github.com/appium/appium/issues/12486)
|
||||
* Not able to change video recording parameters in IOS [#12463](https://github.com/appium/appium/issues/12463)
|
||||
* Change behavior of capability `showXcodeLog` so that when it is explicitly set to false, don't print any Xcode logs, even error logs [#12466](https://github.com/appium/appium/issues/12466)
|
||||
|
||||
|
||||
CHANGES IN VERSION 1.12.1 (FROM 1.12.0)
|
||||
===================================
|
||||
|
||||
* Appium 1.12.1 is a patch release that addresses iOS Simulator 12.2 WebView issues
|
||||
* `platformVersion` becomes a required capability
|
||||
|
||||
#### iOS
|
||||
* `platformVersion` is necessary for real devices
|
||||
* Updated Appium Remote Debugger so that Safari webview tests are compatible with Xcode 10.2 (addresses [issue #12239](https://github.com/appium/appium/issues/12239)) [#118](https://github.com/appium/appium-remote-debugger/pull/118)
|
||||
* Fix `screenshotQuality` cap not being forwarded to WebDriverAgent [#907](https://github.com/appium/appium-xcuitest-driver/pull/907)
|
||||
* Fix xctestrun file detection when `useXctestrunFile` is true [#903](https://github.com/appium/appium-xcuitest-driver/pull/903)
|
||||
* Fix problem with Appium not using cached WebDriverAgent [#909](https://github.com/appium/appium-xcuitest-driver/pull/909)
|
||||
|
||||
|
||||
CHANGES IN VERSION 1.12.0 (FROM 1.11.1)
|
||||
===================================
|
||||
|
||||
Appium 1.12.0 is a minor release
|
||||
|
||||
#### General
|
||||
* Fix wrong coordination in _find element by_ . [#306](https://github.com/appium/appium-base-driver/pull/306), [#307](https://github.com/appium/appium-base-driver/pull/307)
|
||||
* Added `fixImageTemplateScale` to arrange image comparison logic. Read [doc](docs/en/advanced-concepts/image-elements.md) for more details
|
||||
|
||||
#### Android
|
||||
* Add `mobile:` endpoint for enabling/disabling/viewing app permissions [#305](https://github.com/appium/appium-uiautomator2-driver/pull/305)
|
||||
* Fix exception caused when Appium Settings fails to provide geolocation [#493](https://github.com/appium/appium-android-driver/pull/493)
|
||||
* Stop chromedriver proxies when reset command is called [#495](https://github.com/appium/appium-android-driver/pull/495)
|
||||
* Fix pin unlock errors. Turn screen off before doing pin unlock to ensure pin unlock screen has no existing entries. [#498](https://github.com/appium/appium-android-driver/pull/498)
|
||||
* Add `uninstallOtherPackages` capability [#289](https://github.com/appium/appium-uiautomator2-driver/pull/289)
|
||||
* Fix pattern unlock problems caused by not using relative touches [#489](https://github.com/appium/appium-android-driver/pull/489)
|
||||
* Add `chromedriverArgs` capability that passes chromedriver flags into sessions [#519](https://github.com/appium/appium-android-driver/pull/519/files)
|
||||
* Add `skipLogcatCapture` capability that skip capturing logcat, for possible performance enhancement.
|
||||
|
||||
#### Android (UiAutomator2 only)
|
||||
* Verify file system permissions before signing files to avoid confusing signing errors [#294](https://github.com/appium/appium-uiautomator2-driver/pull/294)
|
||||
|
||||
#### Android (Espresso only)
|
||||
* Add `dataMatcher` selector strategy [#386](https://github.com/appium/appium-espresso-driver/pull/386)
|
||||
* `mobile:` commands
|
||||
* Call UiAutomator commands from Espresso [#371](https://github.com/appium/appium-espresso-driver/pull/371)
|
||||
* `swipe` and `clickAction` delegates to Espresso's `GeneralSwipeAction` and `GeneralClickAction` [#372](https://github.com/appium/appium-espresso-driver/pull/372)
|
||||
* `webAtom` which delgates to Espresso's `Web Atoms` library [#380](https://github.com/appium/appium-espresso-driver/pull/380)
|
||||
* Fix orientation change event to not require element [#383](https://github.com/appium/appium-espresso-driver/pull/383)
|
||||
* Add `remoteAdbHost` capability to allow tests on remote machines [#381](https://github.com/appium/appium-espresso-driver/pull/381)
|
||||
|
||||
#### iOS
|
||||
* Add `eventLoopIdleDelaySec` capability. Delays the invocation of `-[XCUIApplicationProcess setEventLoopHasIdled:]` by the number of seconds specified with this capability. This can help quiescence apps that fail to do so for no obvious reason (and creating a session fails for that reason) [#881](https://github.com/appium/appium-xcuitest-driver/pull/881)
|
||||
* Add `-r` flag for video recording to make screen video recording more flexible [#867](https://github.com/appium/appium-xcuitest-driver/pull/867)`
|
||||
* Add `enforceFreshSimulatorCreation` capability [#859](https://github.com/appium/appium-xcuitest-driver/pull/859)
|
||||
* More helpful logging
|
||||
* Add `mjpegScalingFactor` settings that change image scale of mjpeg server to stream screen [#138](https://github.com/appium/WebDriverAgent/pull/138)
|
||||
* Returns a couple of lines of xcodebuild error message if WDA xcodebuild fails. It helps to understand the cause. [#888](https://github.com/appium/appium-xcuitest-driver/pull/888)
|
||||
|
||||
|
||||
|
||||
CHANGES IN VERSION 1.11.1 (from 1.11.0)
|
||||
===================================
|
||||
|
||||
Appium 1.11.1 is a patch release
|
||||
|
||||
#### General
|
||||
* Upgrade Appium You.I Engine Driver to 1.1.2
|
||||
* Fix protocol translation bug (W3C -> MJSONWP) in `/actions` [#302](https://github.com/appium/appium-base-driver/pull/302)
|
||||
* Fix protocol conversion for `setValue` [#297](https://github.com/appium/appium-base-driver/pull/297)
|
||||
|
||||
#### Android (UiAutomator2 only)
|
||||
* Fix null pointer exception on Session Details retrieval [#247](https://github.com/appium/appium-uiautomator2-server/pull/247)
|
||||
* Make logging configurable [#242](https://github.com/appium/appium-uiautomator2-server/pull/242)
|
||||
* Change implementation of the ScrollTo command, so that now it supports different strategies to search for a GUI element (by accessibility id, by class name, and by using the Android uiautomator selectors) [#244](https://github.com/appium/appium-uiautomator2-server/pull/244)
|
||||
|
||||
CHANGES IN VERSION 1.11.0 (from 1.10.0)
|
||||
===================================
|
||||
|
||||
Appium 1.11.0 is a minor release
|
||||
|
||||
#### iOS
|
||||
* Fix issues with MJPEG video streaming [#134](https://github.com/appium/WebDriverAgent/pull/134)
|
||||
* Xcode 10.2 device list support [appium/node-simctl#77](https://github.com/appium/node-simctl/pull/77)
|
||||
|
||||
#### Android
|
||||
* Add `chromedriverDisableBuildCheck` capability which sets the `--disable-build-check` flag on Chromedriver [#474](https://github.com/appium/appium-android-driver/pull/474)
|
||||
* Add `skipDeviceInitialization` capability which speeds up session startup for cases where Appium doesn't need to wait for the device, push a settings app, or set permissions [#480](https://github.com/appium/appium-android-driver/pull/480)
|
||||
* Fall back to pressing BACK button if ESC fails to close soft keyboard [#471](https://github.com/appium/appium-android-driver/pull/471)
|
||||
* Improve XML source building performance by using Jaxen/JDOM2 library on Espresso and UiAutomator2 [#237](https://github.com/appium/appium-uiautomator2-server/pull/237)
|
||||
* Add setting `normalizeTagNames` which is set to true by default, which normalizes source tag names to workaround parsing problems
|
||||
* Fix: Include API level 23 for granting of permissions to apps. 23 was being incorrectly excluded previously [#473](https://github.com/appium/appium-android-driver/pull/473)
|
||||
* Fix: Only call `helpers.ensureDeviceLocale` if language or locale was set, to avoid spending startup time on locale unnecessarily [#477](https://github.com/appium/appium-android-driver/pull/477)
|
||||
* Fix: Don't regard apps as 'temporary' if the `app` is a relative path [#479](https://github.com/appium/appium-android-driver/pull/479)
|
||||
* Fix session init. Uninstalls Espresso server if server is older or newer than currently installed Espresso server [#358](https://github.com/appium/appium-espresso-driver/pull/358)
|
||||
* Fix setting WiFi connection status [#30](https://github.com/appium/io.appium.settings/pull/30)
|
||||
|
||||
#### Android (UiAutomator2)
|
||||
* Add `skipServerInstallation` capability that skips the step of installing the UIAutomator2 server [#266](https://github.com/appium/appium-uiautomator2-driver/pull/266)
|
||||
* Fix duplicate chrome startup [#266](https://github.com/appium/appium-uiautomator2-driver/pull/266)
|
||||
* Only perform uiautomation process cleanup if instrumentation crashes [#280](https://github.com/appium/appium-uiautomator2-driver/pull/280)
|
||||
|
||||
#### Android (Espresso)
|
||||
* Add `mobile:` endpoints to run [Espresso contrib methods](http://appium.io/docs/en/commands/mobile-command/): `openDrawer`, `closeDrawer`, `setDate`, `setTime`, `navigateTo`, `scrollToPage` [#324](https://github.com/appium/appium-espresso-driver/pull/324) (warning: See [open issue](https://github.com/appium/appium-espresso-driver/issues/331) from problem with `scrollToPage`)
|
||||
* Add `mobile: backdoor` method that allows accessing app-internal functionality [#317](https://github.com/appium/appium-espresso-driver/pull/317)
|
||||
* Add `mobile: flashElement` method [#337](https://github.com/appium/appium-espresso-driver/pull/337)
|
||||
* Backport [clipboard features](http://appium.io/docs/en/commands/device/clipboard/get-clipboard/) from UiAutomator2 [#361](https://github.com/appium/appium-espresso-driver/pull/361)
|
||||
* Fix XML memory problems
|
||||
* Limit traversal depth [#341](https://github.com/appium/appium-espresso-driver/pull/341)
|
||||
* Fallback to using filesystem if in-memory can't handle XML [#344](https://github.com/appium/appium-espresso-driver/pull/344)
|
||||
* Limit max length of text values in the XML to 64K
|
||||
* Fix ID selector by automatically prefixing with current package name [#346](https://github.com/appium/appium-espresso-driver/pull/346)
|
||||
* Fix crash on calling `/enabled` and `/selected` on elements [#353](https://github.com/appium/appium-espresso-driver/pull/353)
|
||||
* Add `nativeWebScreenshot` capability to allow screen capture of webviews [#366](https://github.com/appium/appium-espresso-driver/pull/366)
|
||||
* Fix element screenshot endpoint to support MJSONWP and not just W3C [#370](https://github.com/appium/appium-espresso-driver/pull/370)
|
||||
|
||||
|
||||
CHANGES IN VERSION 1.10.0 (from 1.9.1)
|
||||
===================================
|
||||
|
||||
Appium 1.10.0 is a minor release.
|
||||
|
||||
#### General
|
||||
* Bring Espresso Driver out of beta and into general availability
|
||||
* Support Xcode 10, discontinue support for Xcode 8
|
||||
* Bump up minimum Node version to 8 and minimum NPM version to 6
|
||||
* Improve string extractions for Android and iOS
|
||||
* Fix synchronization of applications caching [#274](https://github.com/appium/appium-base-driver/pull/274)
|
||||
* Disable CORS on `createServer` by default.Add `--allow-cors` flag to server flags [#11719](https://github.com/appium/appium/pull/11719)
|
||||
|
||||
#### iOS
|
||||
* Add [mobile:](http://appium.io/docs/en/commands/mobile-command/#ios-xcuitest-only) methods:
|
||||
* Add biometrics (touchId, faceId) methods that can enroll/unenroll biometric features and send matching/non-matching biometric inputs (iOS Simulator only) [#816](https://github.com/appium/appium-xcuitest-driver/pull/816)
|
||||
* Add method to clear keychains for an iOS Simulator [#816](https://github.com/appium/appium-xcuitest-driver/pull/816)
|
||||
* Add [permissions capability](https://github.com/appium/appium-xcuitest-driver#desired-capabilities) that sets service permissions (calendar, siri, etc...) prior to creating a session [#818](https://github.com/appium/appium-xcuitest-driver/pull/818)
|
||||
* Add possibility to upload files into different container types on Simulator [#770](https://github.com/appium/appium-xcuitest-driver/pull/770)
|
||||
* Add [reduceMotion](https://github.com/appium/appium-xcuitest-driver/blob/master/README.md#L161) capability [#760](https://github.com/appium/appium-xcuitest-driver/pull/760)
|
||||
* Improve video recording
|
||||
* Improved iOS simulator booting procedure
|
||||
* Add mobile endpoint for running Siri commands [#837](https://github.com/appium/appium-xcuitest-driver/pull/837)
|
||||
|
||||
#### Android
|
||||
* Add [mobile:](http://appium.io/docs/en/commands/mobile-command) command for performing editor actions [#428](https://github.com/appium/appium-android-driver/pull/428)
|
||||
* Can record videos up to 30 minutes (requires [FFMPEG](https://www.ffmpeg.org/) to be installed) [#399](https://github.com/appium/appium-android-driver/pull/399)
|
||||
* Add `localeScript` capability to set script in `locale` (https://developer.android.com/reference/java/util/Locale) [#460](https://github.com/appium/appium-android-driver/pull/460)
|
||||
* Allow `locale` and `language` for real devices under API level 23 [#379](https://github.com/appium/appium-adb/pull/379)
|
||||
* Improved video recording
|
||||
* Fix [bug](https://github.com/appium/appium/issues/11619) calling `getRect` in MJSONWP sessions [#240](https://github.com/appium/appium-uiautomator2-driver/pull/240)
|
||||
* Fix pin entry error on Samsung devices that wasn't correctly locating the "Enter" button [#458](https://github.com/appium/appium-android-driver/pull/458)
|
||||
* Relax [hidden API policy](https://developer.android.com/about/versions/pie/restrictions-non-sdk-interfaces) for Android P and above
|
||||
* Support running tests using Android App Bundle [#11601](https://github.com/appium/appium/pull/11601)
|
||||
|
||||
#### Android (UiAutomator2)
|
||||
* Add [mobile:](http://appium.io/docs/en/commands/mobile-command) command for retrieving device information [#221](https://github.com/appium/appium-uiautomator2-driver/pull/211)
|
||||
* Support `.apks` bundles [#233](https://github.com/appium/appium-uiautomator2-driver/pull/233)
|
||||
* Fix bug with timeouts calls for W3C sessions [#239](https://github.com/appium/appium-uiautomator2-driver/pull/239)
|
||||
* Refactored XML source generation and xpath search in order to fix known bugs and to improve the general performance of these operations [#208](https://github.com/appium/appium-uiautomator2-server/pull/208)
|
||||
* Refactored and fixed issues with W3C Actions [#205](https://github.com/appium/appium-uiautomator2-server/pull/205)
|
||||
|
||||
CHANGES IN VERSION 1.9.1 (from 1.9.0)
|
||||
===================================
|
||||
|
||||
|
||||
@@ -5,10 +5,7 @@
|
||||
[](https://david-dm.org/appium/appium#info=devDependencies)
|
||||
|
||||
[](https://npmjs.org/package/appium)
|
||||
[](http://issuestats.com/github/appium/appium)
|
||||
[](http://issuestats.com/github/appium/appium)
|
||||
|
||||
[](https://team-appium.ci.cloudbees.com/job/Appium/)
|
||||
[](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fappium%2Fappium?ref=badge_shield)
|
||||
[](https://greenkeeper.io/)
|
||||
|
||||
@@ -63,7 +60,7 @@ Similarly, with Google's UiAutomator or Espresso you can only write tests in
|
||||
Java. Appium opens up the possibility of true cross-platform native app
|
||||
automation, for mobile and beyond. Finally!
|
||||
|
||||
If you're new to Appium, or want a fuller description of what this is all
|
||||
If you're new to Appium, or want a more comprehensive description of what this is all
|
||||
about, please read our [Introduction to Appium
|
||||
Concepts](/docs/en/about-appium/intro.md).
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
* brew install --HEAD ideviceinstaller
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
'use strict';
|
||||
|
||||
const spawn = require('child_process').spawn;
|
||||
const _ = require('lodash');
|
||||
@@ -39,29 +39,29 @@ const handleKillProcess = function (exitCode) {
|
||||
};
|
||||
|
||||
const startProxy = function () {
|
||||
console.log('RUNNING:', PROXY_CMD, args.join(' '));
|
||||
console.log(`RUNNING: ${PROXY_CMD} ${args.join(' ')}`);
|
||||
|
||||
proxy = spawn(PROXY_CMD, args);
|
||||
|
||||
proxy.stdout.on('data', function (data) {
|
||||
console.log('stdout: ' + data);
|
||||
proxy.stdout.on('data', function onStdout (data) {
|
||||
console.log(`stdout: ${data}`);
|
||||
});
|
||||
|
||||
proxy.stderr.on('data', function (data) {
|
||||
console.log('stderr: ' + data);
|
||||
const restartMessage = _(RESTART_ON_MESSAGES).find(function (message) {
|
||||
proxy.stderr.on('data', function onStderr (data) {
|
||||
console.log(`stderr: ${data}`);
|
||||
const restartMessage = _(RESTART_ON_MESSAGES).find(function findMessage (message) {
|
||||
return ('' + data).indexOf(message) >= 0;
|
||||
});
|
||||
if (restartMessage) {
|
||||
console.log('Detected error message:', restartMessage);
|
||||
console.log(`Detected error message: ${restartMessage}`);
|
||||
console.log('Killing proxy!');
|
||||
proxy.kill('SIGTERM');
|
||||
process.nextTick(startProxy);
|
||||
}
|
||||
});
|
||||
|
||||
proxy.on('close', function (code) {
|
||||
console.log('child process exited with code ' + code);
|
||||
proxy.on('close', function onClose (code) {
|
||||
console.log(`Child process exited with code ${code}`);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
const childProcess = require('child_process');
|
||||
const _ = require('lodash');
|
||||
|
||||
const res = JSON.parse(childProcess.execSync('npm pack --dry-run --json --ignore-scripts', {encoding: 'utf8'}))[0];
|
||||
|
||||
// List of files we are testing to make sure they are included in package
|
||||
const testFiles = [
|
||||
'npm-shrinkwrap.json', // Check that npm-shrinkwrap.json is being packed
|
||||
'LICENSE', // Check that license is included
|
||||
'build/lib/appium.js', // Sanity check that build files are being included by testing just one file
|
||||
];
|
||||
|
||||
// Get list of files in `testFiles` that aren't in the list of packaged fileNames
|
||||
const missingFiles = _.without(testFiles, ..._.map(res.files, 'path'));
|
||||
|
||||
if (!_.isEmpty(missingFiles)) {
|
||||
throw new Error(`Files [${missingFiles.join(', ')}] are not included in package.json "files". ` +
|
||||
`Please make sure these files are included before publishing.`);
|
||||
}
|
||||
|
||||
process.exit(0);
|
||||
@@ -0,0 +1,2 @@
|
||||
jobs:
|
||||
- template: templates/bundle-template.yml
|
||||
@@ -0,0 +1,39 @@
|
||||
# parameters: # No params yet, but may add later
|
||||
jobs:
|
||||
- job: bundle_and_upload_appium_zip
|
||||
pool:
|
||||
vmImage: 'macOS 10.13'
|
||||
variables:
|
||||
CC: gcc
|
||||
CXX: g++
|
||||
steps:
|
||||
- script: gcc --version
|
||||
displayName: Print GCC Version
|
||||
- task: NodeTool@0
|
||||
inputs:
|
||||
versionSpec: '11.x'
|
||||
- script: npm ci || npm install # "npm ci" if shrinkwrap is present
|
||||
displayName: Install NPM Dependencies
|
||||
- script: |
|
||||
pushd node_modules/appium-xcuitest-driver/WebDriverAgent
|
||||
carthage bootstrap --no-use-binaries
|
||||
cp Cartfile.resolved Carthage
|
||||
mkdir -p ./Resources/WebDriverAgent.bundle
|
||||
popd
|
||||
displayName: Fully build XCUITestDriver
|
||||
- script: npm run build
|
||||
displayName: npm run build
|
||||
- script: npm prune --production
|
||||
displayName: Get rid of dev dependencies
|
||||
- script: npm run zip
|
||||
displayName: Create the bundle zip
|
||||
- script: npm install
|
||||
displayName: Reinstall dev dependencies
|
||||
- script: npm run upload
|
||||
env:
|
||||
GITHUB_TOKEN: $(GITHUB_TOKEN)
|
||||
displayName: Upload to appium/appium-build-store Github Releases
|
||||
- script: npx gulp sauce-storage-upload
|
||||
displayName: Upload to Sauce Storage as sauce-storage:appium.zip
|
||||
env:
|
||||
GITHUB_TOKEN: $(GITHUB_TOKEN)
|
||||
@@ -4,16 +4,19 @@
|
||||
|
||||
{{#if path}}
|
||||
### {{path}}
|
||||
[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file.)
|
||||
{{/if}}
|
||||
|
||||
[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file.)
|
||||
<div class="api-index">
|
||||
{{#*inline "commands"}}
|
||||
{{#each commands}}
|
||||
<li>{{#if commands}}<a href='{{path}}'>{{name}}</a><ul>{{>commands}}</ul>{{else}}<a href='{{path}}'>{{name}}</a>{{/if}}</li>
|
||||
{{/each}}
|
||||
{{/inline}}
|
||||
|
||||
[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file.)
|
||||
<ul>
|
||||
{{>commands}}
|
||||
</ul>
|
||||
</div>
|
||||
[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file.)
|
||||
|
||||
@@ -26,7 +26,7 @@ example_usage:
|
||||
let context = await driver.currentContext();
|
||||
javascript_wdio:
|
||||
|
|
||||
let context = driver.context();
|
||||
let context = driver.getContext();
|
||||
ruby:
|
||||
|
|
||||
context = current_context
|
||||
@@ -37,7 +37,7 @@ example_usage:
|
||||
$context = $driver->context();
|
||||
csharp:
|
||||
|
|
||||
// TODO C# sample
|
||||
string Context = driver.Context;
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/AppiumDriver.html#getContext--"
|
||||
|
||||
@@ -27,7 +27,7 @@ example_usage:
|
||||
let contexts = await driver.contexts();
|
||||
javascript_wdio:
|
||||
|
|
||||
let contexts = driver.contexts();
|
||||
let contexts = driver.getContexts();
|
||||
ruby:
|
||||
|
|
||||
context = available_contexts
|
||||
@@ -39,7 +39,11 @@ example_usage:
|
||||
$contexts = $driver->contexts();
|
||||
csharp:
|
||||
|
|
||||
// TODO C# sample
|
||||
List<string> AllContexts = new List<string>();
|
||||
foreach (var context in (driver.Contexts))
|
||||
{
|
||||
AllContexts.Add(context);
|
||||
}
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/AppiumDriver.html#getContextHandles--"
|
||||
|
||||
@@ -34,10 +34,10 @@ example_usage:
|
||||
await driver.context('NATIVE_APP');
|
||||
javascript_wdio:
|
||||
|
|
||||
let contexts = driver.contexts();
|
||||
driver.context(contexts[1]);
|
||||
let contexts = driver.getContexts();
|
||||
driver.setContext(contexts[1]);
|
||||
// ...
|
||||
driver.context('NATIVE_APP');
|
||||
driver.setContext('NATIVE_APP');
|
||||
ruby:
|
||||
|
|
||||
webview = available_contexts[1]
|
||||
@@ -58,7 +58,15 @@ example_usage:
|
||||
$driver->context('NATIVE_APP');
|
||||
csharp:
|
||||
|
|
||||
// TODO C# sample
|
||||
// Switch to specific webview
|
||||
List<string> AllContexts = new List<string>();
|
||||
foreach (var context in (driver.Contexts))
|
||||
{
|
||||
AllContexts.Add(context);
|
||||
}
|
||||
driver.Context = (AllContexts[1]);
|
||||
// Switch to NATIVE_APP
|
||||
driver.Context = ("NATIVE_APP");
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/AppiumDriver.html#context-java.lang.String-"
|
||||
|
||||
@@ -14,7 +14,7 @@ example_usage:
|
||||
let activity = await driver.getCurrentActivity();
|
||||
javascript_wdio:
|
||||
|
|
||||
let activity = driver.currentActivity();
|
||||
let activity = driver.getCurrentActivity();
|
||||
ruby:
|
||||
|
|
||||
current_activity
|
||||
@@ -30,7 +30,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/StartsActivity.html#currentActivity--"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L447"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#retrieving-the-current-running-package-and-activity"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/currentActivity.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2519"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#current_activity-instance_method"
|
||||
|
||||
@@ -27,7 +27,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/StartsActivity.html#getCurrentPackage--"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L453"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#retrieving-the-current-running-package-and-activity"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2526"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#current_package-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#current_package-instance_method"
|
||||
|
||||
@@ -34,7 +34,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/AndroidMobileCommandHelper.html#startActivityCommand-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L591"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#start-an-arbitrary-activity"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/startActivity.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2948"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#start_activity-instance_method"
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
---
|
||||
name: Activate App
|
||||
short_description: Activate the given app onto the device
|
||||
description:
|
||||
>
|
||||
iOS tests with XCUITest can also use the `mobile: activateApp` method. See
|
||||
detailed [documentation](http://appium.io/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management/index.html#mobile-activateapp).
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.activateApp('com.apple.Preferences');
|
||||
driver.activateApp('io.appium.android.apis');
|
||||
python:
|
||||
|
|
||||
driver.activate_app('com.apple.Preferences')
|
||||
driver.activate_app('io.appium.android.apis')
|
||||
javascript_wd:
|
||||
|
|
||||
// Supports only `mobile: queryAppState` for iOS, XCUITest
|
||||
javascript_wdio:
|
||||
|
|
||||
// Supports only `mobile: queryAppState` for iOS, XCUITest
|
||||
ruby:
|
||||
|
|
||||
activate_app('com.apple.Preferences')
|
||||
activate_app('io.appium.android.apis')
|
||||
ruby_core:
|
||||
|
|
||||
@driver.activate_app('com.apple.Preferences')
|
||||
@driver.activate_app('io.appium.android.apis')
|
||||
php:
|
||||
|
|
||||
// Supports only `mobile: queryAppState` for iOS, XCUITest
|
||||
csharp:
|
||||
|
|
||||
// Supports only `mobile: queryAppState` for iOS, XCUITest
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithApps.html#activateApp-java.lang.String-"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/extensions/applications.py"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html" # TODO wdio documentation link
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js" # TODO wd documentation link
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#activate_app-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#activate_app-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO Dotnet documentation link
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: false
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false # TODO: Verify this
|
||||
windows:
|
||||
windows: false # TODO: Verify this
|
||||
client_support:
|
||||
java: true
|
||||
python: true
|
||||
ruby: true
|
||||
php: true
|
||||
csharp: true
|
||||
javascript_wd: true
|
||||
javascript_wdio: true
|
||||
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /wd/hub/session/:session_id/appium/device/activate_app
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: bundleId or appId
|
||||
type: string
|
||||
description: BundleId for iOS. Package name for Android.
|
||||
|
||||
# Links to specifications. Should link to at least one specification
|
||||
specifications:
|
||||
jsonwp: https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L427
|
||||
@@ -0,0 +1,94 @@
|
||||
---
|
||||
name: Get app state
|
||||
short_description: Get the given app status on the device
|
||||
description:
|
||||
>
|
||||
iOS tests with XCUITest can also use the `mobile: queryAppState` method. See
|
||||
detailed [documentation](http://appium.io/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management/index.html#mobile-queryappstate).
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.queryAppState('com.apple.Preferences');
|
||||
driver.queryAppState('io.appium.android.apis');
|
||||
python:
|
||||
|
|
||||
driver.query_app_state('com.apple.Preferences')
|
||||
driver.query_app_state('io.appium.android.apis')
|
||||
javascript_wd:
|
||||
|
|
||||
// Supports only `mobile: queryAppState` for iOS, XCUITest
|
||||
javascript_wdio:
|
||||
|
|
||||
// Supports only `mobile: queryAppState` for iOS, XCUITest
|
||||
ruby:
|
||||
|
|
||||
app_state('com.apple.Preferences')
|
||||
query_app_state('io.appium.android.apis') # `query_` prefix is also available
|
||||
ruby_core:
|
||||
|
|
||||
@driver.app_state('com.apple.Preferences')
|
||||
@driver.query_app_state('io.appium.android.apis') # `query_` prefix is also available
|
||||
php:
|
||||
|
|
||||
// Supports only `mobile: queryAppState` for iOS, XCUITest
|
||||
csharp:
|
||||
|
|
||||
// Supports only `mobile: queryAppState` for iOS, XCUITest
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithApps.html#queryAppState-java.lang.String-"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/extensions/applications.py"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html" # TODO wdio documentation link
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js" # TODO wd documentation link
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Base/Driver#app_state-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Base/Driver#app_state-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO Dotnet documentation link
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: false
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false # TODO: Verify this
|
||||
windows:
|
||||
windows: false # TODO: Verify this
|
||||
client_support:
|
||||
java: true
|
||||
python: true
|
||||
ruby: true
|
||||
php: true
|
||||
csharp: true
|
||||
javascript_wd: true
|
||||
javascript_wdio: true
|
||||
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /wd/hub/session/:session_id/appium/device/app_state
|
||||
method: GET
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: bundleId or appId
|
||||
type: string
|
||||
description: BundleId for iOS. Package name for Android.
|
||||
response:
|
||||
- type: number
|
||||
description: Current the target app status. (Clients wrap the response properly)
|
||||
`0` is not installed.
|
||||
`1` is not running.
|
||||
`2` is running in background or suspended.
|
||||
`3` is running in background.
|
||||
`4` is running in foreground.
|
||||
|
||||
# Links to specifications. Should link to at least one specification
|
||||
specifications:
|
||||
jsonwp: https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L462
|
||||
@@ -51,7 +51,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithApps.html#runAppInBackground-java.time.Duration-"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L529"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#backgrounding-an-application"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/background.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2841"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#background_app-instance_method"
|
||||
|
||||
@@ -13,7 +13,7 @@ example_usage:
|
||||
await driver.closeApp();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.close_app();
|
||||
driver.closeApp();
|
||||
ruby:
|
||||
|
|
||||
close_app
|
||||
@@ -29,7 +29,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithApps.html#closeApp--"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L584"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#closing-and-launching-an-application"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/closeApp.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2798"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#close_app-instance_method"
|
||||
|
||||
@@ -26,7 +26,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/AndroidDriver.html#endTestCoverage-java.lang.String-java.lang.String-"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L627"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#end-test-coverage"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2858"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#end_coverage-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#end_coverage-instance_method"
|
||||
|
||||
@@ -13,7 +13,7 @@ example_usage:
|
||||
let appStrings = await driver.getAppStrings();
|
||||
javascript_wdio:
|
||||
|
|
||||
let appStrings = driver.getAppStrings("en");
|
||||
let appStrings = driver.getStrings("en");
|
||||
ruby:
|
||||
|
|
||||
app_strings("en")
|
||||
@@ -29,7 +29,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/HasAppStrings.html#getAppStringMap--"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L357"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#retrieving-application-strings"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/getAppStrings.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2916"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#app_strings-instance_method"
|
||||
|
||||
@@ -34,7 +34,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithApps.html#installApp-java.lang.String-"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L554"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#installing-an-application"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/installApp.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2540"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#install_app-instance_method"
|
||||
|
||||
@@ -34,7 +34,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithApps.html#isAppInstalled-java.lang.String-"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L542"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#checking-if-an-application-is-installed"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/isAppInstalled.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2586"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#app_installed%3F-instance_method"
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
---
|
||||
name: Launch an App
|
||||
short_description: Launch an app on device
|
||||
name: Launch App
|
||||
short_description: Launch the app-under-test on the device
|
||||
description:
|
||||
>
|
||||
If the app-under-test (AUT) is closed, or backgrounded, it will launch it.
|
||||
If the AUT is already open, it will background it and re-launch it.
|
||||
|
||||
iOS tests with XCUITest can also use the `mobile: launchApp` method. See
|
||||
detailed [documentation](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-launchapp).
|
||||
|
||||
@@ -18,7 +21,7 @@ example_usage:
|
||||
await driver.launchApp();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.launch();
|
||||
driver.launchApp();
|
||||
ruby:
|
||||
|
|
||||
launch_app
|
||||
@@ -34,7 +37,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithApps.html#launchApp--"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L578"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#closing-and-launching-an-application"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/launch.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2798"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#launch_app-instance_method"
|
||||
|
||||
@@ -35,7 +35,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithApps.html#removeApp-java.lang.String-"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L566"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#removing-an-application"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/removeApp.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2563"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#remove_app-instance_method"
|
||||
|
||||
@@ -29,7 +29,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithApps.html#resetApp--"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L372"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#resetting-an-application"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/reset.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2827"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#reset-instance_method"
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
---
|
||||
name: Terminate App
|
||||
short_description: Terminate the given app on the device
|
||||
description:
|
||||
>
|
||||
iOS tests with XCUITest can also use the `mobile: terminateApp` method. See
|
||||
detailed [documentation](http://appium.io/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management/index.html#mobile-terminateapp).
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.terminateApp('com.apple.Preferences');
|
||||
driver.terminateApp('io.appium.android.apis');
|
||||
python:
|
||||
|
|
||||
driver.terminate_app('com.apple.Preferences')
|
||||
driver.terminate_app('io.appium.android.apis')
|
||||
javascript_wd:
|
||||
|
|
||||
// Supports only `mobile: queryAppState` for iOS, XCUITest
|
||||
javascript_wdio:
|
||||
|
|
||||
// Supports only `mobile: queryAppState` for iOS, XCUITest
|
||||
ruby:
|
||||
|
|
||||
terminate_app('com.apple.Preferences')
|
||||
terminate_app('io.appium.android.apis')
|
||||
ruby_core:
|
||||
|
|
||||
@driver.terminate_app('com.apple.Preferences')
|
||||
@driver.terminate_app('io.appium.android.apis')
|
||||
php:
|
||||
|
|
||||
// Supports only `mobile: queryAppState` for iOS, XCUITest
|
||||
csharp:
|
||||
|
|
||||
// Supports only `mobile: queryAppState` for iOS, XCUITest
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithApps.html#terminateApp-java.lang.String-"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/extensions/applications.py"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html" # TODO wdio documentation link
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js" # TODO wd documentation link
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Base/Driver#terminate_app-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Base/Driver#terminate_app-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO Dotnet documentation link
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: false
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false # TODO: Verify this
|
||||
windows:
|
||||
windows: false # TODO: Verify this
|
||||
client_support:
|
||||
java: true
|
||||
python: true
|
||||
ruby: true
|
||||
php: true
|
||||
csharp: true
|
||||
javascript_wd: true
|
||||
javascript_wdio: true
|
||||
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /wd/hub/session/:session_id/appium/device/terminate_app
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: bundleId or appId
|
||||
type: string
|
||||
description: BundleId for iOS. Package name for Android.
|
||||
- name: timeout
|
||||
type: number
|
||||
description: (Only Android) Timeout to retry terminate the app.
|
||||
|
||||
# Links to specifications. Should link to at least one specification
|
||||
specifications:
|
||||
jsonwp: https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L445
|
||||
@@ -21,7 +21,7 @@ example_usage:
|
||||
await driver.fingerprint(1);
|
||||
javascript_wdio:
|
||||
|
|
||||
await driver.fingerprint(1);
|
||||
await driver.fingerPrint(1);
|
||||
ruby:
|
||||
|
|
||||
finger_print 1
|
||||
@@ -37,7 +37,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebElement.html#click--"
|
||||
python: "https://github.com/appium/python-client/blob/07180f7547ffcd13c212de21d027ea0355f9ab96/appium/webdriver/webdriver.py#L1390"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wdio: "https://github.com/appium/appium-android-driver/blob/d16c7161d92ab6f6c9cec3f22218219ac3659716/lib/commands/actions.js#L260"
|
||||
javascript_wd: "https://github.com/appium/appium-android-driver/blob/d16c7161d92ab6f6c9cec3f22218219ac3659716/lib/commands/actions.js#L260"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device#finger_print-instance_method"
|
||||
|
||||
@@ -17,9 +17,6 @@ example_usage:
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.getClipboard();
|
||||
javascript_wdio:
|
||||
|
|
||||
await driver.getClipboard();
|
||||
ruby:
|
||||
|
|
||||
get_clipboard
|
||||
@@ -44,7 +41,7 @@ client_docs:
|
||||
ruby_core:
|
||||
- android: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#get_clipboard-instance_method"
|
||||
- ios: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Ios/Device#get_clipboard-instance_method"
|
||||
php: "https://github.com/appium/php-client/releases/latest-"
|
||||
php: "https://github.com/appium/php-client/releases/latest"
|
||||
csharp: "https://github.com/appium/appium" # TODO
|
||||
|
||||
# Driver support by platform
|
||||
|
||||
@@ -18,9 +18,6 @@ example_usage:
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.setClipboard('happy testing', 'plaintext')
|
||||
javascript_wdio:
|
||||
|
|
||||
await driver.setClipboard('happy testing', 'plaintext')
|
||||
ruby:
|
||||
|
|
||||
set_clipboard content: 'happy testing'
|
||||
@@ -45,7 +42,7 @@ client_docs:
|
||||
ruby_core:
|
||||
- ios: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Ios/Device#set_clipboard-instance_method"
|
||||
- android: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#set_clipboard-instance_method"
|
||||
php: "https://github.com/appium/php-client/releases/latest-"
|
||||
php: "https://github.com/appium/php-client/releases/latest"
|
||||
csharp: "https://github.com/appium/appium" # TODO
|
||||
|
||||
# Driver support by platform
|
||||
|
||||
@@ -11,6 +11,9 @@ example_usage:
|
||||
java:
|
||||
|
|
||||
driver.setPowerAC(PowerACState.OFF);
|
||||
python:
|
||||
|
|
||||
self.driver.set_power_ac(Power.AC_OFF)
|
||||
ruby:
|
||||
|
|
||||
set_power_ac :on
|
||||
@@ -20,6 +23,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/" # TODO: Link
|
||||
python: "https://github.com/appium/python-client"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device/Emulator#set_power_ac-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device/Emulator#set_power_ac-instance_method"
|
||||
|
||||
@@ -38,7 +42,7 @@ driver_support:
|
||||
windows: false
|
||||
client_support:
|
||||
java: true
|
||||
python: false
|
||||
python: true
|
||||
ruby: true
|
||||
php: false
|
||||
csharp: false
|
||||
|
||||
@@ -11,6 +11,9 @@ example_usage:
|
||||
java:
|
||||
|
|
||||
driver.setPowerCapacity(100);
|
||||
python:
|
||||
|
|
||||
self.driver.set_power_capacity(50)
|
||||
ruby:
|
||||
|
|
||||
set_power_capacity 50
|
||||
@@ -20,6 +23,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/" # TODO: Link
|
||||
python: "https://github.com/appium/python-client"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device/Emulator#set_power_capacity-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device/Emulator#set_power_capacity-instance_method"
|
||||
|
||||
@@ -38,7 +42,7 @@ driver_support:
|
||||
windows: false
|
||||
client_support:
|
||||
java: true
|
||||
python: false
|
||||
python: true
|
||||
ruby: true
|
||||
php: false
|
||||
csharp: false
|
||||
|
||||
@@ -30,7 +30,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithFiles.html#pullFile-java.lang.String-"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L491"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#retrieve-a-file-from-the-device"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/pullFile.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2665"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#pull_file-instance_method"
|
||||
|
||||
@@ -30,7 +30,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithFiles.html#pullFolder-java.lang.String-"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L503"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/pullFolder.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2688"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#pull_folder-instance_method"
|
||||
|
||||
@@ -31,7 +31,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/PushesFiles.html#pushFile-java.lang.String-java.io.File-"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L515"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#place-a-file-on-the-device"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/pushFile.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2640"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#push_file-instance_method"
|
||||
|
||||
@@ -6,6 +6,9 @@ example_usage:
|
||||
java:
|
||||
|
|
||||
boolean isLocked = driver.isDeviceLocked();
|
||||
python:
|
||||
|
|
||||
self.driver.is_locked()
|
||||
javascript_wd:
|
||||
|
|
||||
let isLocked = await driver.isLocked();
|
||||
@@ -28,6 +31,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "http://appium.github.io/java-client/io/appium/java_client/LocksDevice.html#isDeviceLocked--"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/isLocked.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2407"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#device_locked%3F-instance_method"
|
||||
|
||||
@@ -34,7 +34,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "http://appium.github.io/java-client/io/appium/java_client/LocksDevice.html#lockDevice--"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L643"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#lock-the-device"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/lock.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2363"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#lock-instance_method"
|
||||
|
||||
@@ -11,7 +11,7 @@ example_usage:
|
||||
driver.rotateDevice({x: 114, y: 198, duration: 5, radius: 3, rotation: 220, touchCount: 2});
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.rotate(100, 100);
|
||||
driver.rotateDevice(100, 100);
|
||||
php:
|
||||
|
|
||||
// TODO PHP sample
|
||||
|
||||
@@ -31,7 +31,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/ios/ShakesDevice.html#shake--"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L655"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#shake-the-device"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/shake.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2342"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#shake-instance_method"
|
||||
|
||||
@@ -34,6 +34,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "http://appium.github.io/java-client/io/appium/java_client/LocksDevice.html#unlockDevice--"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/unlock.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2386"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#unlock-instance_method"
|
||||
|
||||
@@ -14,7 +14,7 @@ example_usage:
|
||||
await driver.hideDeviceKeyboard();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.hideDeviceKeyboard();
|
||||
driver.hideKeyboard();
|
||||
ruby:
|
||||
|
|
||||
hide_keyboard
|
||||
@@ -33,9 +33,9 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/HidesKeyboard.html#hideKeyboard--"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L378"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#hiding-the-keyboard-in-ios"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/hideDeviceKeyboard.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2609"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2723"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#hide_keyboard-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#hide_keyboard-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
|
||||
@@ -6,6 +6,9 @@ example_usage:
|
||||
java:
|
||||
|
|
||||
boolean isKeyboardShown = driver.isKeyboardShown();
|
||||
python:
|
||||
|
|
||||
driver.is_keyboard_shown()
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.isKeyboardShown();
|
||||
@@ -18,6 +21,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/HasOnScreenKeyboard.html#isKeyboardShown--"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2638"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#is_keyboard_shown-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#is_keyboard_shown-instance_method"
|
||||
@@ -37,7 +41,7 @@ driver_support:
|
||||
windows: true
|
||||
client_support:
|
||||
java: true
|
||||
python: false
|
||||
python: true
|
||||
ruby: true
|
||||
php: false
|
||||
csharp: false
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
---
|
||||
name: Long Press Key Code
|
||||
short_description: Press and hold a particular key code on the device
|
||||
short_description: Press and hold a particular key code on an Android device
|
||||
|
||||
description: See https://developer.android.com/reference/android/view/KeyEvent.html# for reference of available Android key codes
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
@@ -30,7 +32,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/windows/PressesKeyCode.html#longPressKeyCode-int-"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L431"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#long_press"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/longPressKeycode.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2478"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#long_press_keycode-instance_method"
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
---
|
||||
name: Press Key Code
|
||||
short_description: Press a particular key on the device
|
||||
short_description: Press a particular key on an Android Device
|
||||
|
||||
description: See https://developer.android.com/reference/android/view/KeyEvent.html for reference of available Android key code values
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
@@ -14,7 +16,7 @@ example_usage:
|
||||
driver.pressKeycode(10);
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.pressKeycode(10);
|
||||
await driver.pressKeyCode(10);
|
||||
ruby:
|
||||
|
|
||||
press_keycode(10)
|
||||
@@ -30,7 +32,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/windows/PressesKeyCode.html#pressKeyCode-int-"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L415"
|
||||
python: "https://github.com/appium/python-client/blob/master/README.md#sending-a-key-event-to-an-android-device"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/longPressKeycode.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2457"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#press_keycode-instance_method"
|
||||
|
||||
@@ -6,9 +6,15 @@ example_usage:
|
||||
java:
|
||||
|
|
||||
driver.makeGsmCall("5551234567", GsmCallActions.CALL);
|
||||
python:
|
||||
|
|
||||
self.driver.make_gsm_call('5551234567', GsmCallActions.CALL)
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.gsmCall('555-123-4567', 'Phone');
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.gsmCall('555-123-4567', 'call');
|
||||
ruby:
|
||||
|
|
||||
gsm_call(phone_number: '5551234567', action: :call)
|
||||
@@ -24,6 +30,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/SupportsSpecialEmulatorCommands.html#makeGsmCall-java.lang.String-io.appium.java_client.android.GsmCallActions-"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3183"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device/Emulator#gsm_call-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device/Emulator#gsm_call-instance_method"
|
||||
@@ -36,8 +43,8 @@ driver_support:
|
||||
xcuitest: false
|
||||
uiautomation: false
|
||||
android:
|
||||
uiautomator2: false
|
||||
espresso: false
|
||||
uiautomator2: true
|
||||
espresso: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false
|
||||
@@ -45,7 +52,7 @@ driver_support:
|
||||
windows: false
|
||||
client_support:
|
||||
java: true
|
||||
python: false
|
||||
python: true
|
||||
ruby: true
|
||||
php: false
|
||||
csharp: false
|
||||
|
||||
@@ -6,9 +6,15 @@ example_usage:
|
||||
java:
|
||||
|
|
||||
driver.setGsmSignalStrength(GsmSignalStrength.GOOD);
|
||||
python:
|
||||
|
|
||||
self.driver.set_gsm_signal(GsmSignalStrength.GOOD)
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.gsmSignal(3);
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.gsmSignal(3);
|
||||
ruby:
|
||||
|
|
||||
gsm_signal :good
|
||||
@@ -24,6 +30,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/SupportsSpecialEmulatorCommands.html#setGsmSignalStrength-io.appium.java_client.android.GsmSignalStrength-"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3221"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device/Emulator#gsm_signal-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device/Emulator#gsm_signal-instance_method"
|
||||
@@ -36,8 +43,8 @@ driver_support:
|
||||
xcuitest: false
|
||||
uiautomation: false
|
||||
android:
|
||||
uiautomator2: false
|
||||
espresso: false
|
||||
uiautomator2: true
|
||||
espresso: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false
|
||||
@@ -45,7 +52,7 @@ driver_support:
|
||||
windows: false
|
||||
client_support:
|
||||
java: true
|
||||
python: false
|
||||
python: true
|
||||
ruby: true
|
||||
php: false
|
||||
csharp: false
|
||||
@@ -60,7 +67,7 @@ endpoint:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: signalStrengh
|
||||
- name: signalStrength
|
||||
type: string
|
||||
description: Signal strength in the range [0, 4]
|
||||
|
||||
|
||||
@@ -6,9 +6,15 @@ example_usage:
|
||||
java:
|
||||
|
|
||||
driver.setGsmVoice(GsmVoiceState.HOME);
|
||||
python:
|
||||
|
|
||||
self.driver.set_gsm_voice(GsmVoiceState.HOME)
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.gsmVoice('Voice state');
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.gsmVoice('home');
|
||||
ruby:
|
||||
|
|
||||
gsm_voice :home
|
||||
@@ -24,6 +30,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/SupportsSpecialEmulatorCommands.html#setGsmVoice-io.appium.java_client.android.GsmVoiceState-"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3241"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device/Emulator#gsm_voice-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device/Emulator#gsm_voice-instance_method"
|
||||
@@ -36,8 +43,8 @@ driver_support:
|
||||
xcuitest: false
|
||||
uiautomation: false
|
||||
android:
|
||||
uiautomator2: false
|
||||
espresso: false
|
||||
uiautomator2: true
|
||||
espresso: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false
|
||||
@@ -45,7 +52,7 @@ driver_support:
|
||||
windows: false
|
||||
client_support:
|
||||
java: true
|
||||
python: false
|
||||
python: true
|
||||
ruby: true
|
||||
php: false
|
||||
csharp: false
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
---
|
||||
name: Network speed
|
||||
short_description: Set network speed (Emulator only)
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.setNetworkSpeed(NetworkSpeed.LTE);
|
||||
python:
|
||||
|
|
||||
self.driver.set_network_speed(NetSpeed.LTE)
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.networkSpeed('Network type');
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.networkSpeed('lte');
|
||||
ruby:
|
||||
|
|
||||
set_network_speed :lte
|
||||
ruby_core:
|
||||
|
|
||||
@driver.set_network_speed :lte
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/SupportsSpecialEmulatorCommands.html#setNetworkSpeed-io.appium.java_client.android.NetworkSpeed-"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3411"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device/Emulator#set_network_speed-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device/Emulator#set_network_speed-instance_method"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: false
|
||||
uiautomation: false
|
||||
android:
|
||||
uiautomator2: true
|
||||
espresso: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: false
|
||||
client_support:
|
||||
java: true
|
||||
python: true
|
||||
ruby: true
|
||||
php: false
|
||||
csharp: false
|
||||
javascript_wd: true
|
||||
javascript_wdio: true
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/device/network_speed
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: netspeed
|
||||
type: string
|
||||
description: Network type - 'full','gsm', 'edge', 'hscsd', 'gprs', 'umts', 'hsdpa', 'lte', 'evdo'
|
||||
|
||||
# Links to specifications. Should link to at least one specification
|
||||
specifications:
|
||||
jsonwp: https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L346
|
||||
@@ -6,9 +6,15 @@ example_usage:
|
||||
java:
|
||||
|
|
||||
driver.sendSMS("555-123-4567", "Hey lol");
|
||||
python:
|
||||
|
|
||||
self.driver.send_sms('555-123-4567', 'Hey lol')
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.sendSms('555-123-4567', 'Hey lol');
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.sendSms('555-123-4567', 'Hey lol');
|
||||
ruby:
|
||||
|
|
||||
send_sms(phone_number: '555-123-4567', message: 'Hey lol')
|
||||
@@ -24,6 +30,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/SupportsSpecialEmulatorCommands.html#sendSMS-java.lang.String-java.lang.String-"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3183"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device/Emulator#send_sms-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device/Emulator#send_sms-instance_method"
|
||||
@@ -45,7 +52,7 @@ driver_support:
|
||||
windows: false
|
||||
client_support:
|
||||
java: true
|
||||
python: false
|
||||
python: true
|
||||
ruby: true
|
||||
php: false
|
||||
csharp: false
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
---
|
||||
name: Toggle Data
|
||||
short_description: Switch the state of data service
|
||||
description:
|
||||
|
|
||||
Switch the state of data service.
|
||||
|
||||
(For Android) This API does not work for Android API level 21+
|
||||
because it requires system or carrier privileged permission, and Android <= 21 does not support granting permissions.
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
||||
@@ -30,7 +30,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/AndroidDriver.html#toggleLocationServices--"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L774"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/toggleLocationServices.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2758"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Device#toggle_location_services-instance_method"
|
||||
|
||||
@@ -6,6 +6,9 @@ example_usage:
|
||||
java:
|
||||
|
|
||||
driver.toggleWifi();
|
||||
python:
|
||||
|
|
||||
driver.toggle_wifi()
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.toggleWiFi();
|
||||
@@ -27,6 +30,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/SupportsNetworkStateManagement.html#toggleWifi--"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/toggleWiFi.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2738"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Device#toggle_wifi-instance_method"
|
||||
@@ -49,7 +53,7 @@ driver_support:
|
||||
windows: false
|
||||
client_support:
|
||||
java: true
|
||||
python: false
|
||||
python: true
|
||||
ruby: true
|
||||
php: true
|
||||
csharp: true
|
||||
|
||||
@@ -6,9 +6,15 @@ example_usage:
|
||||
java:
|
||||
|
|
||||
List<List<Object>> performanceData = driver.getPerformanceData("my.app.package", "cpuinfo", 5);
|
||||
python:
|
||||
|
|
||||
self.driver.get_performance_data('my.app.package', 'cpuinfo', 5)
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.getPerformanceData('my.app.package', 'cpuinfo', 5);
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.getPerformanceData('my.app.package', 'cpuinfo', 5);
|
||||
ruby:
|
||||
|
|
||||
get_performance_data package_name: 'io.appium.android.apis', data_type: 'cpuinfo', data_read_timeout: 10
|
||||
@@ -25,6 +31,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/HasSupportedPerformanceDataType.html#getSupportedPerformanceDataTypes--"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3412"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#get_performance_data-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#get_performance_data-instance_method"
|
||||
@@ -62,13 +69,13 @@ endpoint:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: package_name
|
||||
- name: packageName
|
||||
type: string
|
||||
description: The package name of the application
|
||||
- name: data_type
|
||||
- name: dataType
|
||||
type: string
|
||||
description: The type of system state which wants to read. It should be one of the supported performance data types.
|
||||
- name: data_read_timeout
|
||||
- name: dataReadTimeout
|
||||
type: number
|
||||
description: The number of attempts to read (optional)
|
||||
response:
|
||||
|
||||
@@ -6,9 +6,15 @@ example_usage:
|
||||
java:
|
||||
|
|
||||
List<String> performanceTypes = driver.getSupportedPerformanceDataTypes();
|
||||
python:
|
||||
|
|
||||
self.driver.get_performance_data_types()
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.getSupportedPerformanceDataTypes();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.getPerformanceDataTypes();
|
||||
ruby:
|
||||
|
|
||||
get_performance_data_types
|
||||
@@ -24,6 +30,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/HasSupportedPerformanceDataType.html#getSupportedPerformanceDataTypes--"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3398"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#get_performance_data_types-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#get_performance_data_types-instance_method"
|
||||
|
||||
@@ -10,6 +10,9 @@ example_usage:
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.startRecordingScreen();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.startRecordingScreen();
|
||||
ruby:
|
||||
|
|
||||
start_recording_screen
|
||||
@@ -28,10 +31,15 @@ example_usage:
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
// TODO C# sample
|
||||
driver.StartRecordingScreen(
|
||||
AndroidStartScreenRecordingOptions.GetAndroidStartScreenRecordingOptions()
|
||||
.WithTimeLimit(TimeSpan.FromSeconds(10))
|
||||
.WithBitRate(500000)
|
||||
.WithVideoSize("720x1280"));
|
||||
|
||||
client_docs:
|
||||
java: "https://static.javadoc.io/io.appium/java-client/6.1.0/io/appium/java_client/screenrecording/CanRecordScreen.html#startRecordingScreen-T-"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3412"
|
||||
ruby:
|
||||
- android: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#start_recording_screen-instance_method"
|
||||
@@ -73,58 +81,61 @@ endpoint:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: remotePath
|
||||
- name: options
|
||||
type: object
|
||||
description: The following parameters of the action
|
||||
- name: options.remotePath
|
||||
type: string
|
||||
description: The path to the remote location, where the resulting video should be uploaded.
|
||||
The following protocols are supported http/https, ftp.
|
||||
Null or empty string value (the default setting) means the content of resulting
|
||||
file should be encoded as Base64 and passed as the endpount response value.
|
||||
file should be encoded as Base64 and passed as the endpoint response value.
|
||||
An exception will be thrown if the generated media file is too big to
|
||||
fit into the available process memory.
|
||||
This option only has an effect if there is screen recording process in progreess
|
||||
This option only has an effect if there is screen recording process in progress
|
||||
and `forceRestart` parameter is not set to `true`.
|
||||
- name: username
|
||||
- name: options.username
|
||||
type: string
|
||||
description: The name of the user for the remote authentication.
|
||||
- name: password
|
||||
- name: options.password
|
||||
type: string
|
||||
description: The password for the remote authentication.
|
||||
- name: method
|
||||
- name: options.method
|
||||
type: string
|
||||
description: The http multipart upload method name. The 'PUT' one is used by default.
|
||||
- name: forceRestart
|
||||
- name: options.forceRestart
|
||||
type: boolean
|
||||
description: Whether to try to catch and upload/return the currently running screen recording
|
||||
(`false`, the default setting on server) or ignore the result of it
|
||||
and start a new recording immediately (`true`).
|
||||
- name: timeLimit
|
||||
- name: options.timeLimit
|
||||
type: string
|
||||
description: Recording time. 180 seconds is by default.
|
||||
- name: videoType
|
||||
- name: options.videoType
|
||||
type: string
|
||||
description: (iOS Only) The format of the screen capture to be recorded.
|
||||
Available formats "h264", "mp4" or "fmp4". Default is "mp4".
|
||||
Only works for Simulator.
|
||||
- name: videoQuality
|
||||
- name: options.videoQuality
|
||||
type: string
|
||||
description: (iOS Only) The video encoding quality (low, medium, high, photo - defaults to medium).
|
||||
- name: videoFps
|
||||
- name: options.videoFps
|
||||
type: string
|
||||
description: (iOS Only) The Frames Per Second rate of the recorded video.
|
||||
Change this value if the resulting video is too slow or too fast. Defaults to 10.
|
||||
This can decrease the resulting file size.
|
||||
- name: bitRate
|
||||
- name: options.bitRate
|
||||
type: string
|
||||
description: (iOS Only) The video bit rate for the video, in megabits per second.
|
||||
4 Mbp/s(4000000) is by default for Android API level below 27. 20 Mb/s(20000000) for API level 27 and above.
|
||||
- name: videoSize
|
||||
- name: options.videoSize
|
||||
type: string
|
||||
description: (Android Only) The format is widthxheight.
|
||||
The default value is the device's native display resolution (if supported),
|
||||
1280x720 if not. For best results,
|
||||
use a size supported by your device's Advanced Video Coding (AVC) encoder.
|
||||
For example, "1280x720"
|
||||
- name: bugReport
|
||||
- name: options.bugReport
|
||||
type: string
|
||||
description: (Android Only) Set it to `true` in order to display additional information on the video overlay,
|
||||
such as a timestamp, that is helpful in videos captured to illustrate bugs.
|
||||
|
||||
@@ -10,6 +10,9 @@ example_usage:
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.stopRecordingScreen();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.stopRecordingScreen();
|
||||
ruby:
|
||||
|
|
||||
stop_recording_screen
|
||||
@@ -23,13 +26,14 @@ example_usage:
|
||||
self.driver.stop_recording_screen()
|
||||
php:
|
||||
|
|
||||
// TODO PHP sample
|
||||
driver.StopRecordingScreen();
|
||||
csharp:
|
||||
|
|
||||
// TODO C# sample
|
||||
|
||||
client_docs:
|
||||
java: "https://static.javadoc.io/io.appium/java-client/6.1.0/io/appium/java_client/screenrecording/CanRecordScreen.html#stopRecordingScreen--"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3398"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#stop_recording_screen-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#stop_recording_screen-instance_method"
|
||||
|
||||
@@ -21,7 +21,7 @@ example_usage:
|
||||
await driver.toggleTouchIdEnrollment();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.toggleTouchIdEnrollment(true);
|
||||
driver.toggleEnrollTouchId(true);
|
||||
ruby:
|
||||
|
|
||||
toggle_touch_id_enrollment
|
||||
@@ -37,7 +37,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/ios/PerformsTouchID.html#performTouchID-boolean-"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L670"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/toggleTouchIdEnrollment.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3150"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Ios/Device#toggle_touch_id_enrollment-instance_method"
|
||||
|
||||
@@ -49,7 +49,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/ios/PerformsTouchID.html#performTouchID-boolean-"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L661"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/touchId.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3133"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Ios/Device#touch_id-instance_method"
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
---
|
||||
name: Get Display Density
|
||||
short_description: Retrieve display density(dpi) of the Android device
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.getDeviceDensity();
|
||||
python:
|
||||
|
|
||||
self.driver.get_device_density()
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.getDisplayDensity();
|
||||
ruby:
|
||||
|
|
||||
get_device_density
|
||||
ruby_core:
|
||||
|
|
||||
@driver.get_device_density
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/AndroidMobileCommandHelper.html#getDisplayDensityCommand--"
|
||||
python: "https://github.com/appium/python-client"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#get_display_density-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#get_display_density-instance_method"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#getdisplaydensity"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: false
|
||||
uiautomation: false
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: false
|
||||
client_support:
|
||||
java: true
|
||||
python: true
|
||||
ruby: true
|
||||
php: false
|
||||
csharp: false
|
||||
javascript_wd: false
|
||||
javascript_wdio: true
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/device/display_density
|
||||
method: GET
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
response:
|
||||
- type: number
|
||||
description: The device density(dpi) of the Android device
|
||||
|
||||
# Links to specifications. Should link to at least one specification
|
||||
specifications:
|
||||
jsonwp: https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L530
|
||||
@@ -30,7 +30,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/AndroidDriver.html#openNotifications--"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L676"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/openNotifications.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3004"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#open_notifications-instance_method"
|
||||
@@ -44,7 +44,7 @@ driver_support:
|
||||
xcuitest: false
|
||||
uiautomation: false
|
||||
android:
|
||||
espresso: true
|
||||
espresso: false
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
|
||||
@@ -6,6 +6,12 @@ example_usage:
|
||||
java:
|
||||
|
|
||||
Map<String, String> systemBars = driver.getSystemBars();
|
||||
python:
|
||||
|
|
||||
self.driver.get_system_bars()
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.getSystemBars();
|
||||
ruby:
|
||||
|
|
||||
get_system_bars
|
||||
@@ -21,6 +27,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/HasAndroidDeviceDetails.html#getSystemBars--"
|
||||
python: "https://github.com/appium/python-client"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#get_system_bars-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#get_system_bars-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO
|
||||
@@ -41,12 +48,12 @@ driver_support:
|
||||
windows: false
|
||||
client_support:
|
||||
java: true
|
||||
python: false
|
||||
python: true
|
||||
ruby: true
|
||||
php: false
|
||||
csharp: false
|
||||
javascript_wd: false
|
||||
javascript_wdio: false
|
||||
javascript_wdio: true
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
|
||||
@@ -8,7 +8,10 @@ example_usage:
|
||||
String time = driver.getDeviceTime();
|
||||
python:
|
||||
|
|
||||
time = self.driver.device_time()
|
||||
time = self.driver.device_time
|
||||
|
||||
time = self.driver.get_device_time()
|
||||
time = self.driver.get_device_time("YYYY-MM-DD")
|
||||
javascript_wdio:
|
||||
|
|
||||
let time = driver.getDeviceTime();
|
||||
@@ -30,7 +33,7 @@ example_usage:
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/HasDeviceTime.html#getDeviceTime--"
|
||||
python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L798"
|
||||
python: "https://github.com/appium/python-client"
|
||||
javascript_wdio: "http://webdriver.io/api/mobile/getDeviceTime.html"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3119"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#device_time-instance_method"
|
||||
|
||||
@@ -15,7 +15,7 @@ example_usage:
|
||||
await element.clear();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.clearElement("~SomeAccessibilityId");
|
||||
$("~SomeAccessibilityId").clearValue();
|
||||
ruby:
|
||||
|
|
||||
find_element(:accessibility_id, "SomeAccessibilityID").clear
|
||||
|
||||
@@ -21,7 +21,7 @@ example_usage:
|
||||
await element.click();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.click('#SomeId');
|
||||
$('#SomeId').click();
|
||||
ruby:
|
||||
|
|
||||
find_element(:accessibility_id, 'SomeId').click
|
||||
|
||||
@@ -21,7 +21,7 @@ example_usage:
|
||||
await element.type("Hello world!")
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.setValue("~SomeAccessibilityId");
|
||||
$("~SomeAccessibilityId").addValue("Enter");
|
||||
ruby:
|
||||
|
|
||||
find_element(:accessibility_id, "SomeAccessibilityID").send_keys("Hello World!")
|
||||
@@ -71,7 +71,7 @@ client_support:
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /wd/hub/session/:session_id/element/value
|
||||
url: /wd/hub/session/:session_id/element/:element_id/value
|
||||
method: 'POST'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
|
||||
@@ -16,7 +16,7 @@ example_usage:
|
||||
let tagName = await element.getAttribute("content-desc");
|
||||
javascript_wdio:
|
||||
|
|
||||
let attribute = driver.getAttribute("~SomeAccessibilityId", "content-desc");
|
||||
let attribute = $("~SomeAccessibilityId").getAttribute("content-desc");
|
||||
ruby:
|
||||
|
|
||||
find_element(:accessibility_id, 'SomeAccessibilityID').attribute("content-desc")
|
||||
|
||||
@@ -22,7 +22,7 @@ example_usage:
|
||||
let cssProperty = await element.getComputedCss();
|
||||
javascript_wdio:
|
||||
|
|
||||
let cssProperty = driver.getCssProperty("~SomeId", "style");
|
||||
let cssProperty = $("~SomeId").getCSSProperty("style");
|
||||
ruby:
|
||||
|
|
||||
find_element(:id, 'SomeId').css_value
|
||||
|
||||
@@ -14,10 +14,9 @@ example_usage:
|
||||
let element = await driver.elementByAccessibilityId("SomeAccessibilityID");
|
||||
let isDisplayed = await element.isDisplayed();
|
||||
|
||||
# Note that elementIdDisplayed is not a typo in this document, it's a WDIO typo
|
||||
javascript_wdio:
|
||||
|
|
||||
let isDisplayed = driver.elementIdDisplayed("~SomeAccessibilityId");
|
||||
let isDisplayed = $("~SomeAccessibilityId").isDisplayed();
|
||||
ruby:
|
||||
|
|
||||
find_element(:accessibility_id, "SomeAccessibilityID").displayed?
|
||||
|
||||
@@ -15,7 +15,7 @@ example_usage:
|
||||
let isEnabled = await element.isEnabled();
|
||||
javascript_wdio:
|
||||
|
|
||||
let isEnabled = driver.isEnabled("~SomeAccessibilityId");
|
||||
let isEnabled = $("~SomeAccessibilityId").isEnabled();
|
||||
ruby:
|
||||
|
|
||||
find_element(:accessibility_id, "SomeAccessibilityID").enabled?
|
||||
|
||||
@@ -7,6 +7,10 @@ example_usage:
|
||||
|
|
||||
let element = await driver.elementByAccessibilityId("SomeAccessibilityID");
|
||||
let location = await element.getLocationInView();
|
||||
python:
|
||||
|
|
||||
element = self.driver.find_element_by_accessibility_id('SomeAccessibilityID')
|
||||
element.location_in_view
|
||||
javascript_wdio:
|
||||
|
|
||||
let location = driver.getLocationInView("~SomeAccessibilityId");
|
||||
|
||||
@@ -18,7 +18,7 @@ example_usage:
|
||||
let location = await element.getLocation();
|
||||
javascript_wdio:
|
||||
|
|
||||
let location = driver.getLocation("~SomeAccessibilityId");
|
||||
let location = $("~SomeAccessibilityId").getLocation();
|
||||
ruby:
|
||||
|
|
||||
find_element(:accessibility_id, 'SomeAccessibilityID').location
|
||||
|
||||
@@ -16,7 +16,7 @@ example_usage:
|
||||
let tagName = await element.getTagName();
|
||||
javascript_wdio:
|
||||
|
|
||||
let tagName = driver.getTagName("~SomeAccessibilityId");
|
||||
let tagName = $("~SomeAccessibilityId").getTagName();
|
||||
ruby:
|
||||
|
|
||||
find_element(:accessibility_id, 'SomeAccessibilityID').tag_name
|
||||
|
||||
@@ -7,13 +7,17 @@ example_usage:
|
||||
|
|
||||
List<MobileElement> element = (MobileElement) driver.findElementByAccessibilityId("SomeAccessibilityID");
|
||||
Rectangle rect = element.getRect();
|
||||
python:
|
||||
|
|
||||
element = self.driver.find_element_by_accessibility_id('SomeAccessibilityID')
|
||||
element.rect
|
||||
javascript_wd:
|
||||
|
|
||||
let element = await driver.elementByAccessibilityId("SomeAccessibilityID");
|
||||
let rect = await element.getRect();
|
||||
javascript_wdio:
|
||||
|
|
||||
let rect = driver.elementIdRect("~SomeAccessibilityId");
|
||||
let rect = driver.getElementRect("~SomeAccessibilityId");
|
||||
ruby:
|
||||
|
|
||||
element = find_element :accessibility_id, "SomeAccessibilityID"
|
||||
@@ -79,7 +83,7 @@ endpoint:
|
||||
- name: height
|
||||
type: number
|
||||
description: Height of the bounding rectangle
|
||||
- name: weight
|
||||
- name: width
|
||||
type: number
|
||||
description: Width of the bounding rectangle
|
||||
# Links to specifications. Should link to at least one specification
|
||||
|
||||
@@ -11,7 +11,7 @@ example_usage:
|
||||
// TODO Java sample
|
||||
python:
|
||||
|
|
||||
// TODO: Python example
|
||||
self.driver.set_value('some')
|
||||
javascript_wd:
|
||||
|
|
||||
// TODO JavaScript sample
|
||||
@@ -39,15 +39,15 @@ client_docs:
|
||||
javascript_wdio: "http://webdriver.io/api/property/getText.html" # TODO JAvaScript documentation link
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1832" # TODO JAvaScript documentation link
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#replace_value-instance_method"
|
||||
ruby/core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#replace_value-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#replace_value-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO Dotnet documentation link
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: true
|
||||
xcuitest: false
|
||||
uiautomation: false
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
|
||||
@@ -15,7 +15,7 @@ example_usage:
|
||||
let isSelected = await element.isSelected();
|
||||
javascript_wdio:
|
||||
|
|
||||
let isSelected = driver.isSelected("~SomeAccessibilityId");
|
||||
let isSelected = $("~SomeAccessibilityId").isSelected();
|
||||
ruby:
|
||||
|
|
||||
find_element(:accessibility_id, "SomeAccessibilityID").selected?
|
||||
|
||||
@@ -18,7 +18,7 @@ example_usage:
|
||||
let size = await element.getSize();
|
||||
javascript_wdio:
|
||||
|
|
||||
let size = driver.getElementSize("~SomeAccessibilityId");
|
||||
let size = $("~SomeAccessibilityId").getSize();
|
||||
ruby:
|
||||
|
|
||||
find_element(:accessibility_id, 'SomeAccessibilityID').size
|
||||
|
||||
@@ -9,7 +9,7 @@ example_usage:
|
||||
java:
|
||||
|
|
||||
MobileElement element = (MobileElement) driver.findElementByClassName("SomeClassName");
|
||||
let elText = element.getText();
|
||||
String elText = element.getText();
|
||||
python:
|
||||
|
|
||||
el = self.driver.find_element_by_accessibility_id('SomeAccessibilityID')
|
||||
@@ -20,7 +20,7 @@ example_usage:
|
||||
await element.text();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.getText("~SomeAccessibilityId");
|
||||
$("~SomeAccessibilityId").getText();
|
||||
ruby:
|
||||
|
|
||||
element = find_element :accessibility_id, "SomeAccessibilityID"
|
||||
|
||||
@@ -19,7 +19,7 @@ example_usage:
|
||||
let elementTwo = await driver.element("id", "SomeID");
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.element("~SomeAccessibilityId");
|
||||
$("~SomeAccessibilityId");
|
||||
ruby:
|
||||
|
|
||||
find_element(:accessibility_id, 'SomeAccessibilityID')
|
||||
|
||||
@@ -21,6 +21,8 @@ selector_strategies:
|
||||
description: Use the UI Automator API, in particular the [UiSelector](https://developer.android.com/reference/android/support/test/uiautomator/UiSelector.html) class to locate elements. In Appium you send the Java code, as a string, to the server, which executes it in the application’s environment, returning the element or elements.
|
||||
- name: Android View Tag (Espresso only)
|
||||
description: Locate an element by its [view tag](https://developer.android.com/reference/android/support/test/espresso/matcher/ViewMatchers.html#withTagValue(org.hamcrest.Matcher%3Cjava.lang.Object%3E))
|
||||
- name: Android Data Matcher (Espresso only)
|
||||
description: Locate an element using [Espresso DataMatcher](https://developer.android.com/reference/android/support/test/espresso/Espresso#ondata)
|
||||
- name: IOS UIAutomation
|
||||
description: When automating an iOS application, Apple’s [Instruments](/docs/en/drivers/ios-uiautomation.md) framework can be used to find elements
|
||||
|
||||
@@ -38,7 +40,7 @@ example_usage:
|
||||
let elementsTwo = await driver.elements("id", "SomeID");
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.elements("~SomeAccessibilityId");
|
||||
$$("~SomeAccessibilityId");
|
||||
ruby:
|
||||
|
|
||||
find_elements(:accessibility_id, "~SomeAccessibilityID")
|
||||
|
||||
@@ -14,7 +14,7 @@ example_usage:
|
||||
let element = await driver.active();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.elementActive();
|
||||
driver.getActiveElement();
|
||||
ruby:
|
||||
|
|
||||
switch_to.active_element
|
||||
|
||||
@@ -20,7 +20,7 @@ example_usage:
|
||||
await element.submit();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.submitForm("~SomeAccessibilityId");
|
||||
$("~SomeAccessibilityId").click();
|
||||
ruby:
|
||||
|
|
||||
element = find_element :class_name, "someClass"
|
||||
|
||||
@@ -31,7 +31,7 @@ example_usage:
|
||||
// PHP Code here
|
||||
csharp:
|
||||
|
|
||||
// CSharp Code here
|
||||
driver.FindElementById("elementId").Click();
|
||||
|
||||
client_docs:
|
||||
java:
|
||||
@@ -43,7 +43,7 @@ client_docs:
|
||||
javascript_wd: "https://github.com/admc/wd/releases"
|
||||
ruby: "https://github.com/appium/ruby_lib/releases/latest"
|
||||
ruby_core: "https://github.com/appium/ruby_lib/releases/latest"
|
||||
php: "https://github.com/appium/php-client/releases/latest-"
|
||||
php: "https://github.com/appium/php-client/releases/latest"
|
||||
csharp: "https://github.com/appium/appium" # TODO
|
||||
|
||||
# Driver support by platform
|
||||
|
||||
@@ -12,20 +12,21 @@ description:
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
WebElement source = (MobileElement) driver.findElementsByAccessibilityId("SomeAccessibilityID");
|
||||
WebElement target = (MobileElement) driver.findElementsByAccessibilityId("SomeOtherAccessibilityID");
|
||||
|
|
||||
WebElement source = (MobileElement) driver.findElementsByAccessibilityId("SomeAccessibilityID");
|
||||
WebElement target = (MobileElement) driver.findElementsByAccessibilityId("SomeOtherAccessibilityID");
|
||||
|
||||
Point source = dragMe.getCenter();
|
||||
Point target = driver.findElementByAccessibilityId("dropzone").getCenter();
|
||||
PointerInput finger = new PointerInput(PointerInput.Kind.TOUCH, "finger");
|
||||
Sequence dragNDrop = new Sequence(finger, 1);
|
||||
dragNDrop.addAction(finger.createPointerMove(Duration.ofMillis(0),
|
||||
PointerInput.Origin.viewport(), source.x, source.y));
|
||||
dragNDrop.addAction(finger.createPointerDown(PointerInput.MouseButton.LEFT.asArg()));
|
||||
dragNDrop.addAction(finger.createPointerMove(Duration.ofMillis(700),
|
||||
PointerInput.Origin.viewport(),target.x, target.y));
|
||||
dragNDrop.addAction(finger.createPointerUp(PointerInput.MouseButton.LEFT.asArg()));
|
||||
driver.perform(Arrays.asList(dragNDrop));
|
||||
Point source = dragMe.getCenter();
|
||||
Point target = driver.findElementByAccessibilityId("dropzone").getCenter();
|
||||
PointerInput finger = new PointerInput(PointerInput.Kind.TOUCH, "finger");
|
||||
Sequence dragNDrop = new Sequence(finger, 1);
|
||||
dragNDrop.addAction(finger.createPointerMove(Duration.ofMillis(0),
|
||||
PointerInput.Origin.viewport(), source.x, source.y));
|
||||
dragNDrop.addAction(finger.createPointerDown(PointerInput.MouseButton.LEFT.asArg()));
|
||||
dragNDrop.addAction(finger.createPointerMove(Duration.ofMillis(700),
|
||||
PointerInput.Origin.viewport(),target.x, target.y));
|
||||
dragNDrop.addAction(finger.createPointerUp(PointerInput.MouseButton.LEFT.asArg()));
|
||||
driver.perform(Arrays.asList(dragNDrop));
|
||||
python:
|
||||
|
|
||||
element = driver.find_element_by_accessibility_id("elId")
|
||||
@@ -57,7 +58,7 @@ example_usage:
|
||||
|
|
||||
// Example: expressing a 1-second pinch-and-zoom
|
||||
// with a 500ms wait after the fingers first touch:
|
||||
browser.actions([{
|
||||
browser.performActions([{
|
||||
"type": "pointer",
|
||||
"id": "finger1",
|
||||
"parameters": {"pointerType": "touch"},
|
||||
@@ -232,4 +233,4 @@ endpoint:
|
||||
|
||||
# Links to specifications. Should link to at least one specification
|
||||
specifications:
|
||||
w3c: https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/Actions.html
|
||||
w3c: https://www.w3.org/TR/webdriver/#actions
|
||||
|
||||
@@ -22,8 +22,7 @@ example_usage:
|
||||
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.moveTo(element)
|
||||
.click();
|
||||
$("~SomeId").click();
|
||||
ruby:
|
||||
|
|
||||
action.move_to(element).click.perform
|
||||
@@ -35,7 +34,12 @@ example_usage:
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
// TODO C# sample
|
||||
Actions action = new Actions(driver);
|
||||
action.MoveToElement(element);
|
||||
action.Click();
|
||||
action.Perform();
|
||||
|
||||
|
||||
|
||||
client_docs:
|
||||
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/Actions.html#click--"
|
||||
|
||||
@@ -22,8 +22,7 @@ example_usage:
|
||||
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.moveTo(element)
|
||||
.doubleClick();
|
||||
$("~SomeId").doubleClick();
|
||||
ruby:
|
||||
|
|
||||
action.move_to(element).double_click.perform
|
||||
@@ -72,7 +71,7 @@ client_support:
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /session/:session_id/doubledoubleClick
|
||||
url: /session/:session_id/doubleClick
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
|
||||
@@ -23,7 +23,7 @@ example_usage:
|
||||
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.moveTo(element, 10, 10);
|
||||
$(element).moveTo(10, 10);
|
||||
ruby:
|
||||
|
|
||||
mouse.move_to(element)
|
||||
@@ -37,7 +37,11 @@ example_usage:
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
// TODO C# sample
|
||||
Actions action = new Actions(driver);
|
||||
action.MoveToElement(element, 10, 10);
|
||||
action.Perform();
|
||||
|
||||
|
||||
|
||||
client_docs:
|
||||
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/Actions.html#moveToElement-org.openqa.selenium.WebElement-"
|
||||
|
||||
@@ -24,6 +24,8 @@ example_usage:
|
||||
let action = new wd.TouchAction();
|
||||
action.tap({el: element});
|
||||
await action.perform();
|
||||
javascript_wdio:
|
||||
driver.touchDoubleClick(element);
|
||||
ruby:
|
||||
|
|
||||
touch_action.double_tap(element).perform
|
||||
|
||||
@@ -20,7 +20,7 @@ example_usage:
|
||||
await element.flick(1, 10, 10);
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.touchFlick('<ELEMENT_ID>', 1, 10, 10);
|
||||
driver.touchFlick(10, 10, element, 1);
|
||||
ruby:
|
||||
|
|
||||
touch_action.flick(element, 1, 10, 10).perform
|
||||
@@ -50,7 +50,6 @@ driver_support:
|
||||
xcuitest: true
|
||||
uiautomation: true
|
||||
android:
|
||||
uiautomator2: false
|
||||
espresso: false
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: Move
|
||||
name: Move To
|
||||
short_description: Finger move on the screen
|
||||
description:
|
||||
>
|
||||
@@ -9,7 +9,7 @@ example_usage:
|
||||
|
|
||||
TouchActions action = new TouchActions(driver);
|
||||
action.down(10, 10);
|
||||
action.move(50, 50);
|
||||
action.moveTo(50, 50);
|
||||
action.perform();
|
||||
python:
|
||||
|
|
||||
@@ -17,12 +17,13 @@ example_usage:
|
||||
# ...
|
||||
actions = TouchAction(driver)
|
||||
actions.tap_and_hold(element)
|
||||
actions.move(50, 50)
|
||||
actions.move_to(element, 50, 50)
|
||||
actions.perform()
|
||||
javascript_wd:
|
||||
|
|
||||
let action = new wd.TouchAction();
|
||||
let action = new wd.TouchAction(driver);
|
||||
action.press({x: 10, y: 10})
|
||||
.wait(1000)
|
||||
.moveTo({x: 50, y: 50})
|
||||
.release();
|
||||
await action.perform();
|
||||
@@ -35,10 +36,10 @@ example_usage:
|
||||
]);
|
||||
ruby:
|
||||
|
|
||||
touch_action.down(element).move().perform
|
||||
touch_action.down(element).move_to().perform
|
||||
ruby_core:
|
||||
|
|
||||
@driver.touch_action.down(element).move().perform
|
||||
@driver.touch_action.down(element).move_to().perform
|
||||
php:
|
||||
|
|
||||
// TODO PHP sample
|
||||
|
||||
@@ -105,7 +105,7 @@ endpoint:
|
||||
json_parameters:
|
||||
- name: action
|
||||
type: string
|
||||
description: The type of action to perform (moveTo|release|press|tap|wait)
|
||||
description: The type of action to perform (moveTo\|release\|press\|tap\|wait)
|
||||
- name: options
|
||||
type: object
|
||||
description: The parameters of the action
|
||||
|
||||
@@ -28,10 +28,10 @@ example_usage:
|
||||
});
|
||||
ruby:
|
||||
|
|
||||
touch_action.scroll(element, 10, 100).perform
|
||||
touch_actions.scroll(element, 10, 100).perform
|
||||
ruby_core:
|
||||
|
|
||||
@driver.touch_action.scroll(element, 10, 100).perform
|
||||
@driver.touch_actions.scroll(element, 10, 100).perform
|
||||
php:
|
||||
|
|
||||
// TODO PHP sample
|
||||
|
||||
@@ -98,7 +98,7 @@ endpoint:
|
||||
json_parameters:
|
||||
- name: action
|
||||
type: string
|
||||
description: The type of action to perform (moveTo|release|press|tap|wait)
|
||||
description: The type of action to perform (moveTo\|release\|press\|tap\|wait)
|
||||
- name: options
|
||||
type: object
|
||||
description: The parameters of the action
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
| ------- | ----------- | -------- | ---------------- |
|
||||
| mobile:startPerfRecord | Starts performance profiling for the device under test | <none> | |
|
||||
| mobile:stopPerfRecord | Stops performance profiling for the device under test | <none> | |
|
||||
| mobile:startLogsBroadcast | Starts iOS system logs broadcast websocket on the same host and port where Appium server is running at `/ws/session/:sessionId:/appium/syslog` endpoint. | <none> | |
|
||||
| mobile:startLogsBroadcast | Starts iOS system logs broadcast websocket on the same host and port where Appium server is running at `/ws/session/:sessionId:/appium/device/syslog` endpoint. | <none> | |
|
||||
| mobile:stopLogsBroadcast | Stops the iOS system logs broadcasting websocket server started by `mobile:startLogsBroadcast` | <none> | |
|
||||
| mobile:swipe | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-swipe) | | |
|
||||
| mobile:scroll | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-scroll) | | |
|
||||
@@ -46,35 +46,52 @@
|
||||
| mobile:installCertificate | refer to [IOS Pasteboard Guide](/docs/en/writing-running-appium/ios/ios-xctest-install-certificate.md) | | |
|
||||
| mobile:getContexts | Retrieve available contexts, along with the url and title associated with each webview (see [get contexts](/docs/en/commands/context/get-contexts.md)) | | |
|
||||
| mobile:batteryInfo | Reads the battery information from the device under test | <none> | <none> |
|
||||
| mobile:pressButton | Press a physical button. The supported button name is is _home_. _volumeup_ and _volumedown_ are available for real devices | `{name}` | `{name: "home"}` |
|
||||
| mobile:pressButton | Press a physical button. The available button options are: _home_, _volumeup_ and _volumedown_. Real devices support all three buttons whereas simulator only supports _home_. | `{name}` | `{name: "home"}` |
|
||||
| mobile:enrollBiometric | Enroll (or unenroll) an iOS Simulator to use [biometrics](https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/authentication/#face-id-and-touch-id) | `{isEnabled}` | `{isEnabled: true}` |
|
||||
| mobile:sendBiometricMatch | Send a matching or non-matching biometric input to an iOS Simulator. 'type' must be `touchId` or `faceId`. Match is a boolean indicating if it's a matching or non-matching input | `{type, match}` | `{type: "touchId", match: true}` |
|
||||
| mobile:isBiometricEnrolled | Check if an iOS Simulator is enrolled or not. Returns `true` if enrolled, `false` if not enrolled. |||
|
||||
| mobile:clearKeychains | Clear the keychains for an iOS Simulator |||
|
||||
| mobile:siriCommand| Sends a command to Siri | `{text}` | `{text: "What time is it?"}` |
|
||||
|
||||
### Android
|
||||
| Command | Description | Argument | Argument Example |
|
||||
| ------- | ----------- | -------- | ---------------- |
|
||||
| mobile:shell | Execute [ADB shell](https://developer.android.com/studio/command-line/adb#shellcommands) commands (requires [server flag](/docs/en/writing-running-appium/server-args.md#server-flags) `--relaxed-security` to be set) | ADB shell string | `am start -n com.example.demo/com.example.test.MainActivity` |
|
||||
| mobile:startLogsBroadcast | Starts Android logcat broadcast websocket on the same host and port where Appium is running at `/ws/session/:sessionId:/appium/logcat` endpoint | <none> | <none> |
|
||||
| mobile:shell | Execute [ADB shell](https://developer.android.com/studio/command-line/adb#shellcommands) commands (requires [insecure feature](/docs/en/writing-running-appium/security.md) `adb_shell` to be enabled) | ADB shell string | `am start -n com.example.demo/com.example.test.MainActivity` |
|
||||
| mobile:startLogsBroadcast | Starts Android logcat broadcast websocket on the same host and port where Appium is running at `/ws/session/:sessionId:/appium/device/logcat` endpoint | <none> | <none> |
|
||||
| mobile:stopLogsBroadcast | Stops the logcat broadcasting websocket server started by `mobile:startLogsBroadcast` | <none> | <none> |
|
||||
| mobile:batteryInfo | Reads the battery information from the device under test | <none> | <none> |
|
||||
| mobile:acceptAlert | Accepts an on-screen alert | Optional button label to click on | <none> |
|
||||
| mobile:dismissAlert | Dismisses an on-screen alert | Optional button label to click on | <none> |
|
||||
| mobile:performEditorAction | Performs the given editor action on the focused input field. The following action names are supported: `normal, unspecified, none, go, search, send, next, done, previous`. | {action} | {action: "previous"}|
|
||||
| mobile:performEditorAction | Performs the given editor action on the focused input field. The following action names are supported: `normal, unspecified, none, go, search, send, next, done, previous`. | `{action}` | `{action: "previous"}`|
|
||||
| mobile:getPermissions | Gets a list of permissions which are `denied`, `granted` or `requested`. | `{type, appPackage}` | `{type: "granted", appPackage: "io.appium.android.apis"}`|
|
||||
| mobile:changePermissions | Grants or revokes permissions. | `{action, appPackage, permissions}` | `{action: "grant", appPackage: "io.appium.android.apis", permissions: "android.permission.READ_CONTACTS"}`, `{action: "revoke", appPackage: "io.appium.android.apis", permissions: ["android.permission.READ_CONTACTS", "android.permission.CAMERA"]}` |
|
||||
|
||||
### Android (UiAutomator2 only)
|
||||
| Command | Description | Argument | Argument Example |
|
||||
| ------- | ----------- | -------- | ---------------- |
|
||||
| mobile:batteryInfo | Reads the battery information from the device under test | <none> | <none> |
|
||||
| mobile:acceptAlert | Accepts an on-screen alert | Optional button label to click on | <none> |
|
||||
| mobile:dismissAlert | Dismisses an on-screen alert | Optional button label to click on | <none> |
|
||||
| mobile:scrollBackTo | Scroll from one element to another | `{elementId, elementToId}` | `{elementId: 2, elementToId: 1}` |
|
||||
| mobile:viewportScreenshot | Like [screenshot](/commands/session/screenshot/) but only includes contents of viewport | <none> | <none> |
|
||||
| mobile:deepLink | Opens a deep-link URL for testing [Instant Apps](https://support.google.com/googleplay/answer/7240211?hl=en) | `{url, package}` | `{url: "https://www.site.com/", package: "com.site.SomeAndroidPackage"}` |
|
||||
| mobile:getDeviceInfo | Gets device information like manufacturer and model. Read [GetDeviceInfo](https://github.com/appium/appium-uiautomator2-server/blob/master/app/src/main/java/io/appium/uiautomator2/handler/GetDeviceInfo.java) for more details. | <none> | <none> |
|
||||
| mobile:deviceInfo | Gets device information like manufacturer and model. Read [GetDeviceInfo](https://github.com/appium/appium-uiautomator2-server/blob/master/app/src/main/java/io/appium/uiautomator2/handler/GetDeviceInfo.java) for more details. | <none> | <none> |
|
||||
|
||||
### Android (Espresso only)
|
||||
| Command | Description | Argument | Argument Example |
|
||||
| ------- | ----------- | -------- | ---------------- |
|
||||
| mobile:swipe | Perform the ["swipe" view action](https://developer.android.com/reference/android/support/test/espresso/action/ViewActions.html#swipeDown()) | `{elementId, direction}` | `{elementId: 2, direction: "down|up|left|right"}` |
|
||||
| mobile:swipe | Perform ["GeneralSwipeAction"](https://developer.android.com/reference/androidx/test/espresso/action/GeneralSwipeAction) | `{elementId, swiper, startCoordinates, endCoordinates, precisionDescriber}` | `{elementId: 3, swiper: "FAST|SLOW", startCoordinates: 'BOTTOM_RIGHT', endCoordinates: 'TOP_RIGHT', precisionDescriber: 'FINGER'}` |
|
||||
| mobile:clickAction | Perform ["ClickAction"](https://developer.android.com/reference/androidx/test/espresso/action/GeneralClickAction) | `{elementId, tapper, coordinatesProvider, precisionDescriber, inputDevice, buttonState}` | `{elementId: 2, tapper: 'Long', coordinatesProvider: 'BOTTOM_RIGHT', precisionDescriber: 'Thumb', inputDevice: 0, buttonState: 0}` |
|
||||
| mobile:isToastVisible | Check whether a toast message is visible. `text` is the mandatory argument. `isRegexp` is optional. `text` will be parsed as a regular expression pattern if `isRegexp` is `true`. `isRegexp` is `false` by default. It returns `true` if the `text` exists, or `false` otherwise. | `{text, isRegexp}` | `{ text: 'A toast' }`, `{ text: '^regex$', isRegexp: true } `|
|
||||
| mobile:openDrawer | Open drawer by [DrawerAction](https://developer.android.com/reference/android/support/test/espresso/contrib/DrawerActions) with [gravity](https://developer.android.com/reference/android/view/Gravity). `gravity` is option. The default is [GravityCompat.START](https://developer.android.com/reference/android/support/v4/view/GravityCompat.html#START). This method blocks until the drawer is fully open. No operation if the drawer is already open. | `{element, gravity}` | `{ element: element_id }`, `{ element: element_id, gravity: 3 }` |
|
||||
| mobile:closeDrawer | Close drawer by [DrawerAction](https://developer.android.com/reference/android/support/test/espresso/contrib/DrawerActions) with [gravity](https://developer.android.com/reference/android/view/Gravity). `gravity` is option. The default is [GravityCompat.START](https://developer.android.com/reference/android/support/v4/view/GravityCompat.html#START). This method blocks until the drawer is fully closed. No operation if the drawer is already closed. | `{element, gravity}` | `{ element: element_id }`, `{ element: elementId, gravity: 3 }` |
|
||||
| mobile:setDate | Set date by [PickerActions#setDate](https://developer.android.com/reference/android/support/test/espresso/contrib/PickerActions.html#setDate(int,%20int,%20int)) for [DataPicker](https://developer.android.com/reference/android/widget/DatePicker). | `{element, year, monthOfYear, dayOfMonth}` | `{element: elementId, year: 2018, monthOfYear: 12, dayOfMonth: 1}` |
|
||||
| mobile:setTime | Set time by [PickerActions#setTime](https://developer.android.com/reference/android/support/test/espresso/contrib/PickerActions.html#setTime(int,%20int)) for [TimePicker](https://developer.android.com/reference/android/widget/TimePicker). | `{element, hours, minutes}` | `{element: elementId, hours: 12, minutes: 10}` |
|
||||
| mobile:navigateTo | Action to [NavigationView](https://developer.android.com/reference/android/support/design/widget/NavigationView) by [NavigationViewActions#navigateTo](https://developer.android.com/reference/android/support/test/espresso/contrib/NavigationViewActions.html#navigateTo(int)). The view must be a child of a DrawerLayout, of type NavigationView, visible on screen and displayed on screen. | `{element, menuItemId}` | `{element: elementId, menuItemId: 1}` |
|
||||
| mobile:scrollToPage | Action to [ViewPager](https://developer.android.com/reference/android/support/v4/view/ViewPager) by [ViewPagerActions](https://developer.android.com/reference/android/support/test/espresso/contrib/ViewPagerActions). `scrollTo` must be one of `first`, `last`, `left`, `right`. `scrollTo` is used by default if `scrollTo` and `scrollToPage` are provided. | `{scrollTo, scrollToPage, smoothScroll}` | `{element: elementId, scrollTo: 'left', smoothScroll: true}`, `{element: elementId, scrollToPage: 2}`|
|
||||
| mobile:backdoor | Invoke arbitrary methods defined in Android app. The methods must be `public`. `target` is `activity`, `application` or `element`. `methods` are methods you would like to invoke. `elementId` is mandatory if `target` is `element`. Read docstring of _mobileBackdoor_ method [here](https://github.com/appium/appium-espresso-driver/blob/master/lib/commands/general.js) for more details | `{target, methods, elementId}` | `{target: 'activity', methods: [{name: 'method1'}, {name: 'method2', args: [{value: 'hello appium', type: 'java.lang.String'}] }] }`, `{target: 'element', elementId: elementId, [{name: 'getTypeface'}, {name: 'isItalic'}]}` |
|
||||
| mobile:flashElement | Flashes an element on the screen to visually confirm you are operating on the correct element. Can optionally set `durationMillis` (in ms) and `repeatCount` of animation| `{elementId, durationMillis, repeatCount}` | `{elementId: "1234-abcd-5678", durationMillis: 1000, repeatCount: 10}` |
|
||||
| mobile:uiautomator | Drive areas which are not part of App Under Test, using uiautomator2 APIs. `strategy` can be one of: "clazz", "res", "text", "textContains", "textEndsWith", "textStartsWith","desc", "descContains", "descEndsWith", "descStartsWith" and "pkg", taken from uiautomator [By class](https://developer.android.com/reference/androidx/test/uiautomator/By). `action` can be one of: "click", "longClick", "getText", "getContentDescription", "getClassName","getResourceName", "getVisibleBounds", "getVisibleCenter", "getApplicationPackage","getChildCount", "clear", "isCheckable", "isChecked", "isClickable", "isEnabled","isFocusable", "isFocused", "isLongClickable", "isScrollable" and "isSelected", taken from uiautomator [UiObject2](https://developer.android.com/reference/androidx/test/uiautomator/UiObject2). `index` is optional, if not given, will return all matching results | `{strategy, locator, index, action}` | `{strategy: 'clazz', locator: 'android.widget.TextView', index: 2, action: "getText"}` |
|
||||
| mobile:webAtoms | Runs a chain of [webatoms](https://developer.android.com/training/testing/espresso/web). `withElement` and `perform` are basic chain items. Please refer [issue](https://github.com/appium/appium-espresso-driver/pull/380) and [Sample test code](https://github.com/appium/ruby_lib_core/blob/c9062c4b744263d790c7de17263cbd4645cdefc6/test/functional/android/android/mobile_commands_test.rb#L196-L239) as references. | `{webviewElement, forceJavascriptEnabled, methodChain}` | (webdriverio) `{ webviewElement: webviewEl.value, forceJavascriptEnabled: true, methodChain: [...]}` |
|
||||
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
@@ -101,7 +118,7 @@
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
// TODO C# sample
|
||||
driver.ExecuteScript("mobile:scroll", new Dictionary<string, string> { { "direction", "down" } });
|
||||
|
||||
client_docs:
|
||||
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/RemoteWebDriver.html#executeScript-java.lang.String-java.lang.Object...-"
|
||||
|
||||
@@ -54,7 +54,7 @@ example_usage:
|
||||
automationName: 'UiAutomator2',
|
||||
app: path.resolve('path', 'to', 'app.apk')
|
||||
}};
|
||||
let client = webdriverio.remote(options);
|
||||
let client = driver.newSession(options);
|
||||
ruby:
|
||||
|
|
||||
APP_PATH = '../../path/to/app.app'
|
||||
|
||||
@@ -15,7 +15,7 @@ example_usage:
|
||||
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.end();
|
||||
driver.endSession();
|
||||
ruby:
|
||||
|
|
||||
quit
|
||||
@@ -27,7 +27,7 @@ example_usage:
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
// TODO C# sample
|
||||
driver.Quit();
|
||||
|
||||
client_docs:
|
||||
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/RemoteWebDriver.html#quit--"
|
||||
|
||||
@@ -11,7 +11,7 @@ example_usage:
|
||||
location = self.driver.location()
|
||||
javascript_wdio:
|
||||
|
|
||||
let location = driver.location();
|
||||
let location = driver.getGeoLocation();
|
||||
javascript_wd:
|
||||
|
|
||||
let location = await driver.getGeoLocation();
|
||||
@@ -26,7 +26,7 @@ example_usage:
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
// TODO C# sample
|
||||
Location location = driver.Location;
|
||||
|
||||
client_docs:
|
||||
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/html5/LocationContext.html#location--"
|
||||
|
||||
@@ -11,7 +11,7 @@ example_usage:
|
||||
self.driver.set_location(49, 123, 10)
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.location({latitude: 121.21, longitude: 11.56, altitude: 94.23});
|
||||
driver.setGeoLocation({latitude: "121.21", longitude: "11.56", altitude: "94.23"});
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.setGeoLocation(121.21, 11.56, 10);
|
||||
@@ -26,7 +26,9 @@ example_usage:
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
// TODO C# sample
|
||||
driver.Location.Altitude = 94.23;
|
||||
driver.Location.Latitude = 121.21;
|
||||
driver.Location.Longitude = 11.56;
|
||||
|
||||
client_docs:
|
||||
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/html5/LocationContext.html#location--"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user