mirror of
https://github.com/appium/appium.git
synced 2026-11-09 19:38:26 +08:00
Compare commits
19
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6f2212a215 | ||
|
|
077993ce01 | ||
|
|
6f32745e71 | ||
|
|
88e2d02454 | ||
|
|
dd3fdf329e | ||
|
|
33ab151d04 | ||
|
|
9d8779a224 | ||
|
|
a1ef920af1 | ||
|
|
149ce03b84 | ||
|
|
09437412c8 | ||
|
|
0256991162 | ||
|
|
604170a7ad | ||
|
|
509ab16612 | ||
|
|
6184bf96b6 | ||
|
|
12e28c9e08 | ||
|
|
090640e348 | ||
|
|
a5c6f1c80e | ||
|
|
8d181dd19f | ||
|
|
eb189d4588 |
@@ -1,13 +0,0 @@
|
||||
# editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
+2
-8
@@ -1,8 +1,2 @@
|
||||
**/coverage/**
|
||||
**/node_modules/**
|
||||
examples/javascript-wd
|
||||
**/build/**
|
||||
**/*.min.js
|
||||
sample-code
|
||||
**/build-fixtures/**
|
||||
packages/appium/docs/**/assets/**
|
||||
coverage
|
||||
node_modules
|
||||
|
||||
@@ -1,60 +1,3 @@
|
||||
{
|
||||
"extends": ["@appium/eslint-config-appium-ts"],
|
||||
"overrides": [
|
||||
{
|
||||
"files": "packages/fake-driver/**/*",
|
||||
"rules": {"require-await": "off"}
|
||||
},
|
||||
{"files": "packages/support/**/*", "globals": {"BigInt": "readonly"}},
|
||||
{
|
||||
"files": "packages/*/test/**/*",
|
||||
"rules": {"func-names": "off"}
|
||||
},
|
||||
{
|
||||
"files": ["packages/*/index.js", "packages/*/scripts/**/*.js", "test/*.js"],
|
||||
"parserOptions": {
|
||||
"sourceType": "script"
|
||||
}
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"packages/appium/support.js",
|
||||
"packages/appium/driver.js",
|
||||
"packages/appium/plugin.js"
|
||||
],
|
||||
"parserOptions": {
|
||||
"sourceType": "script"
|
||||
}
|
||||
},
|
||||
{
|
||||
"files": ["./test/setup.js", "./**/scripts/**/*.js", "./packages/*/index.js"],
|
||||
"rules": {
|
||||
"@typescript-eslint/no-var-requires": "off"
|
||||
}
|
||||
},
|
||||
{
|
||||
"files": "./packages/*/test/**/*.js",
|
||||
"rules": {
|
||||
"@typescript-eslint/no-var-requires": "off",
|
||||
"no-restricted-properties": [
|
||||
"error",
|
||||
{
|
||||
"object": "sinon",
|
||||
"property": "spy",
|
||||
"message": "Use `sandbox = sinon.createSandbox()` and `sandbox.spy()` instead. Don't forget to call `sandbox.restore()` in `afterEach`"
|
||||
},
|
||||
{
|
||||
"object": "sinon",
|
||||
"property": "stub",
|
||||
"message": "Use `sandbox = sinon.createSandbox()` and `sandbox.stub()` instead. Don't forget to call `sandbox.restore()` in `afterEach`"
|
||||
},
|
||||
{
|
||||
"object": "sinon",
|
||||
"property": "mock",
|
||||
"message": "Use `sandbox = sinon.createSandbox()` and `sandbox.mock()` instead. Don't forget to call `sandbox.restore()` in `afterEach`"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
"extends": "appium"
|
||||
}
|
||||
|
||||
-56
@@ -1,56 +0,0 @@
|
||||
# Generated by FOSSA CLI (https://github.com/fossas/fossa-cli)
|
||||
# Visit https://fossa.com to learn more
|
||||
|
||||
version: 3
|
||||
|
||||
project:
|
||||
id: appium
|
||||
name: appium
|
||||
|
||||
paths:
|
||||
exclude:
|
||||
- ./sample-code
|
||||
- '**/fixtures/**'
|
||||
- '**/demo/**'
|
||||
- '**/example/**'
|
||||
- '**/examples/**'
|
||||
|
||||
targets:
|
||||
only:
|
||||
- type: npm
|
||||
path: .
|
||||
- type: npm
|
||||
path: ./packages/appium
|
||||
- type: npm
|
||||
path: ./packages/base-driver
|
||||
- type: npm
|
||||
path: ./packages/doctor
|
||||
- type: npm
|
||||
path: ./packages/eslint-config-appium
|
||||
- type: npm
|
||||
path: ./packages/fake-driver
|
||||
- type: npm
|
||||
path: ./packages/support
|
||||
- type: npm
|
||||
path: ./packages/test-support
|
||||
- type: npm
|
||||
path: ./packages/types
|
||||
- type: npm
|
||||
path: ./packages/schema
|
||||
- type: npm
|
||||
path: ./packages/universal-xmlplugin
|
||||
- type: npm
|
||||
path: ./packages/opencv
|
||||
- type: npm
|
||||
path: ./packages/images-plugin
|
||||
- type: npm
|
||||
path: ./packages/base-plugin
|
||||
- type: npm
|
||||
path: ./packages/relaxed-caps-plugin
|
||||
- type: npm
|
||||
path: ./packages/fake-plugin
|
||||
- type: npm
|
||||
path: ./packages/docutils
|
||||
|
||||
revision:
|
||||
branch: master
|
||||
@@ -1,4 +0,0 @@
|
||||
* text=auto eol=lf
|
||||
|
||||
# Handle as a text file but merge as binary.
|
||||
package-lock.json merge=binary
|
||||
@@ -0,0 +1,33 @@
|
||||
## The problem
|
||||
|
||||
Briefly describe the issue you are experiencing (or the feature you want to see added to Appium). Tell us what you were trying to do and what happened instead. Remember, this is _not_ a place to ask questions. For that, go to http://discuss.appium.io!
|
||||
|
||||
## Environment
|
||||
|
||||
* Appium version (or git revision) that exhibits the issue:
|
||||
* 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:
|
||||
|
||||
## Details
|
||||
|
||||
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!
|
||||
If you are reporting a bug, _always_ include Appium logs!
|
||||
|
||||
|
||||
## Code To Reproduce Issue [ Good To Have ]
|
||||
|
||||
Please remember that with sample code it's easier to reproduce the bug and it's much faster to fix it.
|
||||
|
||||
Please git clone https://github.com/appium/appium and from the `sample-code` directory, use one of your favourite languages and sample apps to reproduce the issue.
|
||||
|
||||
In case a similar scenario is missing in sample-code, please submit a PR with one of the sample apps provided.
|
||||
@@ -1,80 +0,0 @@
|
||||
name: 🐞 Bug Report
|
||||
description: File a new bug report
|
||||
title: 'bug: <title>'
|
||||
labels: [Bug, Needs Triage]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: ':stop_sign: _For support questions, please visit [http://discuss.appium.io](http://discuss.appium.io) instead._'
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: 'Is there an existing issue for this?'
|
||||
description: 'Please [search :mag: the issues](https://github.com/appium/appium/issues) to check if this bug has already been reported.'
|
||||
options:
|
||||
- label: 'I have searched the existing issues'
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 'Current Behavior'
|
||||
description: 'Describe the problem you are experiencing. **Please do not paste your logs here.** Screenshots are welcome.'
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 'Expected Behavior'
|
||||
description: 'Describe what you expect to happen instead.'
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 'Minimal Reproducible Example'
|
||||
description: |
|
||||
Please provide a the _smallest, complete code snippet_ that Appium's maintainers can run to reproduce the issue ([read more about what this entails](https://stackoverflow.com/help/minimal-reproducible-example)). Failing this, any sort of reproduction steps are better than nothing!
|
||||
|
||||
An easy way to get started is to copy [sample code](https://github.com/appium/appium/tree/master/packages/appium/sample-code) and modify it accordingly.
|
||||
|
||||
If the result is more than a screenful of text _or_ requires multiple files, please:
|
||||
|
||||
- _Attach_ (do not paste) it to this textarea, _or_
|
||||
- Put it in a [Gist](https://gist.github.com) and paste the link, _or_
|
||||
- Provide a link to a new or existing public repository exhibiting the issue
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 'Environment'
|
||||
description: 'Please provide the following information about your environment; feel free to remove any items which are not relevant.'
|
||||
value: |
|
||||
- Operating system:
|
||||
- If running via `appium` CLI...
|
||||
- Appium CLI version (output of `appium --version`):
|
||||
- Node.js version (output of `node --version`):
|
||||
- `npm` version (output of `npm --version`):
|
||||
- Last `appium` version which did _not_ exhibit the problem:
|
||||
- If running Appium Desktop, its version:
|
||||
- Appium driver(s) and their version(s):
|
||||
- Appium plugin(s) and their version(s):
|
||||
- Platform and version under test:
|
||||
- Real device or emulator/simulator:
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
attributes:
|
||||
label: 'Link to Appium Logs'
|
||||
description: |
|
||||
Create a [Gist](https://gist.github.com)—which contains your _full_ Appium logs—and link it here. Alternatively, you can attach a logfile to this issue (drag it into the "Further Information" field below).
|
||||
|
||||
:warning: _Remember to redact or remove any sensitive information!_
|
||||
placeholder: 'https://gist.github.com/...'
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Futher Information
|
||||
description: |
|
||||
Links? References? Anything that will give us more context about the issue you are encountering!
|
||||
|
||||
_Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in._
|
||||
validations:
|
||||
required: false
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: ':stop_sign: _For support questions, please visit [http://discuss.appium.io](http://discuss.appium.io) instead._'
|
||||
@@ -1,20 +0,0 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: "[Feat]:"
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
@@ -17,7 +17,7 @@ _Put an `x` in the boxes that apply_
|
||||
_Put an `x` in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code._
|
||||
|
||||
- [ ] I have read the [CONTRIBUTING](https://github.com/appium/appium/blob/master/CONTRIBUTING.md) doc
|
||||
- [ ] I have signed the CLA
|
||||
- [ ] I have signed the [CLA](https://cla.js.foundation/appium/appium)
|
||||
- [ ] Lint and unit tests pass locally with my changes
|
||||
- [ ] I have added tests that prove my fix is effective or that my feature works
|
||||
- [ ] I have added necessary documentation (if appropriate)
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: npm
|
||||
directory: "/sample-code/javascript-webdriverio"
|
||||
schedule:
|
||||
interval: daily
|
||||
time: "11:00"
|
||||
open-pull-requests-limit: 10
|
||||
- package-ecosystem: npm
|
||||
directory: "/sample-code/javascript-wd"
|
||||
schedule:
|
||||
interval: daily
|
||||
time: "11:00"
|
||||
open-pull-requests-limit: 10
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: daily
|
||||
time: "11:00"
|
||||
open-pull-requests-limit: 10
|
||||
@@ -1,154 +0,0 @@
|
||||
version: v1
|
||||
|
||||
labels:
|
||||
- label: 'Enhancement'
|
||||
sync: true
|
||||
matcher:
|
||||
commits: '^feat.*?:'
|
||||
title: '^feat.*?:'
|
||||
|
||||
- label: 'Bug'
|
||||
sync: true
|
||||
matcher:
|
||||
commits: '^fix.*?:'
|
||||
title: '^fix.*?:'
|
||||
|
||||
- label: 'Documentation'
|
||||
sync: true
|
||||
matcher:
|
||||
commits: '^docs.*?:'
|
||||
title: '^docs.*?:'
|
||||
files: ['packages/docutils/**', 'packages/appium/docs/**', '**/*.md']
|
||||
|
||||
- label: 'chore'
|
||||
sync: true
|
||||
matcher:
|
||||
commits: '^chore.*?:'
|
||||
title: '^chore.*?:'
|
||||
files: ['.github/**', '.husky/**', '.vscode/**', './.*', './*.js', '**/test/**']
|
||||
|
||||
- label: 'SemVer:Breaking'
|
||||
sync: true
|
||||
matcher:
|
||||
commits: '(^(.+?)!:)|(BREAKING CHANGE:)'
|
||||
|
||||
- label: 'Dependencies'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['**/package.json', 'package-lock.json', '**/requirements.txt']
|
||||
author: 'renovate'
|
||||
|
||||
- label: 'appium core'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/appium/**']
|
||||
|
||||
- label: '@appium/base-driver'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/base-driver/**']
|
||||
|
||||
- label: '@appium/eslint-config-appium'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/eslint-config-appium/**']
|
||||
|
||||
- label: '@appium/eslint-config-appium-ts'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/eslint-config-appium-ts/**']
|
||||
|
||||
- label: '@appium/base-plugin'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/base-plugin/**']
|
||||
|
||||
- label: '@appium/doctor'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/doctor/**']
|
||||
|
||||
- label: '@appium/docutils'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/docutils/**']
|
||||
|
||||
- label: '@appium/driver-test-support'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/driver-test-support/**']
|
||||
|
||||
- label: '@appium/execute-driver-plugin'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/execute-driver-plugin/**']
|
||||
|
||||
- label: '@appium/fake-driver'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/fake-driver/**']
|
||||
|
||||
- label: '@appium/fake-plugin'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/fake-plugin/**']
|
||||
|
||||
- label: '@appium/images-plugin'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/images-plugin/**']
|
||||
|
||||
- label: '@appium/opencv'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/opencv/**']
|
||||
|
||||
- label: '@appium/plugin-test-support'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/plugin-test-support/**']
|
||||
|
||||
- label: '@appium/relaxed-caps-plugin'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/relaxed-caps-plugin/**']
|
||||
|
||||
- label: '@appium/schema'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/schema/**']
|
||||
|
||||
- label: '@appium/support'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/support/**']
|
||||
|
||||
- label: '@appium/test-support'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/test-support/**']
|
||||
|
||||
- label: '@appium/tsconfig'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/tsconfig/**']
|
||||
|
||||
- label: '@appium/typedoc-plugin-appium'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/typedoc-plugin-appium/**']
|
||||
|
||||
- label: '@appium/types'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/types/**']
|
||||
|
||||
- label: '@appium/universal-xml-plugin'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/universal-xml-plugin/**']
|
||||
|
||||
- label: '@appium/strongbox'
|
||||
sync: true
|
||||
matcher:
|
||||
files: ['packages/strongbox/**']
|
||||
@@ -1,16 +0,0 @@
|
||||
name: Labeler
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [opened, synchronize]
|
||||
branches: [master]
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
labeler:
|
||||
permissions:
|
||||
pull-requests: write
|
||||
name: Auto-Label PRs
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: fuxingloh/multi-labeler@6704db0bcba106d07482efabbc79d3092af74fa2 # v2
|
||||
@@ -1,84 +0,0 @@
|
||||
name: Appium Build
|
||||
on:
|
||||
push:
|
||||
# this list of paths could potentially impact the build
|
||||
paths:
|
||||
- '**/tsconfig*.json'
|
||||
- 'packages/base-driver/static/**/*'
|
||||
- 'packages/*/test/**'
|
||||
- 'packages/*/bin'
|
||||
- 'packages/**/*.ts'
|
||||
- 'packages/**/*.json'
|
||||
- 'packages/**/*.js'
|
||||
- 'package*.json'
|
||||
- 'lerna.json'
|
||||
- '.npmrc'
|
||||
- '.mocharc.js'
|
||||
- '.github/workflows/build.yml' # this file
|
||||
- '.eslintrc'
|
||||
- '.eslintignore'
|
||||
- '!**/sample-code/**'
|
||||
- '!packages/*/docs/**'
|
||||
pull_request:
|
||||
paths:
|
||||
- '**/tsconfig*.json'
|
||||
- 'packages/base-driver/static/**/*'
|
||||
- 'packages/*/test/**'
|
||||
- 'packages/*/bin'
|
||||
- 'packages/**/*.ts'
|
||||
- 'packages/**/*.json'
|
||||
- 'packages/**/*.js'
|
||||
- 'package*.json'
|
||||
- 'lerna.json'
|
||||
- '.npmrc'
|
||||
- '.mocharc.js'
|
||||
- '.github/workflows/build.yml' # this file
|
||||
- '.eslintrc'
|
||||
- '.eslintignore'
|
||||
- '!**/sample-code/**'
|
||||
- '!packages/*/docs/**'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Tests
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [14.x, 16.x, 18.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
- name: Install latest npm
|
||||
run: npm install -g npm
|
||||
- name: Install dependencies
|
||||
uses: bahmutov/npm-install@1a235c31658a322a3b024444759650ee6345c26d # tag=v1
|
||||
with:
|
||||
useRollingCache: true
|
||||
install-command: npm ci --foreground-scripts
|
||||
- name: Run smoke, unit & E2E tests
|
||||
run: npm run test:ci
|
||||
|
||||
lint:
|
||||
name: Lint
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3
|
||||
- name: Install dependencies
|
||||
uses: bahmutov/npm-install@1a235c31658a322a3b024444759650ee6345c26d # tag=v1
|
||||
with:
|
||||
useRollingCache: true
|
||||
install-command: npm ci
|
||||
- name: ESLint
|
||||
run: npm run lint:ci
|
||||
- name: Validate Renovate Config
|
||||
uses: rinchsan/renovate-config-validator@1ea1e8514f6a33fdd71c40b0a5fa3512b9e7b936 # tag=v0
|
||||
with:
|
||||
pattern: '{.renovaterc.json,renovate/default.json}'
|
||||
@@ -1,36 +0,0 @@
|
||||
name: Cache Cleanup
|
||||
|
||||
# from https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#usage-limits-and-eviction-policy
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types:
|
||||
- closed
|
||||
|
||||
jobs:
|
||||
cleanup:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3
|
||||
|
||||
- name: Cleanup
|
||||
run: |
|
||||
gh extension install actions/gh-actions-cache
|
||||
|
||||
REPO=${{ github.repository }}
|
||||
BRANCH="refs/pull/${{ github.event.pull_request.number }}/merge"
|
||||
|
||||
echo "Fetching list of cache keys"
|
||||
cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH | cut -f 1 )
|
||||
|
||||
## Setting this to not fail the workflow while deleting cache keys.
|
||||
set +e
|
||||
echo "Deleting caches..."
|
||||
for cacheKey in $cacheKeysForPR
|
||||
do
|
||||
gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm
|
||||
done
|
||||
echo "Done"
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -1,58 +0,0 @@
|
||||
name: Appium Deploy
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- master
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
check:
|
||||
name: Check
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
# node-version: [14.x, 16.x, 18.x]
|
||||
node-version: [16.x, 18.x]
|
||||
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||
steps:
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: Install Appium
|
||||
run: |
|
||||
if [[ "$GITHUB_REF_TYPE" == tag ]]; then
|
||||
npm i -g $GITHUB_REF_NAME
|
||||
else
|
||||
npm i -g appium@next
|
||||
fi
|
||||
shell: bash
|
||||
- name: Install drivers and plugins
|
||||
run: |
|
||||
if grep -q macos <<< ${{ matrix.os }}; then
|
||||
appium driver install xcuitest
|
||||
fi
|
||||
appium driver install uiautomator2
|
||||
appium plugin install images
|
||||
shell: bash
|
||||
- name: Verify installation
|
||||
run: |
|
||||
installed_drivers=$(appium driver list --installed 2>&1)
|
||||
if grep -q macos <<< ${{ matrix.os }}; then
|
||||
grep -q xcuitest <<< $installed_drivers
|
||||
fi
|
||||
grep -q uiautomator2 <<< $installed_drivers
|
||||
installed_plugins=$(appium plugin list --installed 2>&1)
|
||||
grep -q images <<< $installed_plugins
|
||||
shell: bash
|
||||
- name: Verify Appium could be executed
|
||||
run: |
|
||||
appium --use-plugins=images &
|
||||
pid=$(echo $!)
|
||||
sleep 5
|
||||
ps -p $pid || exit 1
|
||||
kill -2 $pid
|
||||
shell: bash
|
||||
@@ -1,46 +0,0 @@
|
||||
name: Build Docs
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
paths:
|
||||
- '**/typedoc.json'
|
||||
- '**/tsconfig*.json'
|
||||
- '**/package*.json'
|
||||
- '**/*mkdocs*.ya?ml'
|
||||
- 'packages/docutils/requirements.txt'
|
||||
- 'packages/*/README.md'
|
||||
- 'packages/*/docs/**'
|
||||
- 'packages/*/**/*.ts'
|
||||
- 'packages/*/**/*.js'
|
||||
- '.github/workflows/docs.yml' # this file
|
||||
- '!**/test/**'
|
||||
- '!**/sample-code/**'
|
||||
|
||||
branches: [master]
|
||||
|
||||
concurrency: preview-${{ github.ref }}
|
||||
|
||||
jobs:
|
||||
docs:
|
||||
name: Docs
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3
|
||||
- name: Install dependencies (Node.js)
|
||||
uses: bahmutov/npm-install@1a235c31658a322a3b024444759650ee6345c26d # tag=v1
|
||||
with:
|
||||
useRollingCache: true
|
||||
install-command: npm ci
|
||||
- name: Install dependencies (Python)
|
||||
run: pip install -r packages/docutils/requirements.txt
|
||||
- name: Configure Git User
|
||||
run: |
|
||||
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
||||
git config --local user.name "github-actions[bot]"
|
||||
- name: Build Docs
|
||||
run: npm run docs:preview
|
||||
- name: Deploy Preview
|
||||
uses: rossjrw/pr-preview-action@2a652922e9b9c53e7e5ea62fa38da744de09043c # v1
|
||||
with:
|
||||
source-dir: ./packages/appium/docs/site
|
||||
custom-url: 'appium.github.io/appium'
|
||||
@@ -1,26 +0,0 @@
|
||||
name: License Checks
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
fossa-check:
|
||||
name: Run FOSSA Analysis
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3
|
||||
with:
|
||||
ref: master
|
||||
- name: Install dependencies
|
||||
uses: bahmutov/npm-install@cb39a46f27f14697fec763d60fb23ad347e2befa # tag=v1
|
||||
- name: Install fossa-cli
|
||||
run: ./scripts/install-fossa.sh -d
|
||||
- name: Run FOSSA analysis
|
||||
run: |
|
||||
fossa analyze
|
||||
fossa test
|
||||
env:
|
||||
FOSSA_API_KEY: ${{secrets.FOSSA_API_KEY}}
|
||||
@@ -1,15 +0,0 @@
|
||||
name: Disallow "On Hold" PRs
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [opened, labeled, unlabeled, synchronize]
|
||||
branches: [master]
|
||||
|
||||
jobs:
|
||||
label-check:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check for "On Hold" label
|
||||
uses: egmacke/action-check-label@0eb29f801fb482a95c9bd2dd22834ecc8f4e8af9 # v2
|
||||
with:
|
||||
label: On Hold
|
||||
state: absent
|
||||
+16
-25
@@ -2,20 +2,21 @@
|
||||
*.swp
|
||||
.DS_Store
|
||||
node_modules
|
||||
package-lock.json
|
||||
*.trace
|
||||
xcuserdata
|
||||
*.sublime-*
|
||||
test/functional/_joined
|
||||
*.iml
|
||||
!examples/java/*.iml
|
||||
!sample-code/java/*.iml
|
||||
*.autosave
|
||||
.idea/
|
||||
!examples/java/.idea/
|
||||
!sample-code/java/.idea/
|
||||
*.log
|
||||
*.t
|
||||
artifacts
|
||||
input
|
||||
./output
|
||||
output
|
||||
lib/devices/android/bootstrap/bin/*
|
||||
lib/devices/android/bootstrap/local.properties
|
||||
lib/devices/android/bootstrap/project.properties
|
||||
@@ -39,26 +40,16 @@ old
|
||||
.tern-project
|
||||
coverage
|
||||
docs/mkdocs.yml
|
||||
examples/javascript-wd/node_modules
|
||||
examples/php/vendor
|
||||
examples/php/composer.lock
|
||||
examples/java/out/
|
||||
examples/ruby/Gemfile.lock
|
||||
examples/python/test/results/
|
||||
examples/python/test/input
|
||||
examples/python/.pytest_cache/
|
||||
examples/csharp/test/bin
|
||||
examples/csharp/test/obj
|
||||
examples/csharp/test/bin
|
||||
examples/csharp/packages
|
||||
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
|
||||
sample-code/csharp/test/bin
|
||||
sample-code/csharp/packages
|
||||
appium.zip
|
||||
.vscode/settings.json
|
||||
.nyc_output
|
||||
*.lerna_backup
|
||||
**/build-fixtures/**
|
||||
*.tsbuildinfo
|
||||
packages/*/LICENSE
|
||||
local_appium_home
|
||||
*.tgz
|
||||
typedoc-docs
|
||||
packages/appium/docs/*/reference
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/usr/bin/env sh
|
||||
. "$(dirname -- "$0")/_/husky.sh"
|
||||
|
||||
npm run lint:commit -- --edit ${1}
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/usr/bin/env sh
|
||||
. "$(dirname -- "$0")/_/husky.sh"
|
||||
|
||||
npm run lint:staged
|
||||
@@ -1,11 +0,0 @@
|
||||
module.exports = {
|
||||
'*.js': ['eslint --fix', 'prettier --write'],
|
||||
'*.ts': ['prettier --write'],
|
||||
'appium-config-schema.js': () => [
|
||||
'npm run --workspace=./packages/schema build',
|
||||
'git add -A packages/schema/lib/appium-config.schema.json',
|
||||
'npm run --workspace=./packages/types build',
|
||||
'git add -A packages/types/lib/appium-config.ts',
|
||||
],
|
||||
'!(package|package-lock)*.json': ['prettier --write'],
|
||||
};
|
||||
-12
@@ -1,12 +0,0 @@
|
||||
// @ts-check
|
||||
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
require: [require.resolve('./test/setup.js')],
|
||||
// forbids use of .only() in CI
|
||||
forbidOnly: Boolean(process.env.CI),
|
||||
color: true,
|
||||
// increase default timeout for CI since it can be slow
|
||||
timeout: process.env.CI ? '5s' : '2s',
|
||||
};
|
||||
@@ -1,4 +1,2 @@
|
||||
# Do not disable package-lock. Disabling package-lock also disables npm-shrinkwrap
|
||||
package-lock=true
|
||||
save-exact=true
|
||||
foreground-scripts=true
|
||||
package-lock=true
|
||||
@@ -1,13 +0,0 @@
|
||||
**/node_modules/**
|
||||
**/build/**
|
||||
**/fixtures/**
|
||||
**/*.min.*
|
||||
**/*.md
|
||||
package-lock.json
|
||||
package.json
|
||||
**/.vscode/**
|
||||
**/*.html
|
||||
**/generated/**
|
||||
# generated
|
||||
packages/types/lib/appium-config.ts
|
||||
**/*.hbs
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": ["github>appium/appium//renovate/default"],
|
||||
"schedule": ["after 10pm and before 5:00am"],
|
||||
"timezone": "America/Vancouver"
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
language: node_js
|
||||
node_js: "10"
|
||||
os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- g++-4.8
|
||||
- build-essential
|
||||
env:
|
||||
global:
|
||||
- CXX=g++-4.8
|
||||
cache:
|
||||
npm: false
|
||||
jobs:
|
||||
include:
|
||||
- stage: Tests
|
||||
name: node 10
|
||||
before_script: npm outdated || true
|
||||
script: npm run test && npm run e2e-test
|
||||
after_script: npm run coverage
|
||||
- stage:
|
||||
name: node 12
|
||||
before_script: npm outdated || true
|
||||
script: npm run test && npm run e2e-test
|
||||
node_js: "12"
|
||||
- stage:
|
||||
name: test documentation generation
|
||||
script: npm run generate-docs
|
||||
Vendored
+45
-65
@@ -1,66 +1,46 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"args": [
|
||||
"--log-level=debug"
|
||||
],
|
||||
"console": "integratedTerminal",
|
||||
"cwd": "${workspaceFolder}",
|
||||
"env": {
|
||||
"_FORCE_LOGS": "1"
|
||||
},
|
||||
"internalConsoleOptions": "openOnSessionStart",
|
||||
"name": "Run Appium",
|
||||
"program": "${workspaceFolder}/node_modules/.bin/appium",
|
||||
"request": "launch",
|
||||
"skipFiles": [
|
||||
"<node_internals>/**"
|
||||
],
|
||||
"sourceMaps": true,
|
||||
"type": "node"
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"--colors",
|
||||
"--no-timeout",
|
||||
"${file}"
|
||||
],
|
||||
"autoAttachChildProcesses": true,
|
||||
"console": "integratedTerminal",
|
||||
"cwd": "${workspaceFolder}",
|
||||
"internalConsoleOptions": "openOnSessionStart",
|
||||
"name": "Test Current File w/ Mocha",
|
||||
"program": "${workspaceFolder}/node_modules/.bin/mocha",
|
||||
"request": "launch",
|
||||
"runtimeArgs": [
|
||||
"--require",
|
||||
"ts-node/register"
|
||||
],
|
||||
"skipFiles": [
|
||||
"<node_internals>/**",
|
||||
"**/node_modules/mocha/**",
|
||||
"**/node_modules/lodash/**",
|
||||
"**/node_modules/ts-node/**"
|
||||
],
|
||||
"sourceMaps": true,
|
||||
"type": "node"
|
||||
},
|
||||
{
|
||||
"console": "integratedTerminal",
|
||||
"cwd": "${workspaceFolder}",
|
||||
"internalConsoleOptions": "openOnSessionStart",
|
||||
"name": "Typedoc",
|
||||
"program": "${workspaceFolder}/node_modules/.bin/typedoc",
|
||||
"args": ["--logLevel", "Verbose"],
|
||||
"request": "launch",
|
||||
"skipFiles": [
|
||||
"<node_internals>/**",
|
||||
"**/node_modules/lodash/**",
|
||||
"**/node_modules/**/handlebars/**"
|
||||
],
|
||||
"sourceMaps": true,
|
||||
"type": "node"
|
||||
}
|
||||
],
|
||||
"version": "0.2.0"
|
||||
}
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Debug",
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"cwd": "${workspaceFolder}",
|
||||
"console": "integratedTerminal",
|
||||
"args": [
|
||||
"."
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Attach Debug",
|
||||
"type": "node",
|
||||
"request": "attach",
|
||||
"cwd": "${workspaceFolder}",
|
||||
"port": 9229
|
||||
},
|
||||
{
|
||||
"name": "Test All",
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"program": "${workspaceFolder}/node_modules/.bin/_mocha",
|
||||
"args": [
|
||||
"--require", "babel-core/register",
|
||||
"--timeout", "999999",
|
||||
"--colors",
|
||||
"${workspaceFolder}/test"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Test Current File",
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"program": "${workspaceFolder}/node_modules/.bin/_mocha",
|
||||
"args": [
|
||||
"--require", "babel-core/register",
|
||||
"--timeout", "999999",
|
||||
"--colors",
|
||||
"${file}"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Vendored
-27
@@ -1,27 +0,0 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"type": "npm",
|
||||
"script": "dev",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
},
|
||||
"problemMatcher": [
|
||||
"$tsc-watch"
|
||||
],
|
||||
"label": "npm: dev",
|
||||
"detail": "npm run dev",
|
||||
"isBackground": true
|
||||
},
|
||||
{
|
||||
"type": "npm",
|
||||
"script": "typedoc",
|
||||
"problemMatcher": [],
|
||||
"label": "npm: typedoc",
|
||||
"detail": "typedoc --logLevel Verbose",
|
||||
"group": "build"
|
||||
}
|
||||
]
|
||||
}
|
||||
-74
@@ -1,74 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = (wallaby) => {
|
||||
return {
|
||||
compilers: {
|
||||
'**/*.js': wallaby.compilers.typeScript({
|
||||
allowJs: true,
|
||||
allowSyntheticDefaultImports: true,
|
||||
resolveJsonModule: true,
|
||||
isolatedModules: true,
|
||||
}),
|
||||
'**/*.ts?(x)': wallaby.compilers.typeScript(),
|
||||
},
|
||||
debug: true,
|
||||
env: {
|
||||
type: 'node',
|
||||
},
|
||||
files: [
|
||||
'./packages/*/build/**/*',
|
||||
'./packages/*/lib/**/*.{js,ts}',
|
||||
'./packages/*/test/**/*helper*.{js,ts}',
|
||||
'./packages/*/test/**/*mock*.{js,ts}',
|
||||
'./packages/*/package.json',
|
||||
'./packages/*/tsconfig*.json',
|
||||
'./packages/*/test/**/fixture?(s)/**/*',
|
||||
{
|
||||
instrument: false,
|
||||
pattern: './packages/typedoc-plugin-appium/resources/**/*',
|
||||
},
|
||||
{
|
||||
binary: true,
|
||||
pattern: './packages/support/test/unit/assets/sample_binary.plist',
|
||||
},
|
||||
{
|
||||
instrument: false,
|
||||
pattern: './packages/support/test/unit/assets/sample_text.plist',
|
||||
},
|
||||
{
|
||||
instrument: false,
|
||||
pattern: './packages/base-driver/static/**/*',
|
||||
},
|
||||
{
|
||||
instrument: false,
|
||||
pattern: './packages/typedoc-plugin-appium/lib/theme/resources/**',
|
||||
},
|
||||
'!./packages/*/test/**/*-specs.js',
|
||||
'!./packages/*/test/**/*.e2e.spec.{js,ts}',
|
||||
'!**/local_appium_home/**',
|
||||
],
|
||||
testFramework: 'mocha',
|
||||
tests: ['./packages/*/test/unit/**/*.spec.{js,ts}', '!**/local_appium_home/**'],
|
||||
workers: {
|
||||
// restart: true,
|
||||
},
|
||||
setup(wallaby) {
|
||||
// copied out of `./test/setup.js`
|
||||
|
||||
const chai = require('chai');
|
||||
const chaiAsPromised = require('chai-as-promised');
|
||||
const sinonChai = require('sinon-chai');
|
||||
|
||||
// The `chai` global is set if a test needs something special.
|
||||
// Most tests won't need this.
|
||||
global.chai = chai.use(chaiAsPromised).use(sinonChai);
|
||||
|
||||
// `should()` is only necessary when working with some `null` or `undefined` values.
|
||||
global.should = chai.should();
|
||||
|
||||
const mocha = wallaby.testFramework;
|
||||
mocha.timeout(10000);
|
||||
},
|
||||
runMode: 'onsave',
|
||||
};
|
||||
};
|
||||
+1
-315
@@ -1,317 +1,3 @@
|
||||
CHANGES IN VERSION 1.22.3 (FROM 1.22.2)
|
||||
===================================
|
||||
|
||||
Appium 1.22.3 is a patch release
|
||||
|
||||
We're going to move to [Appium 2.x](https://github.com/appium/appium/blob/2.0/docs/en/about-appium/1.x-eol.md).
|
||||
Appium 1.x will be receiving minor or patch releases only if XCTest gets breaking updates or major bugs pop up before the EOL.
|
||||
|
||||
### iOS(XCUITest)
|
||||
|
||||
- Fix failing screenshot issue in Xcode 13.3 and iOS 15.4 combination [WebDriverAgent#573](https://github.com/appium/WebDriverAgent/pull/573)
|
||||
- Please read [the original issue](https://github.com/appium/appium/issues/16604) for more details
|
||||
|
||||
CHANGES IN VERSION 1.22.2 (FROM 1.22.1)
|
||||
===================================
|
||||
|
||||
Appium 1.22.2 is a patch release
|
||||
|
||||
We're going to move to [Appium 2.x](https://github.com/appium/appium/blob/2.0/docs/en/about-appium/1.x-eol.md).
|
||||
Appium 1.x will be receiving minor or patch releases only if XCTest gets breaking updates or major bugs pop up before the EOL.
|
||||
|
||||
### iOS(XCUITest)
|
||||
|
||||
- Add `safariTabBarPosition` settings api to help `nativeWebTap` capability/setting consider if the device has the tab bar at the top or at the bottom of Safari window. Please read `safariTabBarPosition` in [Settings API](https://github.com/appium/appium-xcuitest-driver#settings-api) for more details [appium-xcuitest-driver#1361](https://github.com/appium/appium-xcuitest-driver/pull/1361)
|
||||
- Do not show the keyboard tutorial in iOS 15 environment for simulators [appium-ios-simulator#315](https://github.com/appium/appium-ios-simulator/pull/315)
|
||||
- Fix to pass installation options in [Install App](http://appium.io/docs/en/commands/device/app/install-app/) command [appium-xcuitest-driver#1357](https://github.com/appium/appium-xcuitest-driver/pull/1357)
|
||||
- Disable the default XCTest's notification checker to avoid [an issue on iOS 15.2](https://github.com/appium/appium/issues/16025) [WebDriverAgent#540](https://github.com/appium/WebDriverAgent/pull/540)
|
||||
- Slightly improve the performance of XML source generation [appium-xcuitest-driver#1351](https://github.com/appium/appium-xcuitest-driver/pull/1351) [WebDriverAgent#544](https://github.com/appium/WebDriverAgent/pull/544)
|
||||
|
||||
CHANGES IN VERSION 1.22.1 (FROM 1.22.0)
|
||||
===================================
|
||||
|
||||
Appium 1.22.1 is a patch release
|
||||
|
||||
We're going to move to [Appium 2.x](https://github.com/appium/appium/blob/2.0/docs/en/about-appium/1.x-eol.md).
|
||||
Appium 1.x will be receiving minor or patch releases only if XCTest gets breaking updates or major bugs pop up before the EOL.
|
||||
|
||||
### General
|
||||
* Enforce unzip with JS implementation when `APPIUM_PREFER_SYSTEM_UNZIP` environment variable is given as `0` or `false` [appium-base-driver#537](https://github.com/appium/appium-base-driver/pull/537)
|
||||
* This change may fix [installation error in iOS simulators](https://github.com/appium/appium/issues/16050)
|
||||
|
||||
### Android General
|
||||
|
||||
* Use bundletool to install .apks packages [appium-adb#578](https://github.com/appium/appium-adb/pull/578)
|
||||
* Handle unlock via `locksettings` adb command [appium-adb#577](https://github.com/appium/appium-adb/pull/577)
|
||||
* Add a tiny delay after changing IME for Android 12 [appium-adb#581](https://github.com/appium/appium-adb/pull/581)
|
||||
|
||||
### Android(UIAutomator2)
|
||||
|
||||
* Add capabilities:
|
||||
* `unlockStrategy` to customize the strategy of unlock. Defaults to `locksettings` on Android 8+, where this adb shell command is supported. The previous behavior is `uiautomator`.
|
||||
* `chromeLoggingPrefs` to configure chrome logging preferences mapping [appium-android-driver#710](https://github.com/appium/appium-android-driver/pull/710)
|
||||
* Add `mobile:` extensions:
|
||||
* `mobile:unlock` to unlock the device as a mobile command [appium-android-driver#709](https://github.com/appium/appium-android-driver/pull/709)
|
||||
* Fix `/appium/device/display_density` endpoint to get the device density on Android 12 by getting it via Android API instead of adb command [appium-uiautomator2-driver#474](https://github.com/appium/appium-uiautomator2-driver/pull/474) [appium-uiautomator2-server#444](https://github.com/appium/appium-uiautomator2-server/pull/444)
|
||||
* XPath locators now support [XPath 2.0](https://www.w3.org/TR/xpath20/) specification. XPath 2.0 is backward compatible to v 1.0, which means the most of existing queries should still work as expected. However, more advanced queries might require updates due to the strict type checking. See [issues#16142](https://github.com/appium/appium/issues/16142) [appium-uiautomator2-server#442](https://github.com/appium/appium-uiautomator2-server/pull/442) for more details.
|
||||
|
||||
### iOS(XCUITest)
|
||||
|
||||
* Decode cookies safely in WebView context [appium-xcuitest-driver#1336](https://github.com/appium/appium-xcuitest-driver/pull/1336)
|
||||
* Tune alert monitoring [appium-xcuitest-driver#1340](https://github.com/appium/appium-xcuitest-driver/pull/1340)
|
||||
* Add capabilities:
|
||||
* `appInstallStrategy` capability to customize the application installation strategy. `serial`, `parallel` and `ios-deploy` are available. Please read [capabilities](https://github.com/appium/appium-xcuitest-driver#app) for more details. This strategy is available via installation APIs as well.
|
||||
* Add `mobile:` extensions:
|
||||
* `mobile:listApps` to get the list of installed applications on the real device under test [appium-xcuitest-driver#1342](https://github.com/appium/appium-xcuitest-driver/pull/1342)
|
||||
* Add `NSProcessInfoThermalState` in [mobile: deviceInfo](https://github.com/appium/appium-xcuitest-driver#mobile-deviceinfo) [WebDriverAgent#536](https://github.com/appium/WebDriverAgent/pull/536)
|
||||
* Add `nativeWebTapTabBarVisibility` and `nativeWebTapTabBarVisibility` Settings API items to handle _tab bar_ and _smart app banner_ via Settings API [appium-xcuitest-driver#1345](https://github.com/appium/appium-xcuitest-driver/pull/1345) (Thanks @zcmgyu)
|
||||
* Fix `useXctestrunFile` capability behavior on Xcode 13 [WebDriverAgent#538](https://github.com/appium/WebDriverAgent/pull/538)
|
||||
* Fix caching elements from `execute_script` in WebView context [appium-xcuitest-driver#1350](https://github.com/appium/appium-xcuitest-driver/pull/1350)
|
||||
* Fix `<` escape in the XML page source (`"appium:useJSONSource": false`) [appium-xcuitest-driver#1347](https://github.com/appium/appium-xcuitest-driver/pull/1347)
|
||||
* Disable the build in notification checker by XCTest to avoid possible UI interuction failure on Xcode 13.2 and iOS 15.2 [WebDriverAgent#540](https://github.com/appium/WebDriverAgent/pull/540)
|
||||
|
||||
|
||||
CHANGES IN VERSION 1.22.0 (FROM 1.21.0)
|
||||
===================================
|
||||
|
||||
Appium 1.22.0 is a minor release
|
||||
|
||||
We're going to move to [Appium 2.x](https://github.com/appium/appium/blob/2.0/docs/en/about-appium/1.x-eol.md).
|
||||
Appium 1.x will have minor or patch releases only when Appium 1.x gets breaking updates in XCTest or critical bugs before the EOL.
|
||||
|
||||
### General
|
||||
|
||||
* Add `imageMatchMethod` to be able to customize image mathcing method in [find element by image](http://appium.io/docs/en/advanced-concepts/image-elements/) [appium-base-driver#480](https://github.com/appium/appium-base-driver/pull/480) [appium-support#222](https://github.com/appium/appium-support/pull/222)
|
||||
* `appium:enableWebviewDetailsCollection` capability defaults to `true` [appium-android-driver#699](https://github.com/appium/appium-android-driver/pull/699) (Thanks @mwakizaka)
|
||||
* Support `satellites` option in `setGeoLocation` command as [geo command on emulators](https://developer.android.com/studio/run/emulator-console) [appium-adb#571](https://github.com/appium/appium-adb/pull/571)
|
||||
* Use system unzip to unzip compressed files by default. It fallbacks to JS implementation. [appium-support#226](https://github.com/appium/appium-support/pull/226) [appium-support#227](https://github.com/appium/appium-support/pull/227)
|
||||
|
||||
### Android General
|
||||
|
||||
* Add `pinWithKeyEvent` option as `unlockType` in [unlock action](https://github.com/appium/appium-android-driver/blob/master/docs/UNLOCK.md) to send the pin code as keyevent [appium-android-driver#691](https://github.com/appium/appium-android-driver/pull/691)
|
||||
* Allow to establish a chrome session with its `beta`, `dev` and `canary` [appium-android-driver#699](https://github.com/appium/appium-android-driver/pull/699) (Thanks @mwakizaka)
|
||||
* Optimize error handling in certificate validation [appium-adb#572](https://github.com/appium/appium-adb/pull/572)
|
||||
|
||||
### Android(UIAutomator2)
|
||||
* Add `mobile:` extensions:
|
||||
* `mobile:startActivity` to launch an activity more flexible. Please read [mobile: startActivity](https://github.com/appium/appium-uiautomator2-driver#mobile-startactivity) for more details [appium-android-driver#701](https://github.com/appium/appium-android-driver/pull/701)
|
||||
* `mobile: broadcast` to a send broadcast intent. Please read [mobile: broadcast](https://github.com/appium/appium-uiautomator2-driver#mobile-broadcast) for more details [appium-uiautomator2-driver/471](https://github.com/appium/appium-uiautomator2-driver/pull/471)
|
||||
* `mobile: clearApp` to delete a package data via `adb shell pm clear` [appium-uiautomator2-driver#472](https://github.com/appium/appium-uiautomator2-driver/pull/472)
|
||||
* Add active element support [appium-uiautomator2-driver#457](https://github.com/appium/appium-uiautomator2-driver/pull/457) [appium-uiautomator2-server#424](https://github.com/appium/appium-uiautomator2-server/pull/424) (Thanks @vane and @jzaleski)
|
||||
|
||||
### Android(Espresso)
|
||||
* The default Kotlin plugin version is 1.4.32 [appium-espresso-driver#663](https://github.com/appium/appium-espresso-driver/pull/663)
|
||||
* Fix typecast error in build config [appium-espresso-driver#683](https://github.com/appium/appium-espresso-driver/pull/683)
|
||||
|
||||
### iOS General
|
||||
|
||||
* Xcode 13 and iOS 15 support
|
||||
|
||||
### iOS(XCUITest)
|
||||
* Add capabilities:
|
||||
* `appium:useNativeCachingStrategy` to reduce a potential stale element error. Please read the capability in [XCUITest capabilities](https://github.com/appium/appium-xcuitest-driver#webdriveragent). Defaults to `true` [appium-xcuitest-driver#1317](https://github.com/appium/appium-xcuitest-driver/pull/1317)
|
||||
* `appium:forceAppLaunch` to launch the application under test forcefully with `appium:bundleId`. Defaults to `true` unless `noReset` capability is set to `true`. [appium-xcuitest-driver#1314](https://github.com/appium/appium-xcuitest-driver/pull/1314)
|
||||
* `appium:forceSimulatorSoftwareKeyboardPresence` to make force enabling simulator keyboard optional for simulator. Please read the section in [capabilities](https://github.com/appium/appium-xcuitest-driver#simulator) for more details. [appium-xcuitest-driver#1327](https://github.com/appium/appium-xcuitest-driver/pull/1327)
|
||||
* `appium:resetLocationService` to reset the location service in the session deletion on real device. [appium-xcuitest-driver#1333](https://github.com/appium/appium-xcuitest-driver/pull/1333)
|
||||
* Add `mobile:` extensions:
|
||||
* `mobile:configureLocalization` to change localization settings on the currently booted simulator. Please read [configurelocalization](https://github.com/appium/appium-xcuitest-driver#mobile-configurelocalization) for more details [appium-xcuitest-driver#1300](https://github.com/appium/appium-xcuitest-driver/pull/1300)
|
||||
* `mobile:resetLocationService` to reset the location service. [appium-xcuitest-driver#1333](https://github.com/appium/appium-xcuitest-driver/pull/1333)
|
||||
* Add `durationSeconds` argument in `mobile: pressButton` for tvOS
|
||||
* Add `getProperty` command to support [Get Element Property](https://www.w3.org/TR/webdriver/#dfn-get-element-property) endpoint. In native context, the command is equal to [Get Element Attribute](https://www.w3.org/TR/webdriver/#get-element-attribute) [appium-xcuitest-driver#1313](https://github.com/appium/appium-xcuitest-driver/pull/1313)
|
||||
* Update parsing logic to parse `:wdc:` element id by Safari Web inspector in WebView context [appium-xcuitest-driver#1324](https://github.com/appium/appium-xcuitest-driver/pull/1324) [appium#15230](https://github.com/appium/appium/issues/15230)
|
||||
* Probably the host macOS should have Safari 14.1
|
||||
* Improve alert checking logic in Web context [appium-xcuitest-driver#1320](https://github.com/appium/appium-xcuitest-driver/pull/1320)
|
||||
* Fix coordinate offset with `absoluteWebLocations` capability in Web context
|
||||
[appium-xcuitest-driver#1322](https://github.com/appium/appium-xcuitest-driver/pull/1322)
|
||||
* Fix element identification logic for over iOS 13 [WebDriverAgent#523](https://github.com/appium/WebDriverAgent/pull/523) (Thanks @Dan-Maor)
|
||||
* This fix may improve page source results in some environment
|
||||
* Fix visibility handling in `mobile:scroll` with `toVisible` argument [WebDriverAgent#528](https://github.com/appium/WebDriverAgent/pull/528) (Thanks @Dan-Maor)
|
||||
* Fix `velocity` argument in `mobile:swipe` [appium-xcuitest-driver#1329](https://github.com/appium/appium-xcuitest-driver/pull/1329)
|
||||
* Fix: `customSSLCert` capability logic [appium-xcuitest-driver#1334](https://github.com/appium/appium-xcuitest-driver/pull/1334)
|
||||
|
||||
### Mac2
|
||||
* Add `macos:` extensions:
|
||||
* Add support [swipe guestures](https://github.com/appium/appium-mac2-driver#mobile-swipe) [appium-mac2-driver#85](https://github.com/appium/appium-mac2-driver/pull/85)
|
||||
* Add `language` option in `macos: appleScript` to be able to use other languages supported by `osascript` [appium-mac2-driver#89](https://github.com/appium/appium-mac2-driver/pull/89)
|
||||
* Add support of touch bar interaction [appium-mac2-driver#87](https://github.com/appium/appium-mac2-driver/pull/87)
|
||||
* Fix handling of libxml2 client to prevent memory leaks [appium-mac2-driver#86](https://github.com/appium/appium-mac2-driver/pull/86)
|
||||
|
||||
## Windows
|
||||
* Add `windows:` extensions:
|
||||
* [`deleteFile`](https://github.com/appium/appium-windows-driver#windows-deletefile) and [`deleteFolder`](https://github.com/appium/appium-windows-driver#windows-deletefolder) [appium-windows-driver#107](https://github.com/appium/appium-windows-driver/pull/107) (Thanks @ggaller)
|
||||
* Add [push_file](https://appium.io/docs/en/commands/device/files/push-file/), [pull_file](https://appium.io/docs/en/commands/device/files/pull-file/), [pull_folder](https://appium.io/docs/en/commands/device/files/pull-folder/) [appium-windows-driver#107](https://github.com/appium/appium-windows-driver/pull/107) (Thanks @ggaller)
|
||||
* Tune WAD install path lookup [appium-windows-driver#111](https://github.com/appium/appium-windows-driver/pull/111) (Thanks to notice us @blakee1)
|
||||
|
||||
### Community/Company based drivers
|
||||
#### You.i Engine Driver
|
||||
|
||||
The version is `1.2.9`
|
||||
|
||||
#### Flutter driver
|
||||
|
||||
The version is `0.0.32`
|
||||
|
||||
|
||||
CHANGES IN VERSION 1.21.0 (FROM 1.20.2)
|
||||
===================================
|
||||
|
||||
Appium 1.21.0 is a minor release
|
||||
|
||||
### General
|
||||
|
||||
* Minimum NodeJS version moved to 12
|
||||
* Support multiple image matches for [Finding and Interacting with Image Elements](http://appium.io/docs/en/advanced-concepts/image-elements/) [appium-base-driver#449](https://github.com/appium/appium-base-driver/pull/449) (@khaong)
|
||||
|
||||
### Android General
|
||||
|
||||
* Disable sending of Google analytics data by instruments [appium-uiautomator2-driver#452](https://github.com/appium/appium-uiautomator2-driver/pull/452), [appium-espresso-driver#666](https://github.com/appium/appium-espresso-driver/pull/666)
|
||||
* Improve detection of screen lock status [appium/appium-adb#564](https://github.com/appium/appium-adb/pull/564)
|
||||
* Add `speed` optional parameter to mock location [appium-android-driver#681](https://github.com/appium/appium-android-driver/pull/681) (Thanks to @salabogdan)
|
||||
* Fix `autoLaunch` to install applications by `app` and `otherApps` capabilities, but does not launch them as same as iOS [appium-uiautomator2-driver#440](https://github.com/appium/appium-uiautomator2-driver/pull/440), [appium-espresso-driver#654](https://github.com/appium/appium-espresso-driver/pull/654), [appium-android-driver#676](https://github.com/appium/appium-android-driver/pull/676)
|
||||
* Fix to handle special characters by `mobile:type` [appium-adb#567](https://github.com/appium/appium-adb/pull/567)
|
||||
* Fix to switch to Web Views with same package name, but different process names [appium-android-driver#687](https://github.com/appium/appium-android-driver/pull/687)
|
||||
* Fix to stop screen recording after a session is closed [appium-android-driver#675](https://github.com/appium/appium-android-driver/pull/675) and each driver
|
||||
|
||||
### Android(UIAutomator2)
|
||||
|
||||
* Add `mobile:` extensions:
|
||||
* `mobile:doubleClickGesture` for double click guesture [appium-uiautomator2-driver#441](https://github.com/appium/appium-uiautomator2-driver/pull/441), [appium-uiautomator2-server#415](https://github.com/appium/appium-uiautomator2-server/pull/415)
|
||||
* `mobile:installMultipleApks` to install multiple apks via `adb install-multiple` command. Please read [mobile:installMultipleApks](https://github.com/appium/appium-uiautomator2-driver/blob/master/README.md#mobile-installmultipleapks) for more details
|
||||
* Fix XPath lookup for queries which have `@*` attribute pattern [appium-uiautomator2-server#417](https://github.com/appium/appium-uiautomator2-server/pull/417)
|
||||
|
||||
### Android(Espresso)
|
||||
|
||||
* Fix to raise an error in [Reset App](http://appium.io/docs/en/commands/device/app/reset-app/). It must quit the session and create a new one in Espresso driver. [appium-espresso-driver#649](https://github.com/appium/appium-espresso-driver/pull/649)
|
||||
* Fix to reset instrumentation state before starting a new instance [appium-espresso-driver#662](https://github.com/appium/appium-espresso-driver/pull/662)
|
||||
* Gradle wrapper has been rewritten using Kotlin DSL [appium-espresso-driver#658](https://github.com/appium/appium-espresso-driver/pull/658), [appium-espresso-driver#659](https://github.com/appium/appium-espresso-driver/pull/659) (Thanks to @misa)
|
||||
|
||||
### iOS General
|
||||
|
||||
* Xcode 12.5 support
|
||||
|
||||
### iOS(XCUITest)
|
||||
|
||||
* Add capabilities:
|
||||
* `appium:includeDeviceCapsToSessionInfo` to skip adding the screen information in order to improve [Get Session Capabilities](http://appium.io/docs/en/commands/session/get/) API. `mobile:viewportRect` and `mobile:deviceScreenInfo` help to get these information when this capability is `false`. [appium-xcuitest-driver#1278](https://github.com/appium/appium-xcuitest-driver/pull/1278)
|
||||
* `appium:disableAutomaticScreenshots` to handle automatic screenshot by XCTest. Defaults to `true` [appium-xcuitest-driver#1288](https://github.com/appium/appium-xcuitest-driver/pull/1288) (@mrmacete)
|
||||
* `appium:shouldTerminateApp` to handle if Appium terminates the application under test process on the session end. Defaults to `true` [appium-xcuitest-driver#1290](https://github.com/appium/appium-xcuitest-driver/pull/1290), [WebDriverAgent#486/](https://github.com/appium/WebDriverAgent/pull/486/) (Thanks to @mrmacete)
|
||||
* Add `mobile:` extensions:
|
||||
* `mobile:viewportRect` returns the screen viewport information which is part of [Get Session Capabilities](http://appium.io/docs/en/commands/session/get/)
|
||||
* `mobile:deviceScreenInfo` returns the screen information which is part of [Get Session Capabilities](http://appium.io/docs/en/commands/session/get/), [WebDriverAgent#483](https://github.com/appium/WebDriverAgent/pull/483)
|
||||
* `mobile:pushNotification` to simulator push notification on simulator by `xcrun simctl push` command. It requires Xcode 11.4+. Please read [mobile:pushNotification](https://github.com/appium/appium-xcuitest-driver#mobile-pushnotification) for mroe details to trigger a push notification. [appium-xcuitest-driver#1286](https://github.com/appium/appium-xcuitest-driver/pull/1286/)
|
||||
* `mobile:expectNotification` to wait for a notification on the device under test. Please read [mobile:expectNotification](https://github.com/appium/appium-xcuitest-driver#mobile-pushnotification) for more information on how to use it. [appium-xcuitest-driver#1287](https://github.com/appium/appium-xcuitest-driver/pull/1287) [WebDriverAgent#480](https://github.com/appium/WebDriverAgent/pull/480)
|
||||
* `mobile:performIoHidEvent` to emulate low-level IO HID device events. Read [mobile:performIoHidEvent](https://github.com/appium/appium-xcuitest-driver#mobile-performiohidevent) for more details. [appium-xcuitest-driver#1291](https://github.com/appium/appium-xcuitest-driver/pull/1291), [WebDriverAgent#494](https://github.com/appium/WebDriverAgent/pull/494)
|
||||
* Add css selector support [appium-xcuitest-driver#1274](https://github.com/appium/appium-xcuitest-driver/pull/1274)
|
||||
* `css selector` selector will be converted to `-ios class chain` selector
|
||||
* Support [Get Geolocation](https://appium.io/docs/en/commands/session/geolocation/get-geolocation/) API [appium-xcuitest-driver#1266](https://github.com/appium/appium-xcuitest-driver/pull/1266)
|
||||
* _Allow Location Access_ in _Location Services_ for _WebDriverAgent-Runner_ must be set to **Always**
|
||||
* Add `accessible` attribute field into the XML page source [WebDriverAgent#493](https://github.com/appium/WebDriverAgent/pull/493) (Thanks to @TheDarkestDay)
|
||||
* Improve performance of the keyboard dismissal logic [appium-xcuitest-driver#1267](https://github.com/appium/appium-xcuitest-driver/pull/1267), [WebDriverAgent#458](https://github.com/appium/WebDriverAgent/pull/458)
|
||||
* Fix performance degradation of interaction in `nativeWebTap:true` [appium-xcuitest-driver/pull/1265](https://github.com/appium/appium-xcuitest-driver#1265)
|
||||
|
||||
### Mac2
|
||||
|
||||
* Add capabilities:
|
||||
* `appium:webDriverAgentMacUrl` to allow Appium to connect to a running WebDriverAgentMac instance at this URL [appium-mac2-driver#41](https://github.com/appium/appium-mac2-driver/pull/41)
|
||||
* Add a possibility to provide key names for `macos:keys` extension [appium-mac2-driver#60](https://github.com/appium/appium-mac2-driver/pull/60)
|
||||
* Add `hittable` attribute field into the XML page source [appium-mac2-driver#65](https://github.com/appium/appium-mac2-driver/pull/65)
|
||||
* More fine-grained handling of orphaned xcodebuild processes [appium-mac2-driver#73](https://github.com/appium/appium-mac2-driver/pull/73)
|
||||
|
||||
### You.i Engine Driver
|
||||
|
||||
The version is `1.2.8`
|
||||
|
||||
### Community based drivers
|
||||
#### Flutter driver
|
||||
|
||||
The version is `0.0.28`
|
||||
|
||||
#### New drivers
|
||||
|
||||
Add the ability to load `appium-roku-driver`([appium#15227](https://github.com/appium/appium/pull/15227)) and `appium-webos-driver`([appium#15260](https://github.com/appium/appium/pull/15260)) by @cbuelvasc
|
||||
|
||||
CHANGES IN VERSION 1.20.2 (FROM 1.20.1)
|
||||
===================================
|
||||
|
||||
Appium 1.20.2 is a patch release
|
||||
|
||||
### Android(UIAutomator2)
|
||||
* Fix element caching performance [appium-uiautomator2-server#406](https://github.com/appium/appium-uiautomator2-server/pull/406)
|
||||
|
||||
CHANGES IN VERSION 1.20.1 (FROM 1.20.0)
|
||||
===================================
|
||||
|
||||
Appium 1.20.1 is a patch release
|
||||
|
||||
### Android(UIAutomator2)
|
||||
* Fix setting the session capabilities [appium-uiautomator2-server#404](https://github.com/appium/appium-uiautomator2-server/pull/404)
|
||||
|
||||
CHANGES IN VERSION 1.20.0 (FROM 1.19.1)
|
||||
===================================
|
||||
|
||||
Appium 1.20.0 is a minor release
|
||||
|
||||
### General
|
||||
* Does not destory sockets explicitly against a client [appium-base-driver#437](https://github.com/appium/appium-base-driver/pull/437)
|
||||
* Connection timeout to each driver respects `--keep-alive-timeout` configuration [appium-base-driver#443](https://github.com/appium/appium-base-driver/pull/443). Default to 10 minutes
|
||||
|
||||
### Android General
|
||||
* `InvalidContextError` error is thrown if running instrumentation process was dead
|
||||
* Fix Android emulator config paths on Windows [appium-adb#558](https://github.com/appium/appium-adb/pull/558)
|
||||
|
||||
### Android(UIAutomator2)
|
||||
* Appium adds `io.appium.settings`, `io.appium.uiautomator2.server` and `io.appium.uiautomator2.server.test` as the device's Doze whitelist to keep working [appium-uiautomator2-driver#420](https://github.com/appium/appium-uiautomator2-driver/pull/420)
|
||||
* Add settings:
|
||||
* `useResourcesForOrientationDetection` to use application resource propertires to determine the current device orientation [appium-uiautomator2-server#389](https://github.com/appium/appium-uiautomator2-server/pull/389)
|
||||
|
||||
### Android(Espresso)
|
||||
* Appium adds `io.appium.settings` and `io.appium.espressoserver.test` as the device's Doze whitelist to keep working [appium-espresso-driver#627](https://github.com/appium/appium-espresso-driver/pull/627)
|
||||
* Add `mobile:` extensions:
|
||||
* `uiautomatorPageSource` returns the page source dump by UIAutomator [appium-espresso-driver#628](https://github.com/appium/appium-espresso-driver/pull/628)
|
||||
* Improves XPath lookup performance [appium-espresso-driver#637](https://github.com/appium/appium-espresso-driver/pull/637)
|
||||
|
||||
### iOS General
|
||||
* Fix updating simulator preference method [appium-ios-simulator#298](https://github.com/appium/appium-ios-simulator/pull/298)
|
||||
|
||||
### iOS(XCUITest)
|
||||
* Support M1 chip based Mac, Xcode 12.3
|
||||
* Snapshots caching logic has been rewritten to improve lookup performance e.g. [WebDriverAgent#404](https://github.com/appium/WebDriverAgent/pull/404), [WebDriverAgent#407](https://github.com/appium/WebDriverAgent/pull/407)
|
||||
* Breaking changes
|
||||
* Support over Xcode 10.2, iOS 12.2 (Drop supporting Xcode 10.0 and 10.1)
|
||||
* `accessibility id`, `name` and `id` lookup strategies now find elements by `name`(`wdName`) attributes in page source: [WebDriverAgent#414](https://github.com/appium/WebDriverAgent/pull/414)
|
||||
* Previously, they found elements by `name`(`wdName`) and `value`(`wdValue`)
|
||||
* Please use `predicate` strategy to find `value`(`wdValue`) attribute like [this change](https://github.com/appium/ruby_lib_core/pull/282)
|
||||
* Add capabilities:
|
||||
* `resultBundlePath` and `resultBundleVersion` to allow to specify the path to the result bundle of WebDriverAgent xcodebuild [WebDriverAgent#410](https://github.com/appium/WebDriverAgent/pull/410)
|
||||
* `safariIgnoreWebHostnames` to provide a list of hostnames that the Safari automation tools should ignore [appium-xcuitest-driver#1258](https://github.com/appium/appium-xcuitest-driver/pull/
|
||||
1258)
|
||||
* `waitForIdleTimeout` (Please read the below settings section)
|
||||
* Add settings: (Please read [Settings API](http://appium.io/docs/en/advanced-concepts/settings/index.html) for more details)
|
||||
* `customSnapshotTimeout` which was renamed from `snapshotTimeout` sets how much time is allowed to resolve a single accessibility snapshot with custom attributes
|
||||
* `waitForIdleTimeout` to customize the time for waiting until the application under test is idling
|
||||
* The value `zero` (not recommended) is equal to `waitForQuiescence` to `false`
|
||||
* **Important**: this is still a workaround, so there is no guarantee it is going to always work. Please consider rather fixing your application source code, because XCTest uses idle intervals to send commands to the accessibility manager. You may get unexpected testing results or application crashes if such intervals don't exist or are too tiny.
|
||||
* `animationCoolOffTimeout` customize the timeout to wait until the application under test has no animation
|
||||
* Add a possibility to select elements by indexes [WebDriverAgent#417](https://github.com/appium/WebDriverAgent/pull/417)
|
||||
* Fix parsing SSL output from OpenSSL output [appium-xcuitest-driver#1256](https://github.com/appium/appium-xcuitest-driver/pull/1256)
|
||||
|
||||
### iOS(Safari)
|
||||
|
||||
This driver provides you to communicate with Apple's `safaridriver` binary via Appium.
|
||||
It only supports Safari browser automation on macOS and iOS (Simulator/Real Device).
|
||||
|
||||
Read https://github.com/appium/appium-safari-driver for more details.
|
||||
|
||||
### Mac2
|
||||
|
||||
This driver provides you to handle macOS native applications with Apple's `XCTest` framework.
|
||||
Read https://github.com/appium/appium-mac2-driver for more details.
|
||||
|
||||
### Gecko
|
||||
|
||||
This driver provides you to communicate with Firefox browsers on macOS, Windows, Linux and Android with geckodriver binary via Appium.
|
||||
Read https://github.com/appium/appium-geckodriver for more details to set the environment up.
|
||||
|
||||
CHANGES IN VERSION 1.19.1(FROM 1.19.0)
|
||||
===================================
|
||||
|
||||
@@ -381,7 +67,7 @@ Appium 1.19.0 is a minor release
|
||||
|
||||
### Flutter
|
||||
|
||||
The version is `0.25`
|
||||
The version is `0.0.25`
|
||||
|
||||
### You.i Engine Driver
|
||||
|
||||
|
||||
@@ -78,12 +78,6 @@ The current committers are (in addition to the TC members above):
|
||||
* [@ddkjin](https://github.com/ddkjin)
|
||||
* [@stuartbrussell-intuit](https://github.com/stuartbrussell-intuit)
|
||||
* [@vmaxim](https://github.com/vmaxim)
|
||||
* [@Dan-Maor](https://github.com/Dan-Maor)
|
||||
* [@laolubenson](https://github.com/laolubenson)
|
||||
* [@Dor-bl](https://github.com/Dor-bl)
|
||||
* [@boneskull](https://github.com/boneskull)
|
||||
* [@mwakizaka](https://github.com/mwakizaka)
|
||||
* [@rerorero](https://github.com/rerorero)
|
||||
|
||||
### Contributors
|
||||
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright OpenJS Foundation and other contributors, https://openjsf.org/
|
||||
Copyright JS Foundation and other contributors, https://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,161 +1,51 @@
|
||||
## Appium
|
||||
|
||||
[](https://npmjs.org/package/appium)
|
||||
[](https://david-dm.org/appium/appium)
|
||||
[](https://david-dm.org/appium/appium#info=devDependencies)
|
||||
|
||||
[](https://npmjs.org/package/appium)
|
||||
|
||||
[](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fappium%2Fappium?ref=badge_shield)
|
||||
|
||||
[](https://github.com/vshymanskyy/StandWithUkraine/)
|
||||
|
||||
[](https://vshymanskyy.github.io/StandWithUkraine/)
|
||||
|
||||
Appium is an open-source, cross-platform test automation tool for native,
|
||||
hybrid, mobile web and desktop apps. Initially created to automate iOS and Android mobile
|
||||
applications Appium has grown to a full-featured platform that provides [WebDriver](https://www.w3.org/TR/webdriver/)-based automation possibilities for the whole set of different mobile and desktop platforms.
|
||||
See the full list of
|
||||
[officially-supported](https://appium.github.io/appium/docs/en/latest/ecosystem/#drivers) and
|
||||
[third-party](https://appium.github.io/appium/docs/en/latest/ecosystem/#other-drivers) drivers for more details.
|
||||
hybrid, and mobile web and desktop apps. We support simulators (iOS), emulators
|
||||
(Android), and real devices (iOS, Android, Windows, Mac).
|
||||
|
||||
:bangbang: Major documentation revision in progress
|
||||
Want to skip straight to the action? Check out our [getting
|
||||
started](/docs/en/about-appium/getting-started.md) doc.
|
||||
|
||||
:bangbang: Appium core team does not maintain Appium 1.x anymore since the 1st of January 2022. All recent versions of officially supported platform drivers are not compatible to Appium 1.x anymore, and require Appium 2 to run. [Please read the migration guide from 1.x to 2.0](https://appium.github.io/appium/docs/en/latest/guides/migrating-1-to-2/) to manage the Appium server.
|
||||
|
||||
Appium is in the final stages of a major revision (to version 2.0). As such, the documentation
|
||||
found around the web may not be correct. The current Appium 2.0 documentation is very much in
|
||||
progress. Currently, it can be found [here](https://appium.github.io/appium/docs/en/latest/).
|
||||
|
||||
### Requirements
|
||||
|
||||
- macOS, Linux or Windows operating system
|
||||
- Node.js 14+
|
||||
- NPM (Node Package Manager) 8+
|
||||
|
||||
These are only server requirements. Each driver might have its own requirements. Consider checking the corresponding driver tutorial for more details.
|
||||
|
||||
### Server
|
||||
|
||||
To install Appium 2 server using Node Package Manager (npm) run the following command:
|
||||
|
||||
```bash
|
||||
npm install -g appium@next
|
||||
```
|
||||
|
||||
:bangbang: Running `npm install -g appium` would still install Appium 1 because version 2 is in its late beta stage.
|
||||
|
||||
### Drivers
|
||||
### Supported Platforms
|
||||
|
||||
Appium supports app automation across a variety of platforms, like iOS,
|
||||
Android, and Windows. Each platform is supported by one or more "drivers",
|
||||
which know how to automate that particular platform. Since version 2.0
|
||||
all drivers have been isolated from the Appium server app and can
|
||||
be managed independently using the [appium driver](https://appiumpro.com/editions/122-installing-appium-20-and-the-driver-and-plugins-cli) command line interface.
|
||||
which know how to automate that particular platform. Choose a driver below for
|
||||
specific information about how that driver works and how to set it up:
|
||||
|
||||
In general, the drivers management in Appium 2 is as simple as:
|
||||
|
||||
```bash
|
||||
# To install a new driver from npm
|
||||
appium driver install --source=npm appium-xcuitest-driver[@<version>]
|
||||
# To install a driver from a local folder (useful for developers)
|
||||
appium driver install --source=local /Users/me/sources/appium-xcuitest-driver
|
||||
# To install a new driver from github (hm, maybe it's time to publish it to NPM?)
|
||||
appium driver install --source=github --package=appium-xcuitest-driver appium/appium-xcuitest-driver
|
||||
|
||||
# To list already installed drivers
|
||||
appium driver list --installed
|
||||
|
||||
# To update a driver (it must be already installed)
|
||||
appium driver update xcuitest
|
||||
|
||||
# To uninstall a driver (it won't last forever, wouldn't it?)
|
||||
appium driver uninstall xcuitest
|
||||
```
|
||||
|
||||
You can find a full list of
|
||||
[officially-supported](https://appium.github.io/appium/docs/en/latest/ecosystem/#drivers) and
|
||||
[third-party](https://appium.github.io/appium/docs/en/latest/ecosystem/#other-drivers) drivers at
|
||||
the current Appium 2.0 documentation.
|
||||
|
||||
### Plugins
|
||||
|
||||
The concept of plugins is something new that has been added exclusively to Appium2. Plugins allow you to extend server functionality without changing the server code. Plugins could be managed similarly to drivers:
|
||||
|
||||
```bash
|
||||
# To install an officially supported plugin
|
||||
appium plugin install images
|
||||
# To install a plugin from a local folder (useful for developers)
|
||||
appium plugin install --source=local /Users/me/sources/images
|
||||
# To install a new plugin from npm
|
||||
appium plugin install --source=npm appium-device-farm
|
||||
|
||||
# To list already installed plugins
|
||||
appium plugin list --installed
|
||||
|
||||
# To update a plugins (it must be already installed)
|
||||
appium plugin update appium-device-farm
|
||||
|
||||
# To uninstall a plugin
|
||||
appium plugin uninstall appium-device-farm
|
||||
```
|
||||
|
||||
The main difference between drivers and plugins is that the latter must be explicitly enabled on server startup after it was installed (drivers are enabled by default after installation):
|
||||
|
||||
```bash
|
||||
appium server --use-plugins=device-farm,images
|
||||
```
|
||||
|
||||
You can find a full list of
|
||||
[officially-supported](https://appium.github.io/appium/docs/en/latest/ecosystem/#plugins) and
|
||||
[third-party](https://appium.github.io/appium/docs/en/latest/ecosystem/#other-plugins) plugins at
|
||||
the current Appium 2.0 documentation.
|
||||
|
||||
|
||||
### Server Command Line Interface
|
||||
|
||||
In order to start sending commands to Appium over the wire it must be listening
|
||||
on the URL where your client library expects it to listen.
|
||||
Use the following commands to run and configure Appium server:
|
||||
|
||||
```bash
|
||||
# Start the server on the default port and host (e.g. http://0.0.0.0:4723/)
|
||||
appium server
|
||||
# Start the server on the given port, host and use the base path prefix (the default prefix is /)
|
||||
appium server -p 9000 -a 127.0.0.1 -pa /wd/hub
|
||||
|
||||
# Get the list of all supported command line parameters.
|
||||
# This list would also include descriptions of driver-specific
|
||||
# command line arguments for all installed drivers.
|
||||
# Each driver and plugin must have their command line arguments
|
||||
# exposed in a special JSON schema declared as a part of the corresponding
|
||||
# package.json file.
|
||||
appium server --help
|
||||
```
|
||||
|
||||
Appium supports execution of parallel server processes as well as parallel driver sessions within
|
||||
single server process. Refer the corresponding driver documentations regarding which mode is optimal
|
||||
for the particular driver or whether it supports parallel sessions.
|
||||
* iOS
|
||||
* The [XCUITest Driver](/docs/en/drivers/ios-xcuitest.md)
|
||||
* (DEPRECATED) The [UIAutomation Driver](/docs/en/drivers/ios-uiautomation.md)
|
||||
* Android
|
||||
* The [Espresso Driver](/docs/en/drivers/android-espresso.md)
|
||||
* The [UiAutomator2 Driver](/docs/en/drivers/android-uiautomator2.md)
|
||||
* (DEPRECATED) The [UiAutomator Driver](/docs/en/drivers/android-uiautomator.md)
|
||||
* The [Windows Driver](/docs/en/drivers/windows.md) (for Windows Desktop apps)
|
||||
* The [Mac Driver](/docs/en/drivers/mac.md) (for Mac Desktop apps)
|
||||
|
||||
### Why Appium?
|
||||
|
||||
1. You usually don't have to recompile your app or modify it in any way, due
|
||||
1. You don't have to recompile your app or modify it in any way, due
|
||||
to the use of standard automation APIs on all platforms.
|
||||
2. You can write tests with your favorite dev tools using any
|
||||
[WebDriver](https://w3c.github.io/webdriver/webdriver-spec.html)-compatible
|
||||
language such as [Java](https://github.com/appium/java-client),
|
||||
[JavaScript](https://webdriver.io/), [Python](https://github.com/appium/python-client),
|
||||
[Ruby](https://github.com/appium/ruby_lib), [C#](https://github.com/appium/dotnet-client)
|
||||
with the Selenium WebDriver API. There are also various third party
|
||||
client implementations for other languages.
|
||||
language such as Java, Objective-C, JavaScript (Node), PHP, Python, Ruby,
|
||||
C#, Clojure, or Perl with the Selenium WebDriver API and [language-specific
|
||||
client libraries](/docs/en/about-appium/appium-clients.md).
|
||||
3. You can use any testing framework.
|
||||
4. Some drivers, like xcuitest and uiautomator2 ones have built-in mobile web and
|
||||
hybrid app support. Within the same script, you can switch seamlessly between native
|
||||
app automation and webview automation, all using the WebDriver model that's already
|
||||
the standard for web automation.
|
||||
5. You can run your automated tests locally and in a cloud. There are multiple
|
||||
cloud providers that support various Appium drivers (mostly
|
||||
targeting iOS and Android mobile automation).
|
||||
6. [Appium Inspector](https://github.com/appium/appium-inspector) allows
|
||||
visual debugging of automated tests and could be extremely useful for
|
||||
beginners.
|
||||
4. Appium has built-in mobile web and hybrid app support. Within the same
|
||||
script, you can switch seamlessly between native app automation and webview
|
||||
automation, all using the WebDriver model that's already the standard for
|
||||
web automation.
|
||||
|
||||
Investing in the
|
||||
[WebDriver](https://w3c.github.io/webdriver/webdriver-spec.html) protocol means
|
||||
@@ -169,21 +59,35 @@ Java/Kotlin. 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 more comprehensive description of what this is all
|
||||
about, please read our [Intro to Appium](https://appium.github.io/appium/docs/en/latest/intro/).
|
||||
about, please read our [Introduction to Appium
|
||||
Concepts](/docs/en/about-appium/intro.md).
|
||||
|
||||
### Quickstart
|
||||
### Requirements
|
||||
|
||||
Check out our [Quickstart](https://appium.github.io/appium/docs/en/latest/quickstart/) guide
|
||||
Your environment needs to be set up for the particular platforms that you want
|
||||
to run tests on. Each of the drivers above documents the requirements for their
|
||||
particular brand of automation. At a minimum, you will need to be able to run
|
||||
Node.js 10+.
|
||||
|
||||
### Get Started
|
||||
|
||||
Check out our [Getting Started](/docs/en/about-appium/getting-started.md) guide
|
||||
to get going with Appium.
|
||||
|
||||
There is also a sample code that contains [many examples of tests in a variety
|
||||
of different languages](https://github.com/appium/appium/tree/1.x/sample-code)!
|
||||
of different languages](https://github.com/appium/appium/tree/master/sample-code)!
|
||||
|
||||
### Documentation
|
||||
|
||||
For prettily-rendered docs, please visit [Appium Documentation](https://appium.github.io/appium).
|
||||
You can always find the full list of Appium doc pages at [Appium's GitHub
|
||||
Repo](https://github.com/appium/appium/tree/master/packages/appium/docs) as well.
|
||||
For prettily-rendered docs, please visit [appium.io](http://appium.io). You can
|
||||
always find the full list of Appium doc pages at [Appium's GitHub
|
||||
Repo](https://github.com/appium/appium/tree/master/docs/en/) as well.
|
||||
|
||||
[update-appium-io.yml](https://github.com/appium/appium/blob/master/ci-jobs/update-appium-io.yml) creates a PR
|
||||
by [CI job](https://dev.azure.com/AppiumCI/Appium%20CI/_build?definitionId=37).
|
||||
in the appium.io repository with the documentation update.
|
||||
|
||||
Once the PR has been merged, the latest documentation will be in [appium.io](http://appium.io)
|
||||
|
||||
### Contributing
|
||||
|
||||
@@ -196,16 +100,21 @@ Interested in where Appium is heading in the future? Check out the [Roadmap](ROA
|
||||
|
||||
### Project History, Credits & Inspiration
|
||||
|
||||
* [History](https://appium.github.io/appium/docs/en/latest/intro/history/)
|
||||
* [History](http://appium.io/history)
|
||||
* [Credits](/docs/en/contributing-to-appium/credits.md)
|
||||
|
||||
### User Forums
|
||||
|
||||
Announcements and debates often take place on the [Discussion Group](https://discuss.appium.io),
|
||||
be sure to sign up!
|
||||
Announcements and debates often take place on the [Discussion
|
||||
Group](https://discuss.appium.io), be sure to sign up!
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
Please find the troubleshooting guide at the corresponding driver repository/documentation.
|
||||
We put together a [troubleshooting
|
||||
guide](/docs/en/writing-running-appium/other/troubleshooting.md). Please have a look
|
||||
here first if you run into any problems. It contains instructions for checking
|
||||
a lot of common errors and how to get in touch with the community if you're
|
||||
stumped.
|
||||
|
||||
### License
|
||||
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/* eslint no-console:0 */
|
||||
|
||||
/*
|
||||
* Small tool, launching and monitoring ios-web-kit-proxy, and relaunching
|
||||
* on predefined errors.
|
||||
*
|
||||
* Usage:
|
||||
* ./bin/ios-webkit-debug-proxy-launcher.js [args]
|
||||
* args: ios-webkit-debug-proxy args (they will be passed over)
|
||||
*
|
||||
* Example:
|
||||
* ./bin/ios-webkit-debug-proxy-launcher.js -c <UDID>:27753 -d
|
||||
*
|
||||
* Note:
|
||||
* For iOS8.1 try this first:
|
||||
* brew install --HEAD ideviceinstaller
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
const spawn = require('child_process').spawn;
|
||||
const _ = require('lodash');
|
||||
|
||||
const args = process.argv.slice(2);
|
||||
|
||||
const RESTART_ON_MESSAGES = [
|
||||
'Invalid message _rpc_applicationUpdated',
|
||||
'Invalid message _rpc_applicationSentListing'];
|
||||
|
||||
const PROXY_CMD = 'ios_webkit_debug_proxy';
|
||||
let proxy;
|
||||
|
||||
const handleKillProcess = function (exitCode) {
|
||||
console.log('\nKilling proxy process!');
|
||||
proxy.kill('SIGTERM');
|
||||
process.exit((exitCode || 0));
|
||||
};
|
||||
|
||||
const startProxy = function () {
|
||||
console.log(`RUNNING: ${PROXY_CMD} ${args.join(' ')}`);
|
||||
|
||||
proxy = spawn(PROXY_CMD, args);
|
||||
|
||||
proxy.stdout.on('data', function onStdout (data) {
|
||||
console.log(`stdout: ${data}`);
|
||||
});
|
||||
|
||||
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('Killing proxy!');
|
||||
proxy.kill('SIGTERM');
|
||||
process.nextTick(startProxy);
|
||||
}
|
||||
});
|
||||
|
||||
proxy.on('close', function onClose (code) {
|
||||
console.log(`Child process exited with code ${code}`);
|
||||
});
|
||||
};
|
||||
|
||||
process.on('SIGINT', handleKillProcess);
|
||||
process.on('SIGTERM', handleKillProcess);
|
||||
|
||||
startProxy();
|
||||
Binary file not shown.
Executable → Regular
+4
-13
@@ -1,18 +1,11 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const path = require('path');
|
||||
const childProcess = require('child_process');
|
||||
const _ = require('lodash');
|
||||
|
||||
const res = JSON.parse(
|
||||
childProcess.execSync('npm pack --dry-run --json --ignore-scripts', {
|
||||
cwd: path.join(__dirname, '..'),
|
||||
encoding: 'utf8',
|
||||
})
|
||||
)[0];
|
||||
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
|
||||
];
|
||||
@@ -21,10 +14,8 @@ const testFiles = [
|
||||
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.`
|
||||
);
|
||||
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,25 @@
|
||||
const _ = require('lodash');
|
||||
const { asyncify } = require('asyncbox');
|
||||
const { fs, logger } = require('appium-support');
|
||||
const path = require('path');
|
||||
|
||||
const log = new logger.getLogger('ShrinkwrapValidator');
|
||||
|
||||
async function main () {
|
||||
const shrinkwrapPath = path.resolve('npm-shrinkwrap.json');
|
||||
if (!(await fs.exists(shrinkwrapPath))) {
|
||||
log.info('No shrinkwrap found. Skipping shrinkwrap check');
|
||||
return;
|
||||
}
|
||||
const shrinkwrap = JSON.parse(await fs.readFile(shrinkwrapPath));
|
||||
const backupShrinkwrap = JSON.parse(await fs.readFile(path.resolve('npm-shrinkwrap-backup.json')));
|
||||
log.info('Checking that pruned shrinkwrap is a subset of primary shrinkwrap');
|
||||
if (!_.isMatch(backupShrinkwrap, shrinkwrap)) {
|
||||
log.errorAndThrow('Pruned shrinkwrap (shrinkwrap with dev dependencies removed) is not a subset of the original npm-shrinkwrap.json');
|
||||
}
|
||||
log.info('Shrinkwrap check passed');
|
||||
}
|
||||
|
||||
if (require.main === module) {
|
||||
asyncify(main);
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
steps:
|
||||
- task: NodeTool@0
|
||||
inputs:
|
||||
versionSpec: '12.x'
|
||||
- script: npm install
|
||||
displayName: NPM install
|
||||
- script: |
|
||||
git remote add triager https://triager:$GITHUB_TOKEN@github.com/appium/appium
|
||||
git checkout -b $MINOR_BRANCH_NAME
|
||||
git status
|
||||
node ./ci-jobs/scripts/set-package-json-version
|
||||
rm -rf package-lock.json
|
||||
npm shrinkwrap
|
||||
git add .
|
||||
git commit -n -m "Set version to $(MINOR_BRANCH_NAME).0-rc.0"
|
||||
git push -u triager $MINOR_BRANCH_NAME
|
||||
displayName: Create branch
|
||||
env:
|
||||
GITHUB_TOKEN: $(GITHUB_TOKEN)
|
||||
MINOR_BRANCH_NAME: $(MINOR_BRANCH_NAME)
|
||||
- script: |
|
||||
git tag $MINOR_BRANCH_NAME.0-rc.0
|
||||
git push --tags -u triager
|
||||
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > .npmrc
|
||||
npm publish --tag $(node ./ci-jobs/scripts/parse-tag)
|
||||
env:
|
||||
NPM_TOKEN: $(NPM_TOKEN)
|
||||
displayName: Tag and Publish
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
# parameters: # No params yet, but may add later
|
||||
jobs:
|
||||
- job: generate_docs
|
||||
pool:
|
||||
vmImage: "macOS 10.14"
|
||||
variables:
|
||||
CC: gcc
|
||||
CXX: g++
|
||||
steps:
|
||||
- task: NodeTool@0
|
||||
inputs:
|
||||
versionSpec: '12.x'
|
||||
- script: |
|
||||
# do git stuff
|
||||
npm install
|
||||
brew install hub
|
||||
hub --version
|
||||
git remote add triager https://triager:$GITHUB_TOKEN@github.com/appium/appium
|
||||
git checkout -b generate-docs-$BUILD_SOURCEVERSION
|
||||
git status
|
||||
displayName: Checkout Generate Docs Branch
|
||||
env:
|
||||
GITHUB_TOKEN: $(GITHUB_TOKEN)
|
||||
- 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 triager generate-docs-$BUILD_SOURCEVERSION
|
||||
hub pull-request -b "appium:master" -h "appium:generate-docs-$BUILD_SOURCEVERSION" -m "docs: Update auto-generated docs"
|
||||
fi
|
||||
displayName: Generate Docs and Make PR
|
||||
env:
|
||||
GITHUB_TOKEN: $(GITHUB_TOKEN)
|
||||
@@ -0,0 +1,2 @@
|
||||
jobs:
|
||||
- template: templates/bundle-template.yml
|
||||
@@ -0,0 +1,3 @@
|
||||
const semver = require('semver');
|
||||
const { version } = require('../../package.json');
|
||||
console.log(semver(version).prerelease[0]); //eslint-disable-line no-console
|
||||
@@ -0,0 +1,22 @@
|
||||
const path = require('path');
|
||||
const { fs, logger } = require('appium-support');
|
||||
const { asyncify } = require('asyncbox');
|
||||
const packageJson = require('../../package.json');
|
||||
|
||||
const log = new logger.getLogger('Create Release Branch:');
|
||||
|
||||
async function setPackageJsonVersion (version = `${process.env.MINOR_BRANCH_NAME}.0-rc.0`) {
|
||||
packageJson.version = version;
|
||||
log.info(`Setting version to: ${version}`);
|
||||
await fs.writeFile(
|
||||
path.resolve(__dirname, '..', '..', 'package.json'),
|
||||
JSON.stringify(packageJson, null, 2),
|
||||
'utf8',
|
||||
);
|
||||
}
|
||||
|
||||
if (require.main === module) {
|
||||
asyncify(setPackageJsonVersion);
|
||||
}
|
||||
|
||||
module.exports = setPackageJsonVersion;
|
||||
@@ -0,0 +1,47 @@
|
||||
# parameters: # No params yet, but may add later
|
||||
jobs:
|
||||
- job: bundle_and_upload_appium_zip
|
||||
pool:
|
||||
vmImage: 'macOS 10.14'
|
||||
variables:
|
||||
CC: gcc
|
||||
CXX: g++
|
||||
steps:
|
||||
- script: gcc --version
|
||||
displayName: Print GCC Version
|
||||
- task: NodeTool@0
|
||||
inputs:
|
||||
versionSpec: '12.x'
|
||||
- script: npm ci || npm install # "npm ci" if shrinkwrap is present
|
||||
displayName: Install NPM Dependencies
|
||||
- script: |
|
||||
pushd node_modules/appium-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: |
|
||||
curl -o node-darwin.tar.gz https://nodejs.org/dist/v12.16.1/node-v12.16.1-darwin-x64.tar.gz
|
||||
mkdir node-darwin-unpacked
|
||||
tar -xzf node-darwin.tar.gz -C node-darwin-unpacked/ --strip-components 1
|
||||
rm -f node-darwin.tar.gz
|
||||
cp node-darwin-unpacked/bin/node node-darwin
|
||||
rm -rf node-darwin-unpacked
|
||||
displayName: Download NodeJS
|
||||
- script: npm run zip
|
||||
displayName: Create the bundle zip
|
||||
- script: npm install
|
||||
displayName: Reinstall dev dependencies
|
||||
- task: PublishPipelineArtifact@0
|
||||
inputs:
|
||||
targetPath: appium.zip
|
||||
artifactName: appium
|
||||
- script: npm run upload
|
||||
env:
|
||||
GITHUB_TOKEN: $(GITHUB_TOKEN)
|
||||
displayName: Upload to appium/appium-build-store Github Releases
|
||||
@@ -0,0 +1,31 @@
|
||||
# parameters: # No params yet, but may add later
|
||||
jobs:
|
||||
- job: update_appium_io
|
||||
pool:
|
||||
vmImage: 'Ubuntu-18.04'
|
||||
variables:
|
||||
CC: gcc
|
||||
CXX: g++
|
||||
steps:
|
||||
- task: NodeTool@0
|
||||
inputs:
|
||||
versionSpec: '10.x'
|
||||
- script: |
|
||||
pip install mkdocs==0.16.3
|
||||
git config --global user.email "maintainers@appium.io"
|
||||
git config --global user.name "Appium Triager"
|
||||
git clone https://triager:$GITHUB_TOKEN@github.com/appium/appium.io.git --branch=gh-pages
|
||||
pushd appium.io
|
||||
git remote add triager https://triager:$GITHUB_TOKEN@github.com/appium/appium.io
|
||||
git checkout -b docs-$BUILD_SOURCEVERSION
|
||||
bundle install
|
||||
npm install
|
||||
npm run build:docs
|
||||
git add docs
|
||||
git commit -a -n -m "docs: Update documentation for latest version"
|
||||
git push triager docs-$BUILD_SOURCEVERSION
|
||||
hub pull-request -b "appium:gh-pages" -h "appium:docs-$BUILD_SOURCEVERSION" -m "docs: Update documentation for latest version"
|
||||
popd
|
||||
displayName: Make branch with Updated Docs and make PR
|
||||
env:
|
||||
GITHUB_TOKEN: $(GITHUB_TOKEN)
|
||||
@@ -0,0 +1,22 @@
|
||||
[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file.)
|
||||
|
||||
## Appium API Documentation
|
||||
|
||||
{{#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.)
|
||||
@@ -0,0 +1,88 @@
|
||||
---
|
||||
name: Get Current Context
|
||||
short_description: Get the current context in which Appium is running
|
||||
description:
|
||||
>
|
||||
Retrieve the current context. This can be either `NATIVE_APP` for the native
|
||||
context, or a web view context, which will be:
|
||||
|
||||
* iOS - `WEBVIEW_<id>`
|
||||
* Android - `WEBVIEW_<package name>`
|
||||
|
||||
|
||||
For information on contexts, see Appium's [hybrid automation docs](/docs/en/writing-running-appium/web/hybrid.md).
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
String context = driver.getContext();
|
||||
python:
|
||||
|
|
||||
context = driver.current_context
|
||||
# or
|
||||
context = driver.context
|
||||
javascript_wd:
|
||||
|
|
||||
let context = await driver.currentContext();
|
||||
javascript_wdio:
|
||||
|
|
||||
let context = driver.getContext();
|
||||
ruby:
|
||||
|
|
||||
context = current_context
|
||||
ruby_core:
|
||||
context = @driver.current_context
|
||||
php:
|
||||
|
|
||||
$context = $driver->context();
|
||||
csharp:
|
||||
|
|
||||
string Context = driver.Context;
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/AppiumDriver.html#getContext--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.context.Context.current_context"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/mjsonwp.html#getcontext"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/doc/api.md"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#current_context-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#current_context-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
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: false
|
||||
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: /session/:session_id/context
|
||||
method: 'GET'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
response:
|
||||
- type: String
|
||||
description: The name of the current context
|
||||
|
||||
# Links to specifications. Should link to at least one specification
|
||||
specifications:
|
||||
jsonwp: https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#webviews-and-other-contexts
|
||||
@@ -0,0 +1,93 @@
|
||||
---
|
||||
name: Get All Contexts
|
||||
short_description: Get all the contexts available to automate
|
||||
description:
|
||||
>
|
||||
Retrieve all the contexts available to be automated. This will include, at
|
||||
least, the native context. There can also be zero or more web view contexts.
|
||||
For information on the format of the context names, see the [get context
|
||||
documentation](/docs/en/commands/context/get-context.md).
|
||||
|
||||
[mobile command](/docs/en/commands/mobile-command.md)
|
||||
`mobile: getContexts` is available on iOS (XCUITest) and Android
|
||||
(UIAutomator2 and Espresso) to get more detailed contexts.
|
||||
|
||||
For information on contexts, see Appium's [hybrid automation docs](/docs/en/writing-running-appium/web/hybrid.md).
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
Set<String> contextNames = driver.getContextHandles();
|
||||
python:
|
||||
|
|
||||
contexts = driver.contexts
|
||||
javascript_wd:
|
||||
|
|
||||
let contexts = await driver.contexts();
|
||||
javascript_wdio:
|
||||
|
|
||||
let contexts = driver.getContexts();
|
||||
ruby:
|
||||
|
|
||||
context = available_contexts
|
||||
ruby_core:
|
||||
|
|
||||
context = @driver.available_contexts
|
||||
php:
|
||||
|
|
||||
$contexts = $driver->contexts();
|
||||
csharp:
|
||||
|
|
||||
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--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.context.Context.contexts"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/mjsonwp.html#getcontexts"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/doc/api.md"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#available_contexts-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#available_contexts-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
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: false
|
||||
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: /session/:session_id/contexts
|
||||
method: 'GET'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
response:
|
||||
- type: Array<String>
|
||||
description: Array of the names of all available contexts
|
||||
|
||||
# Links to specifications. Should link to at least one specification
|
||||
specifications:
|
||||
jsonwp: https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#webviews-and-other-contexts
|
||||
@@ -0,0 +1,118 @@
|
||||
---
|
||||
name: Set Current Context
|
||||
short_description: Set the context being automated
|
||||
description:
|
||||
>
|
||||
Set the current context to that passed in. If this is moving into a web view
|
||||
context it will involve attempting to connect to that web view:
|
||||
|
||||
* iOS - attempt to connect to the application through the remote debugger
|
||||
* Android - start a [Chromedriver](/docs/en/writing-running-appium/web/chromedriver.md)
|
||||
process and begin a session to connect to the web view
|
||||
|
||||
|
||||
For information on contexts, see Appium's [hybrid automation docs](/docs/en/writing-running-appium/web/hybrid.md).
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
Set<String> contextNames = driver.getContextHandles();
|
||||
driver.context(contextNames.toArray()[1]);
|
||||
// ...
|
||||
driver.context("NATIVE_APP");
|
||||
python:
|
||||
|
|
||||
webview = driver.contexts[1]
|
||||
driver.switch_to.context(webview)
|
||||
# ...
|
||||
driver.switch_to.context('NATIVE_APP')
|
||||
javascript_wd:
|
||||
|
|
||||
let contexts = await driver.contexts();
|
||||
await driver.context(contexts[1]);
|
||||
// ...
|
||||
await driver.context('NATIVE_APP');
|
||||
javascript_wdio:
|
||||
|
|
||||
let contexts = driver.getContexts();
|
||||
driver.switchContext(contexts[1]);
|
||||
// ...
|
||||
driver.switchContext('NATIVE_APP');
|
||||
ruby:
|
||||
|
|
||||
webview = available_contexts[1]
|
||||
set_context(webview)
|
||||
# ...
|
||||
set_context('NATIVE_APP')
|
||||
ruby_core:
|
||||
|
|
||||
webview = @driver.available_contexts[1]
|
||||
@driver.set_context(webview)
|
||||
# ...
|
||||
@driver.set_context('NATIVE_APP')
|
||||
php:
|
||||
|
|
||||
$contexts = $driver->contexts();
|
||||
$driver->context($contexts[1]);
|
||||
// ...
|
||||
$driver->context('NATIVE_APP');
|
||||
csharp:
|
||||
|
|
||||
// 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-"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.context.Context.context"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/mjsonwp.html#switchcontext"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/doc/api.md"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#set_context-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#set_context-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
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: false
|
||||
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: /session/:session_id/context
|
||||
method: 'POST'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: name
|
||||
type: String
|
||||
description: The name of the context to which to change
|
||||
|
||||
# Links to specifications. Should link to at least one specification
|
||||
specifications:
|
||||
jsonwp: https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#webviews-and-other-contexts
|
||||
@@ -0,0 +1,77 @@
|
||||
---
|
||||
name: Get Current Activity
|
||||
short_description: Get the name of the current Android activity
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
String activity = driver.currentActivity();
|
||||
python:
|
||||
|
|
||||
activity = self.driver.current_activity;
|
||||
javascript_wd:
|
||||
|
|
||||
let activity = await driver.getCurrentActivity();
|
||||
javascript_wdio:
|
||||
|
|
||||
let activity = driver.getCurrentActivity();
|
||||
ruby:
|
||||
|
|
||||
current_activity
|
||||
ruby_core:
|
||||
|
|
||||
@driver.current_activity
|
||||
php:
|
||||
|
|
||||
$activity = $driver->currentActivity();
|
||||
csharp:
|
||||
|
|
||||
string activity = driver.CurrentActivity;
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/StartsActivity.html#currentActivity--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.android.html#webdriver.extensions.android.activities.Activities.current_activity"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#getcurrentactivity"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#current_activity-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Android/AndroidDriver.cs"
|
||||
|
||||
# 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: true
|
||||
csharp: true
|
||||
javascript_wd: true
|
||||
javascript_wdio: true
|
||||
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/device/current_activity
|
||||
method: GET
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
response:
|
||||
- type: string
|
||||
description: Name of the current [activity](https://developer.android.com/reference/android/app/Activity.html)
|
||||
|
||||
# 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#L366
|
||||
@@ -0,0 +1,77 @@
|
||||
---
|
||||
name: Get Current Package
|
||||
short_description: Get the name of the current Android package
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
String package = driver.getCurrentPackage();
|
||||
python:
|
||||
|
|
||||
package = self.driver.current_package;
|
||||
javascript_wd:
|
||||
|
|
||||
let package = await driver.getCurrentPackage();
|
||||
javascript_wdio:
|
||||
|
|
||||
let package = driver.getCurrentPackage();
|
||||
ruby:
|
||||
|
|
||||
current_package
|
||||
ruby_core:
|
||||
|
|
||||
@driver.current_package
|
||||
php:
|
||||
|
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
string package = driver.CurrentPackage;
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/StartsActivity.html#getCurrentPackage--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.android.html#webdriver.extensions.android.common.Common.current_package"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2526"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#getcurrentpackage"
|
||||
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"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Android/AndroidDriver.cs"
|
||||
|
||||
# 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: true
|
||||
csharp: true
|
||||
javascript_wd: true
|
||||
javascript_wdio: false
|
||||
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/device/current_package
|
||||
method: GET
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
response:
|
||||
- type: string
|
||||
description: Name of the current [package](https://developer.android.com/reference/java/lang/Package.html)
|
||||
|
||||
# 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#L369
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
name: Start Activity
|
||||
short_description: Start an Android activity by providing package name and activity name
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.startActivity(new Activity("com.example", "ActivityName"));
|
||||
python:
|
||||
|
|
||||
self.driver.start_activity("com.example", "ActivityName");
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.startActivity({
|
||||
appPackage: "com.example",
|
||||
appActivity: "ActivityName"
|
||||
});
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.startActivity("com.example", "ActivityName");
|
||||
ruby:
|
||||
|
|
||||
start_activity app_package: "com.example", app_activity: "ActivityName"
|
||||
ruby_core:
|
||||
|
|
||||
@driver.start_activity app_package: "com.example", app_activity: "ActivityName"
|
||||
php:
|
||||
|
|
||||
$driver->startActivity(array('appPackage' => 'com.example',
|
||||
'appActivity' => 'ActivityName'));
|
||||
csharp:
|
||||
|
|
||||
driver.StartActivity("com.example", "ActivityName");
|
||||
|
||||
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://appium.github.io/python-client-sphinx/webdriver.extensions.android.html#webdriver.extensions.android.activities.Activities.start_activity"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#startactivity"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#start_activity-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Android/AndroidDriver.cs"
|
||||
|
||||
# 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: true
|
||||
csharp: true
|
||||
javascript_wd: true
|
||||
javascript_wdio: true
|
||||
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/device/start_activity
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: appPackage
|
||||
type: string
|
||||
description: Name of the [package](https://developer.android.com/reference/java/lang/Package.html)
|
||||
- name: appActivity
|
||||
type: string
|
||||
description: Name of the [activity](https://developer.android.com/reference/android/app/Activity.html)
|
||||
- name: appWaitPackage
|
||||
type: string
|
||||
description: Automation will begin after this package starts
|
||||
- name: intentAction
|
||||
type: string
|
||||
description: "[Intent](https://developer.android.com/reference/android/content/Intent.html) action which will be used to start activity"
|
||||
- name: intentCategory
|
||||
type: string
|
||||
description: Intent category which will be used to start activity
|
||||
- name: intentFlags
|
||||
type: string
|
||||
description: Flags that will be used to start activity
|
||||
- name: optionalIntentArguments
|
||||
type: string
|
||||
description: Additional intent arguments that will be used to start activity
|
||||
- name: dontStopAppOnReset
|
||||
type: boolean
|
||||
description: Should the app stop on reset
|
||||
|
||||
# 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#L411
|
||||
@@ -0,0 +1,88 @@
|
||||
---
|
||||
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:
|
||||
|
|
||||
driver.activateApp(null, 'com.apple.Preferences')
|
||||
driver.activateApp('io.appium.android.apis')
|
||||
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:
|
||||
|
|
||||
driver.activateApp('com.apple.Preferences');
|
||||
driver.activateApp('io.appium.android.apis');
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithApps.html#activateApp-java.lang.String-"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.applications.Applications.activate_app"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#activateapp"
|
||||
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: /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,95 @@
|
||||
---
|
||||
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:
|
||||
|
|
||||
driver.queryAppState(null, 'com.apple.Preferences')
|
||||
driver.queryAppState('io.appium.android.apis')
|
||||
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://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.applications.Applications.query_app_state"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#queryappstate"
|
||||
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: /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
|
||||
@@ -0,0 +1,99 @@
|
||||
---
|
||||
name: Background App
|
||||
short_description: Send the currently running app for this session to the background
|
||||
description:
|
||||
>
|
||||
Send the currently active app to the background, and either return after a
|
||||
certain amount of time, or leave the app deactivated.
|
||||
|
||||
There are 3 types of parameters which may be passed to this method:
|
||||
|
||||
|
||||
1. An object that looks like `{"seconds": secs}`, where `secs` is an
|
||||
integer designating how long, in seconds, to background the app for. -1
|
||||
means to deactivate the app entirely.
|
||||
|
||||
2. `null`, which means to deactivate the app entirely.
|
||||
|
||||
3. _Deprecated_ An integer: how long, in seconds, to background the app for. -1 means to
|
||||
deactivate the app entirely.
|
||||
|
||||
|
||||
iOS tests with XCUITest can also use the `mobile: terminateApp` method to
|
||||
terminate the current app (see detailed [documentation](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-terminateapp)),
|
||||
and the `mobile: activateApp` to activate an existing application on the
|
||||
device under test and moves it to the foreground (see detailed [documentation](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-activateapp)).
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.runAppInBackground(Duration.ofSeconds(10));
|
||||
python:
|
||||
|
|
||||
self.driver.background_app(10)
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.backgroundApp(10);
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.background(10);
|
||||
ruby:
|
||||
|
|
||||
background_app(10)
|
||||
ruby_core:
|
||||
|
|
||||
@driver.background_app(10)
|
||||
php:
|
||||
|
|
||||
$driver->backgroundApp(10);
|
||||
csharp:
|
||||
|
|
||||
driver.BackgroundApp(10)
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithApps.html#runAppInBackground-java.time.Duration-"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.applications.Applications.background_app"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#background"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#background_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: true
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: false
|
||||
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: /session/:session_id/appium/app/background
|
||||
method: 'POST'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: seconds
|
||||
type: number
|
||||
description: How long to run app in background.
|
||||
|
||||
# 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#L439
|
||||
@@ -0,0 +1,73 @@
|
||||
---
|
||||
name: Close an App
|
||||
short_description: Close an app on device
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.closeApp();
|
||||
python:
|
||||
|
|
||||
self.driver.close_app()
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.closeApp();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.closeApp();
|
||||
ruby:
|
||||
|
|
||||
close_app
|
||||
ruby_core:
|
||||
|
|
||||
@driver.close_app
|
||||
php:
|
||||
|
|
||||
$driver->closeApp();
|
||||
csharp:
|
||||
|
|
||||
driver.CloseApp();
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithApps.html#closeApp--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.applications.Applications.close_app"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#closeapp"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#close_app-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: true
|
||||
android:
|
||||
espresso: false
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: false
|
||||
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: /session/:session_id/appium/app/close
|
||||
method: 'POST'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
|
||||
# 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#L433
|
||||
@@ -0,0 +1,80 @@
|
||||
---
|
||||
name: End Test Coverage
|
||||
short_description: Get test coverage data
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.endTestCoverage("Intent", "/path");
|
||||
python:
|
||||
|
|
||||
self.driver.end_test_coverage("Intent", "/path")
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.endTestCoverageForApp("Intent", "/path");
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.endCoverage("Intent", "/path");
|
||||
ruby:
|
||||
|
|
||||
end_coverage("Intent", "/path")
|
||||
ruby_core:
|
||||
|
|
||||
@driver.end_coverage("Intent", "/path")
|
||||
php:
|
||||
|
|
||||
$driver->endTestCoverage('Intent', '/path');
|
||||
csharp:
|
||||
|
|
||||
driver.EndTestCoverage("Intent", "/path");
|
||||
|
||||
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://appium.github.io/python-client-sphinx/webdriver.extensions.android.html#webdriver.extensions.android.common.Common.end_test_coverage"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2858"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#endcoverage"
|
||||
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"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Android/AndroidDriver.cs"
|
||||
|
||||
# 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: false
|
||||
php: true
|
||||
csharp: true
|
||||
javascript_wd: true
|
||||
javascript_wdio: true
|
||||
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/app/end_test_coverage
|
||||
method: 'POST'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: intent
|
||||
type: string
|
||||
description: Intent to broadcast
|
||||
- name: path
|
||||
type: string
|
||||
description: Path to .ec file
|
||||
|
||||
# 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#L442
|
||||
@@ -0,0 +1,80 @@
|
||||
---
|
||||
name: Get App Strings
|
||||
short_description: Get app strings
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
Map<String, String> appStrings = driver.getAppStringMap("en", "/path/to/file");
|
||||
python:
|
||||
|
|
||||
appStrings = self.driver.app_strings("en", "/path/to/file")
|
||||
javascript_wd:
|
||||
|
|
||||
let appStrings = await driver.getAppStrings();
|
||||
javascript_wdio:
|
||||
|
|
||||
let appStrings = driver.getStrings("en");
|
||||
ruby:
|
||||
|
|
||||
app_strings("en")
|
||||
ruby_core:
|
||||
|
|
||||
@driver.app_strings("en")
|
||||
php:
|
||||
|
|
||||
$strings = $driver->appStrings();
|
||||
csharp:
|
||||
|
|
||||
Dictionary<string, object> appStrings = driver.GetAppStringDictionary("end", "/path/to/file");
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/HasAppStrings.html#getAppStringMap--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.applications.Applications.app_strings"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#getstrings"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#app_strings-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: true
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: false
|
||||
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: /session/:session_id/appium/app/strings
|
||||
method: 'POST'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: language
|
||||
type: string
|
||||
description: Language code (optional)
|
||||
- name: stringFile
|
||||
type: string
|
||||
description: Path to the string file (optional)
|
||||
|
||||
# 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
|
||||
@@ -0,0 +1,82 @@
|
||||
---
|
||||
name: Install App
|
||||
short_description: Install the given app onto the device
|
||||
description:
|
||||
>
|
||||
iOS tests with XCUITest can also use the `mobile: installApp` method. See
|
||||
detailed [documentation](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-installapp).
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.installApp("/Users/johndoe/path/to/app.apk");
|
||||
python:
|
||||
|
|
||||
self.driver.install_app('/Users/johndoe/path/to/app.apk');
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.installAppOnDevice('/Users/johndoe/path/to/app.apk');
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.installApp('/Users/johndoe/path/to/app.apk')
|
||||
ruby:
|
||||
|
|
||||
install_app('/Users/johndoe/path/to/app.apk')
|
||||
ruby_core:
|
||||
|
|
||||
@driver.install_app('/Users/johndoe/path/to/app.apk')
|
||||
php:
|
||||
|
|
||||
$driver->installApp('/Users/johndoe/path/to/app.apk');
|
||||
csharp:
|
||||
|
|
||||
driver.InstallApp("/Users/johndoe/path/to/app.apk")
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithApps.html#installApp-java.lang.String-"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.applications.Applications.install_app"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#installapp"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#install_app-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: true
|
||||
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: /session/:session_id/appium/device/install_app
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: appPath
|
||||
type: string
|
||||
description: Path of the app being installed
|
||||
|
||||
# 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#L372
|
||||
@@ -0,0 +1,85 @@
|
||||
---
|
||||
name: Is App Installed
|
||||
short_description: Check whether the specified app is installed on the device
|
||||
description:
|
||||
>
|
||||
iOS tests with XCUITest can also use the `mobile: isAppInstalled` method. See
|
||||
detailed [documentation](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-isappinstalled).
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.isAppInstalled("com.example.AppName");
|
||||
python:
|
||||
|
|
||||
self.driver.is_app_installed('com.example.AppName');
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.isAppInstalledOnDevice('com.example.AppName');
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.isAppInstalled('com.example.AppName')
|
||||
ruby:
|
||||
|
|
||||
app_installed?('com.example.AppName')
|
||||
ruby_core:
|
||||
|
|
||||
@driver.app_installed?('com.example.AppName')
|
||||
php:
|
||||
|
|
||||
$driver->isAppInstalled('com.example.AppName')
|
||||
csharp:
|
||||
|
|
||||
driver.IsAppInstalled("com.example.AppName");
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithApps.html#isAppInstalled-java.lang.String-"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.applications.Applications.is_app_installed"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#isappinstalled"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#app_installed%3F-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: true
|
||||
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: /session/:session_id/appium/device/app_installed
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: bundleId
|
||||
type: string
|
||||
description: iOS bundleID or Android package name
|
||||
response:
|
||||
- type: boolean
|
||||
description: Return true if installed, false if not
|
||||
|
||||
# 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#L378
|
||||
@@ -0,0 +1,81 @@
|
||||
---
|
||||
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).
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.launchApp();
|
||||
python:
|
||||
|
|
||||
self.driver.launch_app()
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.launchApp();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.launchApp();
|
||||
ruby:
|
||||
|
|
||||
launch_app
|
||||
ruby_core:
|
||||
|
|
||||
@driver.launch_app
|
||||
php:
|
||||
|
|
||||
$driver->launchApp();
|
||||
csharp:
|
||||
|
|
||||
driver.LaunchApp();
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithApps.html#launchApp--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.applications.Applications.launch_app"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#launchapp"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#launch_app-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: true
|
||||
android:
|
||||
espresso: false
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: false
|
||||
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: /session/:session_id/appium/app/launch
|
||||
method: 'POST'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
|
||||
# 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#L430
|
||||
@@ -0,0 +1,86 @@
|
||||
---
|
||||
name: Remove App
|
||||
short_description: Remove an app from the device
|
||||
description:
|
||||
>
|
||||
iOS tests with XCUITest can also use the `mobile: removeApp` method. See
|
||||
detailed [documentation](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-removeapp).
|
||||
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.removeApp("com.example.AppName");
|
||||
python:
|
||||
|
|
||||
self.driver.remove_app('com.example.AppName');
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.removeAppFromDevice('com.example.AppName');
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.removeApp('com.example.AppName')
|
||||
ruby:
|
||||
|
|
||||
remove_app('com.example.AppName')
|
||||
ruby_core:
|
||||
|
|
||||
@driver.remove_app('com.example.AppName')
|
||||
php:
|
||||
|
|
||||
$driver->removeApp('com.example.AppName');
|
||||
csharp:
|
||||
|
|
||||
driver.RemoveApp("com.example.AppName");
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithApps.html#removeApp-java.lang.String-"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.applications.Applications.remove_app"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#removeapp"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#remove_app-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: true
|
||||
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: /session/:session_id/appium/device/remove_app
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: appId
|
||||
type: string
|
||||
description: The iOS [App ID](https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/AppID.html)
|
||||
- name: bundleId
|
||||
type: string
|
||||
description: iOS bundleID or Android package name
|
||||
|
||||
# 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#L375
|
||||
@@ -0,0 +1,73 @@
|
||||
---
|
||||
name: Reset App
|
||||
short_description: Reset the currently running app for this session
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.resetApp();
|
||||
python:
|
||||
|
|
||||
self.driver.reset()
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.resetApp();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.reset();
|
||||
ruby:
|
||||
|
|
||||
reset
|
||||
ruby_core:
|
||||
|
|
||||
@driver.reset
|
||||
php:
|
||||
|
|
||||
$driver->reset();
|
||||
csharp:
|
||||
|
|
||||
driver.ResetApp();
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithApps.html#resetApp--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.applications.Applications.reset"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#reset"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#reset-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: true
|
||||
android:
|
||||
espresso: false
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: false
|
||||
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: /session/:session_id/appium/app/reset
|
||||
method: 'POST'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
|
||||
# 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#L436
|
||||
@@ -0,0 +1,90 @@
|
||||
---
|
||||
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:
|
||||
|
|
||||
driver.terminateApp(null, 'com.apple.Preferences')
|
||||
driver.terminateApp('io.appium.android.apis')
|
||||
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://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.applications.Applications.terminate_app"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#terminateapp"
|
||||
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: /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: options.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
|
||||
@@ -0,0 +1,85 @@
|
||||
---
|
||||
name: Finger print
|
||||
short_description: Authenticate users by using their finger print scans on supported emulators.
|
||||
|
||||
description:
|
||||
|
|
||||
For Android emulator.
|
||||
Authenticate users by using their finger print scans.
|
||||
|
||||
Touch ID by iOS is [here](http://appium.io/docs/en/commands/device/simulator/touch-id/)
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.fingerPrint(1);
|
||||
python:
|
||||
|
|
||||
self.driver.finger_print(1)
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.fingerprint(1);
|
||||
javascript_wdio:
|
||||
|
|
||||
await driver.fingerPrint(1);
|
||||
ruby:
|
||||
|
|
||||
finger_print 1
|
||||
ruby_core:
|
||||
|
|
||||
@driver.finger_print 1
|
||||
php:
|
||||
|
|
||||
// PHP Code here
|
||||
csharp:
|
||||
|
|
||||
// CSharp Code here
|
||||
|
||||
client_docs:
|
||||
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebElement.html#click--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.hw_actions.HardwareActions.finger_print"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#fingerprint"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device#finger_print-instance_method"
|
||||
php:
|
||||
csharp:
|
||||
|
||||
# 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: true
|
||||
javascript_wdio: true
|
||||
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/device/finger_print
|
||||
method: 'POST'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: fingerprintId
|
||||
type: number
|
||||
description: finger prints stored in Android Keystore system (from 1 to 10)
|
||||
|
||||
# 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#L379
|
||||
@@ -0,0 +1,90 @@
|
||||
---
|
||||
name: Get Clipboard
|
||||
short_description: Get the content of the system clipboard
|
||||
description:
|
||||
>
|
||||
Get the content of the system clipboard
|
||||
|
||||
|
||||
(For iOS real devices)
|
||||
Apple security preferences require the WebDriverAgentRunner application to be in [foreground](https://github.com/appium/WebDriverAgent/issues/330) in order to be able to receive the system clipboard content. Otherwise an empty string is always returned. Consider using [Activate App](/docs/en/commands/device/app/activate-app.md) and [Background App](/docs/en/commands/device/app/background-app.md) to change the foreground application.
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.getClipboard(ClipboardContentType.PLAINTEXT); // get plaintext
|
||||
driver.getClipboardText();
|
||||
python:
|
||||
|
|
||||
self.driver.get_clipboard()
|
||||
self.driver.get_clipboard_text()
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.getClipboard();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.getClipboard();
|
||||
ruby:
|
||||
|
|
||||
get_clipboard
|
||||
ruby_core:
|
||||
|
|
||||
@driver.get_clipboard
|
||||
php:
|
||||
|
|
||||
// PHP Code here
|
||||
csharp:
|
||||
|
|
||||
// CSharp Code here
|
||||
|
||||
client_docs:
|
||||
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebElement.html#click--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.clipboard.Clipboard.get_clipboard"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#getclipboard"
|
||||
javascript_wd: "https://github.com/admc/wd/releases"
|
||||
ruby:
|
||||
- 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"
|
||||
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"
|
||||
csharp: "https://github.com/appium/appium" # TODO
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: false
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: false
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: false
|
||||
client_support:
|
||||
java: true
|
||||
python: true
|
||||
ruby: true
|
||||
php: false
|
||||
csharp: false
|
||||
javascript_wd: true
|
||||
javascript_wdio: true
|
||||
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/device/get_clipboard
|
||||
method: 'POST'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: contentType
|
||||
type: string
|
||||
description: The type of the content to get. Plaintext, Image, URL. Android supports only plaintext.
|
||||
response:
|
||||
- type: string
|
||||
description: Clipboard content as base64-encoded string or an empty string if the clipboard is empty
|
||||
|
||||
specifications: no
|
||||
@@ -0,0 +1,93 @@
|
||||
---
|
||||
name: Set Clipboard
|
||||
short_description: Set the content of the system clipboard
|
||||
description:
|
||||
>
|
||||
Set the content of the system clipboard
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
// base64Content is Base64-encoded content
|
||||
driver.setClipboard("label", ClipboardContentType.PLAINTEXT, base64Content);
|
||||
driver.setClipboardText("happy testing");
|
||||
python:
|
||||
|
|
||||
self.driver.set_clipboard('happy testing')
|
||||
self.driver.set_clipboard_text('happy testing')
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.setClipboard('happy testing', 'plaintext')
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.setClipboard('happy testing', 'plaintext')
|
||||
ruby:
|
||||
|
|
||||
set_clipboard content: 'happy testing'
|
||||
ruby_core:
|
||||
|
|
||||
@driver.set_clipboard content: 'happy testing'
|
||||
php:
|
||||
|
|
||||
// PHP Code here
|
||||
csharp:
|
||||
|
|
||||
// CSharp Code here
|
||||
|
||||
client_docs:
|
||||
java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebElement.html#click--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.clipboard.Clipboard.get_clipboard"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#setclipboard"
|
||||
javascript_wd: "https://github.com/admc/wd/releases"
|
||||
ruby:
|
||||
- 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"
|
||||
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"
|
||||
csharp: "https://github.com/appium/appium" # TODO
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: false
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: false
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: false
|
||||
client_support:
|
||||
java: true
|
||||
python: true
|
||||
ruby: true
|
||||
php: false
|
||||
csharp: false
|
||||
javascript_wd: true
|
||||
javascript_wdio: true
|
||||
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/device/set_clipboard
|
||||
method: 'POST'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: content
|
||||
type: String
|
||||
description: The actual base64 encoded clipboard content.
|
||||
- name: contentType
|
||||
type: string
|
||||
description: The type of the content to get. Plaintext, Image, URL. Android supports only plaintext.
|
||||
- name: label
|
||||
type: string
|
||||
description: Clipboard data label for Android.
|
||||
response:
|
||||
- type: string
|
||||
description: Response from Appium server
|
||||
|
||||
specifications: no
|
||||
@@ -0,0 +1,71 @@
|
||||
---
|
||||
name: Emulate power state
|
||||
short_description: Emulate power state change on the connected emulator.
|
||||
|
||||
description:
|
||||
|
|
||||
For Android emulator.
|
||||
To set the state of the battery charger to connected or not.
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.setPowerAC(PowerACState.OFF);
|
||||
python:
|
||||
|
|
||||
self.driver.set_power_ac(Power.AC_OFF)
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.powerAC('on')
|
||||
ruby:
|
||||
|
|
||||
set_power_ac :on
|
||||
ruby_core:
|
||||
|
|
||||
@driver.set_power_ac :on
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/" # TODO: Link
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.android.html#webdriver.extensions.android.power.Power.set_power_ac"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#powerac"
|
||||
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"
|
||||
|
||||
# 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: false
|
||||
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/device/power_ac
|
||||
method: 'POST'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: state
|
||||
type: string
|
||||
description: set the state. on or off
|
||||
|
||||
# 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#L381
|
||||
@@ -0,0 +1,70 @@
|
||||
---
|
||||
name: Emulate power capacity
|
||||
short_description: Emulate power capacity change on the connected emulator.
|
||||
|
||||
description:
|
||||
|
|
||||
For Android emulator.
|
||||
To set the battery percentage.
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.setPowerCapacity(100);
|
||||
python:
|
||||
|
|
||||
self.driver.set_power_capacity(50)
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.powerCapacity(50)
|
||||
ruby:
|
||||
|
|
||||
set_power_capacity 50
|
||||
ruby_core:
|
||||
|
|
||||
@driver.set_power_capacity 50
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/" # TODO: Link
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.android.html#webdriver.extensions.android.power.Power.set_power_capacity"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#powercapacity"
|
||||
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"
|
||||
|
||||
# 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: false
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/device/power_capacity
|
||||
method: 'POST'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: percent
|
||||
type: integer
|
||||
description: ercentage value in range [0, 100]
|
||||
|
||||
# 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#L378
|
||||
@@ -0,0 +1,81 @@
|
||||
---
|
||||
name: Pull File
|
||||
short_description: Retrieve a file from the device's file system
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
byte[] fileBase64 = driver.pullFile("/path/to/device/foo.bar");
|
||||
python:
|
||||
|
|
||||
file_base64 = self.driver.pull_file('/path/to/device/foo.bar');
|
||||
javascript_wd:
|
||||
|
|
||||
let fileBase64 = await driver.pullFile('/path/to/device/foo.bar');
|
||||
javascript_wdio:
|
||||
|
|
||||
let data = driver.pullFile('/data/local/tmp/file.txt');
|
||||
ruby:
|
||||
|
|
||||
pull_file('/data/local/tmp/file.txt')
|
||||
ruby_core:
|
||||
|
|
||||
@driver.pull_file('/data/local/tmp/file.txt')
|
||||
php:
|
||||
|
|
||||
$data = $driver->pullFile('data/local/tmp/file.txt');
|
||||
csharp:
|
||||
|
|
||||
byte[] fileBase64 = driver.PullFile("/path/to/device/foo.bar");
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithFiles.html#pullFile-java.lang.String-"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.remote_fs.RemoteFS.pull_file"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#pullfile"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#pull_file-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: true
|
||||
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: /session/:session_id/appium/device/pull_file
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: path
|
||||
type: string
|
||||
description: Path on the device to pull file from
|
||||
response:
|
||||
- type: string
|
||||
description: Contents of file in base64
|
||||
|
||||
# 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#L390
|
||||
@@ -0,0 +1,81 @@
|
||||
---
|
||||
name: Pull Folder
|
||||
short_description: Retrieve a folder from the device's file system
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
byte[] folder = driver.pullFolder("/path/to/device/foo.bar");
|
||||
python:
|
||||
|
|
||||
folder_base64 = self.driver.pull_folder('/path/to/device/foo.bar');
|
||||
javascript_wd:
|
||||
|
|
||||
let folderBase64 = await driver.pullFolder('/path/to/device/foo.bar');
|
||||
javascript_wdio:
|
||||
|
|
||||
let data = driver.pullFolder('/data/local/tmp/file.txt');
|
||||
ruby:
|
||||
|
|
||||
pull_folder('/data/local/tmp/file.txt')
|
||||
ruby_core:
|
||||
|
|
||||
@driver.pull_folder('/data/local/tmp/file.txt')
|
||||
php:
|
||||
|
|
||||
$folderBase64 = $driver->pullFolder($path);
|
||||
csharp:
|
||||
|
|
||||
byte[] folder = driver.PullFolder("/path/to/device");
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/InteractsWithFiles.html#pullFolder-java.lang.String-"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.remote_fs.RemoteFS.pull_folder"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#pullfolder"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#pull_folder-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: true
|
||||
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: /session/:session_id/appium/device/pull_folder
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: path
|
||||
type: string
|
||||
description: Path to an entire folder on the device
|
||||
response:
|
||||
- type: string
|
||||
description: A string of Base64 encoded data, representing a zip archive of the contents of the requested folder.
|
||||
|
||||
# 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#L393
|
||||
@@ -0,0 +1,84 @@
|
||||
---
|
||||
name: Push File
|
||||
short_description: Place a file onto the device in a particular place
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.pushFile("/data/local/tmp/foo.bar", new File("/Users/johndoe/files/foo.bar"));
|
||||
python:
|
||||
|
|
||||
dest_path = '/data/local/tmp/test_push_file.txt'
|
||||
data = bytes('This is the contents of the file to push to the device.', 'utf-8')
|
||||
self.driver.push_file(dest_path, base64.b64encode(data).decode('utf-8'))
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.pushFileToDevice('/data/local/tmp/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8=');
|
||||
javascript_wdio:
|
||||
|
|
||||
let data = new Buffer("Hello World").toString('base64');
|
||||
driver.pushFile('/data/local/tmp/file.txt', data);
|
||||
ruby:
|
||||
|
|
||||
push_file('/data/local/tmp/foo.bar', File.read('path/to/file.png'))
|
||||
ruby_core:
|
||||
|
|
||||
@driver.push_file('/data/local/tmp/foo.bar', File.read('path/to/file.png'))
|
||||
php:
|
||||
|
|
||||
$driver->pushFile('/data/local/tmp/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8=');
|
||||
csharp:
|
||||
|
|
||||
driver.PushFile("/data/local/tmp/foo.bar", new FileInfo("/Users/johndoe/files/foo.bar"))
|
||||
|
||||
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://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.remote_fs.RemoteFS.push_file"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#pushfile"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#push_file-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: true
|
||||
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: /session/:session_id/appium/device/push_file
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: path
|
||||
type: string
|
||||
description: Path to install the data to
|
||||
- name: data
|
||||
type: string
|
||||
description: Contents of file in base64
|
||||
|
||||
# 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#L387
|
||||
@@ -0,0 +1,78 @@
|
||||
---
|
||||
name: Is Device Locked
|
||||
short_description: Check whether the device is locked or not
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
boolean isLocked = driver.isDeviceLocked();
|
||||
python:
|
||||
|
|
||||
self.driver.is_locked()
|
||||
javascript_wd:
|
||||
|
|
||||
let isLocked = await driver.isLocked();
|
||||
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.isLocked();
|
||||
ruby:
|
||||
|
|
||||
device_locked?
|
||||
ruby_core:
|
||||
|
|
||||
@driver.device_locked?
|
||||
php:
|
||||
|
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
bool isLocked = driver.IsLocked(); // Supported by IOSDriver & AndroidDriver
|
||||
|
||||
client_docs:
|
||||
java: "http://appium.github.io/java-client/io/appium/java_client/LocksDevice.html#isDeviceLocked--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.hw_actions.HardwareActions.is_locked"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#islocked"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#device_locked%3F-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Android/AndroidDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: false
|
||||
uiautomation: false
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false # TODO Confirm this that mouse movements
|
||||
windows:
|
||||
windows: true # TODO Confirm 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: /session/:session_id/appium/device/is_locked
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
response:
|
||||
- type: boolean
|
||||
description: True if the device is locked, false if not
|
||||
|
||||
# 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#L313
|
||||
@@ -0,0 +1,82 @@
|
||||
---
|
||||
name: Lock
|
||||
short_description: Lock the device
|
||||
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.lockDevice();
|
||||
python:
|
||||
|
|
||||
self.driver.lock();
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.lock();
|
||||
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.lock();
|
||||
ruby:
|
||||
|
|
||||
lock
|
||||
lock(5) # lock 5 seconds
|
||||
ruby_core:
|
||||
|
|
||||
@driver.lock
|
||||
@driver.lock(5) # lock 5 seconds
|
||||
php:
|
||||
|
|
||||
$driver->lock(5);
|
||||
csharp:
|
||||
|
|
||||
driver.Lock(); // Supported by IOSDriver & AndroidDriver
|
||||
|
||||
client_docs:
|
||||
java: "http://appium.github.io/java-client/io/appium/java_client/LocksDevice.html#lockDevice--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.hw_actions.HardwareActions.lock"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#lock"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#lock-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Android/AndroidDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: false
|
||||
uiautomation: true
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false # TODO Confirm this that mouse movements
|
||||
windows:
|
||||
windows: true # TODO Confirm 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: /session/:session_id/appium/device/lock
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: seconds
|
||||
type: number
|
||||
description: How long to lock the screen (iOS only).
|
||||
|
||||
# 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#L307
|
||||
@@ -0,0 +1,81 @@
|
||||
---
|
||||
name: Rotate
|
||||
short_description: Rotate the device in three dimensions
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.rotate(new DeviceRotation(10, 10, 10));
|
||||
javascript_wd:
|
||||
|
|
||||
driver.rotateDevice({x: 114, y: 198, duration: 5, radius: 3, rotation: 220, touchCount: 2});
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.rotateDevice(100, 100);
|
||||
php:
|
||||
|
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
driver.Rotate(new Dictionary<string, int> { { "x", 114 }, { "y", 198 }, { "duration", 5 }, { "radius", 3 }, { "rotation", 220 }, { "touchCount", 2 } });
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/AppiumDriver.html#rotate-org.openqa.selenium.DeviceRotation-"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#rotatedevice"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2470"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: false
|
||||
uiautomation: true
|
||||
android:
|
||||
uiautomator2: false
|
||||
espresso: false
|
||||
uiautomator: false
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: false
|
||||
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: /session/:session_id/appium/device/rotate
|
||||
method: 'POST'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: x
|
||||
type: number
|
||||
description: x offset to use for the center of the rotate gesture
|
||||
- name: y
|
||||
type: number
|
||||
description: y offset to use for the center of the rotate gesture
|
||||
- name: radius
|
||||
type: number
|
||||
description: The distance in points from the center to the edge of the circular path
|
||||
- name: rotation
|
||||
type: number
|
||||
description: The length of rotation in radians
|
||||
- name: touchCount
|
||||
type: number
|
||||
description: The number of touches to use in the specified gesture. (Effectively, the number of fingers a user would use to make the specified gesture.) Valid values are 1 to 5.
|
||||
- name: duration
|
||||
type: number
|
||||
description: The length of hold time for the specified gesture, in seconds.
|
||||
|
||||
# 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#L361
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
name: Shake
|
||||
short_description: Perform a shake action on the device
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.shake();
|
||||
python:
|
||||
|
|
||||
self.driver.shake();
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.shake();
|
||||
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.shake();
|
||||
ruby:
|
||||
|
|
||||
shake
|
||||
ruby_core:
|
||||
|
|
||||
@driver.shake
|
||||
php:
|
||||
|
|
||||
$driver->shake();
|
||||
csharp:
|
||||
|
|
||||
driver.ShakeDevice();
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/ios/ShakesDevice.html#shake--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.hw_actions.HardwareActions.shake"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#shake"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#shake-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/iOS/IOSDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true (simulator only)
|
||||
uiautomation: true
|
||||
android:
|
||||
uiautomator2: false
|
||||
espresso: false
|
||||
uiautomator: false
|
||||
mac:
|
||||
mac: false # TODO Confirm this that mouse movements
|
||||
windows:
|
||||
windows: false # TODO Confirm 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: /session/:session_id/appium/device/shake
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
|
||||
# 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#L301
|
||||
@@ -0,0 +1,78 @@
|
||||
---
|
||||
name: Unlock
|
||||
short_description: Unlock the device
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.lockDevice();
|
||||
driver.unlockDevice();
|
||||
python:
|
||||
|
|
||||
self.driver.lock();
|
||||
self.driver.unlock();
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.lock();
|
||||
await driver.unlock();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.lock()
|
||||
.unlock();
|
||||
ruby:
|
||||
|
|
||||
unlock
|
||||
ruby_core:
|
||||
|
|
||||
@driver.unlock
|
||||
php:
|
||||
|
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
driver.Unlock(); // Supported by IOSDriver & AndroidDriver
|
||||
|
||||
client_docs:
|
||||
java: "http://appium.github.io/java-client/io/appium/java_client/LocksDevice.html#unlockDevice--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.hw_actions.HardwareActions.unlock"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#unlock"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#unlock-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Android/AndroidDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: false
|
||||
uiautomation: false
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false # TODO Confirm this that mouse movements
|
||||
windows:
|
||||
windows: true # TODO Confirm 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: /session/:session_id/appium/device/unlock
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
|
||||
# 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#L310
|
||||
@@ -0,0 +1,90 @@
|
||||
---
|
||||
name: Hide Keyboard
|
||||
short_description: Hide soft keyboard
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.hideKeyboard();
|
||||
python:
|
||||
|
|
||||
self.driver.hide_keyboard()
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.hideDeviceKeyboard();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.hideKeyboard();
|
||||
ruby:
|
||||
|
|
||||
hide_keyboard
|
||||
ruby_core:
|
||||
|
|
||||
@driver.hide_keyboard
|
||||
php:
|
||||
|
|
||||
$driver->hideKeyboard();
|
||||
$driver->hideKeyboard(array(
|
||||
'keyName' => 'Done'
|
||||
));
|
||||
csharp:
|
||||
|
|
||||
driver.HideKeyboard();
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/HidesKeyboard.html#hideKeyboard--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.keyboard.Keyboard.hide_keyboard"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#hidekeyboard"
|
||||
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
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: true
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: true
|
||||
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: /session/:session_id/appium/device/hide_keyboard
|
||||
method: 'POST'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: strategy
|
||||
type: string
|
||||
description: Hide keyboard strategy (optional, UIAutomation only). Available strategies - 'press', 'pressKey', 'swipeDown', 'tapOut', 'tapOutside', 'default'.
|
||||
- name: key
|
||||
type: string
|
||||
description: Key (optional)
|
||||
- name: keyCode
|
||||
type: string
|
||||
description: Key code (optional)
|
||||
- name: keyName
|
||||
type: string
|
||||
description: Key name (optional)
|
||||
|
||||
# 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#L381
|
||||
@@ -0,0 +1,69 @@
|
||||
---
|
||||
name: Is Keyboard Shown
|
||||
short_description: Whether or not the soft keyboard is shown
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
boolean isKeyboardShown = driver.isKeyboardShown();
|
||||
python:
|
||||
|
|
||||
driver.is_keyboard_shown()
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.isKeyboardShown();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.isKeyboardShown();
|
||||
ruby:
|
||||
|
|
||||
is_keyboard_shown
|
||||
ruby_core:
|
||||
|
|
||||
@driver.is_keyboard_shown
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/HasOnScreenKeyboard.html#isKeyboardShown--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.keyboard.Keyboard.is_keyboard_shown"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2638"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#iskeyboardshown"
|
||||
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"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: true
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: true
|
||||
client_support:
|
||||
java: true
|
||||
python: true
|
||||
ruby: true
|
||||
php: false
|
||||
csharp: false
|
||||
javascript_wd: true
|
||||
javascript_wdio: false
|
||||
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/device/is_keyboard_shown
|
||||
method: 'GET'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
response:
|
||||
- type: boolean
|
||||
description: True if the keyboard is shown.
|
||||
|
||||
# Links to specifications. Should link to at least one specification
|
||||
specifications:
|
||||
jsonwp: routes.js
|
||||
@@ -0,0 +1,86 @@
|
||||
---
|
||||
name: Long Press Key Code
|
||||
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:
|
||||
|
|
||||
driver.longPressKeyCode(AndroidKeyCode.HOME);
|
||||
python:
|
||||
|
|
||||
self.driver.long_press_keycode(10);
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.longPressKeyCode(10);
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.longPressKeycode(10);
|
||||
ruby:
|
||||
|
|
||||
long_press_keycode(10)
|
||||
ruby_core:
|
||||
|
|
||||
@driver.long_press_keycode(10)
|
||||
php:
|
||||
|
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
driver.LongPressKeyCode(WindowsKeyCode.Back);
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/windows/PressesKeyCode.html#longPressKeyCode-int-"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.keyboard.Keyboard.long_press_keycode"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#longpresskeycode"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#long_press_keycode-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Windows/WindowsDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: false
|
||||
uiautomation: false
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false # TODO Confirm this that mouse movements
|
||||
windows:
|
||||
windows: true # TODO Confirm 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: /session/:session_id/appium/device/long_press_keycode
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: keycode
|
||||
type: number
|
||||
description: Key code pressed on the device. See [Key Event](http://developer.android.com/reference/android/view/KeyEvent.html).
|
||||
- name: metastate
|
||||
type: number
|
||||
description: Metastate for the keypress. See [Key Event](http://developer.android.com/reference/android/view/KeyEvent.html).
|
||||
- name: flags
|
||||
type: number
|
||||
description: Flags for the keypress. See [Key Event](http://developer.android.com/reference/android/view/KeyEvent.html).
|
||||
|
||||
# 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#L331
|
||||
@@ -0,0 +1,86 @@
|
||||
---
|
||||
name: Press Key Code
|
||||
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:
|
||||
|
|
||||
driver.pressKeyCode(AndroidKeyCode.SPACE, AndroidKeyMetastate.META_SHIFT_ON);
|
||||
python:
|
||||
|
|
||||
self.driver.press_keycode(10);
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.pressKeyCode(10);
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.pressKeycode(10);
|
||||
ruby:
|
||||
|
|
||||
press_keycode(10)
|
||||
ruby_core:
|
||||
|
|
||||
@driver.press_keycode(10)
|
||||
php:
|
||||
|
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
driver.PressKeyCode(WindowsKeyCode.Windows);
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/windows/PressesKeyCode.html#pressKeyCode-int-"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.keyboard.Keyboard.press_keycode"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#presskeycode"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#press_keycode-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Windows/WindowsDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: false
|
||||
uiautomation: false
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false # TODO Confirm this that mouse movements
|
||||
windows:
|
||||
windows: true # TODO Confirm 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: /session/:session_id/appium/device/press_keycode
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: keycode
|
||||
type: number
|
||||
description: Key code pressed on the device. See [Key Event](http://developer.android.com/reference/android/view/KeyEvent.html).
|
||||
- name: metastate
|
||||
type: number
|
||||
description: Metastate for the keypress. See [Key Event](http://developer.android.com/reference/android/view/KeyEvent.html).
|
||||
- name: flags
|
||||
type: number
|
||||
description: Flags for the keypress. See [Key Event](http://developer.android.com/reference/android/view/KeyEvent.html).
|
||||
|
||||
# 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#L328
|
||||
@@ -0,0 +1,80 @@
|
||||
---
|
||||
name: GSM Call
|
||||
short_description: Make GSM call (Emulator only)
|
||||
|
||||
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)
|
||||
ruby_core:
|
||||
|
|
||||
@driver.gsm_call(phone_number: '5551234567', action: :call)
|
||||
php:
|
||||
|
|
||||
// TODO
|
||||
csharp:
|
||||
|
|
||||
// TODO
|
||||
|
||||
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://appium.github.io/python-client-sphinx/webdriver.extensions.android.html#webdriver.extensions.android.gsm.Gsm.make_gsm_call"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3183"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#gsmcall"
|
||||
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"
|
||||
php: "https://github.com/appium/php-client/" # TODO
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO
|
||||
|
||||
# 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/gsm_call
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: phoneNumber
|
||||
type: string
|
||||
description: The phone number to call to
|
||||
- name: action
|
||||
type: string
|
||||
description: The action - 'call', 'accept', 'cancel', 'hold'.
|
||||
|
||||
# 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#L340
|
||||
@@ -0,0 +1,77 @@
|
||||
---
|
||||
name: GSM Signal
|
||||
short_description: Set GSM signal strength (Emulator only)
|
||||
|
||||
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
|
||||
ruby_core:
|
||||
|
|
||||
@driver.gsm_signal :good
|
||||
php:
|
||||
|
|
||||
// TODO
|
||||
csharp:
|
||||
|
|
||||
// TODO
|
||||
|
||||
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://appium.github.io/python-client-sphinx/webdriver.extensions.android.html#webdriver.extensions.android.gsm.Gsm.set_gsm_signal"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3221"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#gsmsignal"
|
||||
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"
|
||||
php: "https://github.com/appium/php-client/" # TODO
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO
|
||||
|
||||
# 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/gsm_signal
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: signalStrength
|
||||
type: string
|
||||
description: Signal strength in the range [0, 4]
|
||||
|
||||
# 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#L343
|
||||
@@ -0,0 +1,77 @@
|
||||
---
|
||||
name: GSM Voice
|
||||
short_description: Set GSM voice state (Emulator only)
|
||||
|
||||
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
|
||||
ruby_core:
|
||||
|
|
||||
@driver.gsm_voice :home
|
||||
php:
|
||||
|
|
||||
// TODO
|
||||
csharp:
|
||||
|
|
||||
// TODO
|
||||
|
||||
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://appium.github.io/python-client-sphinx/webdriver.extensions.android.html#webdriver.extensions.android.gsm.Gsm.set_gsm_voice"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3241"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#gsmvoice"
|
||||
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"
|
||||
php: "https://github.com/appium/php-client/" # TODO
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO
|
||||
|
||||
# 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/gsm_voice
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: state
|
||||
type: string
|
||||
description: State of GSM voice - 'unregistered', 'home', 'roaming', 'searching', 'denied', 'off', 'on'.
|
||||
|
||||
# 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
|
||||
@@ -0,0 +1,69 @@
|
||||
---
|
||||
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.toggleNetworkSpeed('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://appium.github.io/python-client-sphinx/webdriver.extensions.android.html#webdriver.extensions.android.network.Network.set_network_speed"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3411"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#togglenetworkspeed"
|
||||
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
|
||||
@@ -0,0 +1,80 @@
|
||||
---
|
||||
name: Send SMS
|
||||
short_description: Simulate an SMS message (Emulator only)
|
||||
|
||||
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')
|
||||
ruby_core:
|
||||
|
|
||||
@driver.send_sms(phone_number: '555-123-4567', message: 'Hey lol')
|
||||
php:
|
||||
|
|
||||
// TODO
|
||||
csharp:
|
||||
|
|
||||
// TODO
|
||||
|
||||
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://appium.github.io/python-client-sphinx/webdriver.extensions.android.html#webdriver.extensions.android.sms.Sms.send_sms"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3183"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#sendsms"
|
||||
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"
|
||||
php: "https://github.com/appium/php-client/" # TODO
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO
|
||||
|
||||
# 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: true
|
||||
javascript_wdio: true
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/device/send_sms
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: phoneNumber
|
||||
type: string
|
||||
description: The phone number to send the SMS too
|
||||
- name: message
|
||||
type: string
|
||||
description: The SMS message
|
||||
|
||||
# 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#L337
|
||||
@@ -0,0 +1,69 @@
|
||||
---
|
||||
name: Toggle Airplane Mode
|
||||
short_description: Toggle airplane mode on device
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.toggleAirplaneMode();
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.toggleAirplaneMode();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.toggleAirplaneMode();
|
||||
ruby:
|
||||
|
|
||||
toggle_flight_mode
|
||||
ruby_core:
|
||||
|
|
||||
@driver.toggle_flight_mode
|
||||
php:
|
||||
|
|
||||
// TODO
|
||||
csharp:
|
||||
|
|
||||
// TODO
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/SupportsNetworkStateManagement.html#toggleAirplaneMode--"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#toggleairplanemode"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2712"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#toggle_flight_mode-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#toggle_flight_mode-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO
|
||||
|
||||
# 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: false
|
||||
ruby: true
|
||||
php: true
|
||||
csharp: true
|
||||
javascript_wd: true
|
||||
javascript_wdio: true
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/device/toggle_airplane_mode
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
|
||||
# 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#L396
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
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:
|
||||
|
|
||||
driver.toggleData();
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.toggleData();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.toggleData();
|
||||
ruby:
|
||||
|
|
||||
toggle_data
|
||||
ruby_core:
|
||||
|
|
||||
@driver.toggle_data
|
||||
php:
|
||||
|
|
||||
// TODO
|
||||
csharp:
|
||||
|
|
||||
// TODO
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/SupportsNetworkStateManagement.html#toggleData--"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#toggledata"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2771"
|
||||
ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Device#toggle_data-instance_method"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Device#toggle_data-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO
|
||||
|
||||
# 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: false
|
||||
ruby: true
|
||||
php: true
|
||||
csharp: true
|
||||
javascript_wd: true
|
||||
javascript_wdio: true
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/device/toggle_data
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
|
||||
# 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#L399
|
||||
@@ -0,0 +1,73 @@
|
||||
---
|
||||
name: Toggle Location Services
|
||||
short_description: Switch the state of the location service
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.toggleLocationServices();
|
||||
python:
|
||||
|
|
||||
self.driver.toggle_location_services();
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.toggleLocationServices();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.toggleLocationServices();
|
||||
ruby:
|
||||
|
|
||||
toggle_location_services
|
||||
ruby_core:
|
||||
|
|
||||
@driver.toggle_location_services
|
||||
php:
|
||||
|
|
||||
// TODO
|
||||
csharp:
|
||||
|
|
||||
// TODO
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/AndroidDriver.html#toggleLocationServices--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.location.Location.toggle_location_services"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#togglelocationservices"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Device#toggle_location_services-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO
|
||||
|
||||
# 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: true
|
||||
csharp: true
|
||||
javascript_wd: true
|
||||
javascript_wdio: true
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/device/toggle_location_services
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
|
||||
# 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#L405
|
||||
@@ -0,0 +1,81 @@
|
||||
---
|
||||
name: Toggle WiFi
|
||||
short_description: Switch the state of the WiFi service
|
||||
|
||||
description:
|
||||
>
|
||||
Switch the state of the WiFi service.
|
||||
|
||||
Since Android Q, a method to change the WiFi service state has been restricted. [#12327](https://github.com/appium/appium/issues/12327)
|
||||
Please toggle the state via UI instead of this method.
|
||||
The UI flow depends on devices. Please make sure to encode the correct UI flow on your target device under test.
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.toggleWifi();
|
||||
python:
|
||||
|
|
||||
driver.toggle_wifi()
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.toggleWiFi();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.toggleWiFi();
|
||||
ruby:
|
||||
|
|
||||
toggle_wifi
|
||||
ruby_core:
|
||||
|
|
||||
@driver.toggle_wifi
|
||||
php:
|
||||
|
|
||||
// TODO
|
||||
csharp:
|
||||
|
|
||||
// TODO
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/SupportsNetworkStateManagement.html#toggleWifi--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.android.html#webdriver.extensions.android.network.Network.toggle_wifi"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#togglewifi"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Device#toggle_wifi-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO
|
||||
|
||||
# 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: true
|
||||
csharp: true
|
||||
javascript_wd: true
|
||||
javascript_wdio: true
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/device/toggle_wifi
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
|
||||
# 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#L402
|
||||
@@ -0,0 +1,88 @@
|
||||
---
|
||||
name: Get Performance Data
|
||||
short_description: Returns the information of the system state which is supported to read as like cpu, memory, network traffic, and battery
|
||||
|
||||
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
|
||||
|
||||
ruby_core:
|
||||
|
|
||||
@driver.get_performance_data package_name: 'io.appium.android.apis', data_type: 'cpuinfo', data_read_timeout: 10
|
||||
php:
|
||||
|
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
// Not supported
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/HasSupportedPerformanceDataType.html#getSupportedPerformanceDataTypes--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.android.html#webdriver.extensions.android.performance.Performance.get_performance_data"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3412"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#getperformancedata"
|
||||
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"
|
||||
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: false
|
||||
uiautomation: false
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false # TODO Confirm this that mouse movements
|
||||
windows:
|
||||
windows: false # TODO Confirm this
|
||||
client_support:
|
||||
java: true
|
||||
python: false
|
||||
ruby: true
|
||||
php: false
|
||||
csharp: false
|
||||
javascript_wd: true
|
||||
javascript_wdio: true
|
||||
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/getPerformanceData
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: packageName
|
||||
type: string
|
||||
description: The package name of the application
|
||||
- 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: dataReadTimeout
|
||||
type: number
|
||||
description: The number of attempts to read (optional)
|
||||
response:
|
||||
- type: array<string>
|
||||
description: The information type of the system state which is supported to read as like cpu, memory, network traffic, and battery
|
||||
|
||||
# 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#L325
|
||||
@@ -0,0 +1,77 @@
|
||||
---
|
||||
name: Get Performance Data Types
|
||||
short_description: Returns the information types of the system state which is supported to read as like cpu, memory, network traffic, and battery
|
||||
|
||||
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
|
||||
ruby_core:
|
||||
|
|
||||
@driver.get_performance_data_types
|
||||
php:
|
||||
|
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
// Not supported
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/HasSupportedPerformanceDataType.html#getSupportedPerformanceDataTypes--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.android.html#webdriver.extensions.android.performance.Performance.get_performance_data_types"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3398"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#getperformancedatatypes"
|
||||
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"
|
||||
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: false
|
||||
uiautomation: false
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false # TODO Confirm this that mouse movements
|
||||
windows:
|
||||
windows: false # TODO Confirm this
|
||||
client_support:
|
||||
java: true
|
||||
python: false
|
||||
ruby: true
|
||||
php: false
|
||||
csharp: false
|
||||
javascript_wd: true
|
||||
javascript_wdio: true
|
||||
|
||||
|
||||
# Information about the HTTP endpoints
|
||||
endpoint:
|
||||
url: /session/:session_id/appium/performanceData/types
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
response:
|
||||
- type: array<string>
|
||||
description: The available performance data types (cpuinfo|batteryinfo|networkinfo|memoryinfo)
|
||||
|
||||
# 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#L322
|
||||
@@ -0,0 +1,150 @@
|
||||
---
|
||||
name: Start Recording Screen
|
||||
short_description: Start recording screen
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.startRecordingScreen();
|
||||
driver.startRecordingScreen(new BaseStartScreenRecordingOptions(....));
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.startRecordingScreen();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.startRecordingScreen();
|
||||
ruby:
|
||||
|
|
||||
start_recording_screen
|
||||
start_recording_screen video_size: '1280x720', time_limit: '180', bit_rate: '5000000' # Android
|
||||
start_recording_screen video_type: 'h264', time_limit: '260' # iOS
|
||||
ruby_core:
|
||||
|
|
||||
@driver.start_recording_screen
|
||||
@driver.start_recording_screen video_size: '1280x720', time_limit: '180', bit_rate: '5000000' # Android
|
||||
@driver.start_recording_screen video_type: 'h264', time_limit: '260' # iOS
|
||||
python:
|
||||
|
|
||||
self.driver.start_recording_screen()
|
||||
php:
|
||||
|
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
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://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.screen_record.ScreenRecord.start_recording_screen"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3412"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#startrecordingscreen"
|
||||
ruby:
|
||||
- android: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#start_recording_screen-instance_method"
|
||||
ios: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Ios/Xcuitest/Device#start_recording_screen-instance_method"
|
||||
ruby_core:
|
||||
- android: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#start_recording_screen-instance_method"
|
||||
ios: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Ios/Xcuitest/Device#start_recording_screen-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 Confirm this that mouse movements
|
||||
windows:
|
||||
windows: false # TODO Confirm this
|
||||
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/start_recording_screen
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- 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 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 progress
|
||||
and `forceRestart` parameter is not set to `true`.
|
||||
- name: options.username
|
||||
type: string
|
||||
description: The name of the user for the remote authentication.
|
||||
- name: options.password
|
||||
type: string
|
||||
description: The password for the remote authentication.
|
||||
- name: options.method
|
||||
type: string
|
||||
description: The http multipart upload method name. The 'PUT' one is used by default.
|
||||
- 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: options.timeLimit
|
||||
type: string
|
||||
description: Recording time. 180 seconds is by default.
|
||||
- name: options.videoType
|
||||
type: string
|
||||
description: (iOS Only) The format of the screen capture to be recorded.
|
||||
Available formats are the output of `ffmpeg -codecs` such as `libx264` and `mpeg4`. Defaults to `mpeg4`.
|
||||
- name: options.videoQuality
|
||||
type: string
|
||||
description: (iOS Only) The video encoding quality (low, medium, high, photo - defaults to medium).
|
||||
- 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: options.videoScale
|
||||
type: string
|
||||
description: (iOS Only) The scaling value to apply. Read https://trac.ffmpeg.org/wiki/Scaling for possible values.
|
||||
Example value of 720p scaling is '1280:720'. This can decrease/increase the resulting file size.
|
||||
No scale is applied by default.
|
||||
- name: options.bitRate
|
||||
type: string
|
||||
description: (Android 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: 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: 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.
|
||||
This option is only supported since API level 27 (Android O).
|
||||
|
||||
specifications:
|
||||
jsonwp: https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L345
|
||||
@@ -0,0 +1,91 @@
|
||||
---
|
||||
name: Stop Recording Screen
|
||||
short_description: Stop recording screen
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.stopRecordingScreen();
|
||||
driver.stopRecordingScreen(new BaseStopScreenRecordingOptions(....));
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.stopRecordingScreen();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.stopRecordingScreen();
|
||||
ruby:
|
||||
|
|
||||
stop_recording_screen
|
||||
stop_recording_screen remote_path: 'https://example.com', user: 'example', pass: 'pass', method: 'POST'
|
||||
ruby_core:
|
||||
|
|
||||
@driver.stop_recording_screen
|
||||
@driver.stop_recording_screen remote_path: 'https://example.com', user: 'example', pass: 'pass', method: 'POST'
|
||||
python:
|
||||
|
|
||||
self.driver.stop_recording_screen()
|
||||
php:
|
||||
|
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
driver.StopRecordingScreen();
|
||||
|
||||
client_docs:
|
||||
java: "https://static.javadoc.io/io.appium/java-client/6.1.0/io/appium/java_client/screenrecording/CanRecordScreen.html#stopRecordingScreen--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.screen_record.ScreenRecord.stop_recording_screen"
|
||||
javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3398"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#stoprecordingscreen"
|
||||
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"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: false
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false # TODO Confirm this that mouse movements
|
||||
windows:
|
||||
windows: false # TODO Confirm this
|
||||
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/stop_recording_screen
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: remotePath
|
||||
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 endpoint response value.
|
||||
An exception will be thrown if the generated media file is too big to
|
||||
fit into the available process memory.
|
||||
- name: username
|
||||
description: The name of the user for the remote authentication.
|
||||
- name: password
|
||||
description: The password for the remote authentication.
|
||||
- name: method
|
||||
description: The http multipart upload method name. The 'PUT' one is used by default.
|
||||
response:
|
||||
- type: string
|
||||
description: Base64 encoded string. If remote_path is set, the response is empty string.
|
||||
|
||||
# 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#L348
|
||||
@@ -0,0 +1,85 @@
|
||||
---
|
||||
name: Toggle Touch ID Enrollment
|
||||
short_description: Toggle the simulator being [enrolled](https://support.apple.com/en-ca/ht201371) to accept touchId (iOS Simulator only)
|
||||
|
||||
description:
|
||||
|
|
||||
To enable this feature, the `allowTouchIdEnroll` desired capability must be set to true. When `allowTouchIdEnroll` is set to true
|
||||
the Simulator will be enrolled by default, and the 'Toggle Touch ID Enrollment' changes the enrollment state.
|
||||
|
||||
This call will only work if the Appium process or its parent application (e.g., Terminal.app or Appium.app) has access to Mac OS accessibility in System Preferences > Security & Privacy > Privacy > Accessibility list
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.toggleTouchIDEnrollment(true);
|
||||
python:
|
||||
|
|
||||
self.driver.toggle_touch_id_enrollment()
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.toggleTouchIdEnrollment();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.toggleEnrollTouchId(true);
|
||||
ruby:
|
||||
|
|
||||
toggle_touch_id_enrollment
|
||||
ruby_core:
|
||||
|
|
||||
@driver.toggle_touch_id_enrollment
|
||||
php:
|
||||
|
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
// TODO C# sample
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/ios/PerformsTouchID.html#performTouchID-boolean-"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.hw_actions.HardwareActions.toggle_touch_id_enrollment"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#toggleenrolltouchid"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Ios/Device#toggle_touch_id_enrollment-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:
|
||||
uiautomator2: false
|
||||
espresso: false
|
||||
uiautomator: false
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: false
|
||||
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: /session/:session_id/appium/simulator/toggle_touch_id_enrollment
|
||||
method: 'POST'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: enabled
|
||||
type: boolean
|
||||
description: If true, enable, if falsey disable, otherwise toggle (optional)
|
||||
|
||||
# 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,102 @@
|
||||
---
|
||||
name: Perform Touch ID
|
||||
short_description: Simulate a [touch id](https://support.apple.com/en-ca/ht201371) event (iOS Simulator only)
|
||||
description:
|
||||
|
|
||||
To enable this feature, the `allowTouchIdEnroll` desired capability must be set to true and the Simulator
|
||||
must be [enrolled](https://support.apple.com/en-ca/ht201371).
|
||||
|
||||
When you set `allowTouchIdEnroll` to true, it will set the Simulator to be enrolled by default.
|
||||
The enrollment state can be [toggled](/docs/en/commands/device/simulator/toggle-touch-id-enrollment.md)
|
||||
|
||||
This call will only work if Appium process or its parent application (e.g. Terminal.app or Appium.app) has access to Mac OS accessibility in System Preferences > Security & Privacy > Privacy > Accessibility list
|
||||
|
||||
Finger Print by Android is [here](http://appium.io/docs/en/commands/device/authentication/finger-print/)
|
||||
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.performTouchID(false); // Simulates a failed touch
|
||||
driver.performTouchID(true); // Simulates a passing touch
|
||||
python:
|
||||
|
|
||||
self.driver.touch_id(false); # Simulates a failed touch
|
||||
self.driver.touch_id(true); # Simulates a passing touch
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.touchId(false); // Simulates a failed touch
|
||||
await driver.touchId(true); // Simulates a failed touch
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.touchId(false); // Simulates a failed touch
|
||||
driver.touchId(true); // Simulates a passing touch
|
||||
ruby:
|
||||
|
|
||||
touch_id(false)
|
||||
touch_id(true)
|
||||
|
||||
ruby_core:
|
||||
|
|
||||
@driver.touch_id(false) # Simulates a failed touch
|
||||
@driver.touch_id(true) # Simulates a passing touch
|
||||
php:
|
||||
|
|
||||
// TODO PHP sample
|
||||
csharp:
|
||||
|
|
||||
driver.PerformTouchID(false); // Simulates a failed touch
|
||||
driver.PerformTouchID(true); // Simulates a passing touch
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/ios/PerformsTouchID.html#performTouchID-boolean-"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.hw_actions.HardwareActions.touch_id"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#touchid"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Ios/Device#touch_id-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO PHP documentation link
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/iOS/IOSDriver.cs"
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: false
|
||||
android:
|
||||
uiautomator2: false
|
||||
espresso: false
|
||||
uiautomator: false
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: false
|
||||
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: /session/:session_id/appium/simulator/touch_id
|
||||
method: 'POST'
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
json_parameters:
|
||||
- name: match
|
||||
type: boolean
|
||||
description: Are we simulating a successful touch (true) or a failed touch (false)
|
||||
|
||||
# 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#L424
|
||||
|
||||
links:
|
||||
- name: Appium Docs
|
||||
url: https://github.com/appium/appium-xcuitest-driver/blob/master/docs/touch-id.md
|
||||
@@ -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_display_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://appium.github.io/python-client-sphinx/webdriver.extensions.android.html#webdriver.extensions.android.display.Display.get_display_density"
|
||||
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
|
||||
@@ -0,0 +1,73 @@
|
||||
---
|
||||
name: Open Notifications
|
||||
short_description: Open Android notifications (Emulator only)
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
driver.openNotifications();
|
||||
python:
|
||||
|
|
||||
self.driver.open_notifications();
|
||||
javascript_wd:
|
||||
|
|
||||
await driver.openNotifications();
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.openNotifications();
|
||||
ruby:
|
||||
|
|
||||
open_notifications();
|
||||
ruby_core:
|
||||
|
|
||||
@driver.open_notifications();
|
||||
php:
|
||||
|
|
||||
$driver->openNotifications();
|
||||
csharp:
|
||||
|
|
||||
// TODO
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/AndroidDriver.html#openNotifications--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.android.html#webdriver.extensions.android.common.Common.open_notifications"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#opennotifications"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#open_notifications-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: false
|
||||
uiautomation: false
|
||||
android:
|
||||
espresso: false
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: false
|
||||
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: /session/:session_id/appium/device/open_notifications
|
||||
method: POST
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
|
||||
# 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#L408
|
||||
@@ -0,0 +1,72 @@
|
||||
---
|
||||
name: Get System Bars
|
||||
short_description: Retrieve visibility and bounds information of the status and navigation bars
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
Map<String, String> systemBars = driver.getSystemBars();
|
||||
python:
|
||||
|
|
||||
self.driver.get_system_bars()
|
||||
javascript_wdio:
|
||||
|
|
||||
driver.getSystemBars();
|
||||
ruby:
|
||||
|
|
||||
get_system_bars
|
||||
ruby_core:
|
||||
|
|
||||
@driver.get_system_bars
|
||||
php:
|
||||
|
|
||||
// TODO
|
||||
csharp:
|
||||
|
|
||||
// TODO
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/android/HasAndroidDeviceDetails.html#getSystemBars--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.android.html#webdriver.extensions.android.system_bars.SystemBars.get_system_bars"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#getsystembars"
|
||||
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
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO
|
||||
|
||||
# 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/system_bars
|
||||
method: GET
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
response:
|
||||
- type: array<object>
|
||||
description: Information about visibility and bounds of status and navigation bar
|
||||
|
||||
# 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#L418
|
||||
@@ -0,0 +1,79 @@
|
||||
---
|
||||
name: Get System Time
|
||||
short_description: Get the time on the device
|
||||
|
||||
example_usage:
|
||||
java:
|
||||
|
|
||||
String time = driver.getDeviceTime();
|
||||
python:
|
||||
|
|
||||
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();
|
||||
javascript_wd:
|
||||
|
|
||||
let time = await driver.getDeviceTime();
|
||||
ruby:
|
||||
|
|
||||
device_time
|
||||
ruby_core:
|
||||
|
|
||||
@driver.device_time
|
||||
php:
|
||||
|
|
||||
$time = $driver->getDeviceTime();
|
||||
csharp:
|
||||
|
|
||||
string result = driver.DeviceTime;
|
||||
|
||||
client_docs:
|
||||
java: "https://appium.github.io/java-client/io/appium/java_client/HasDeviceTime.html#getDeviceTime--"
|
||||
python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.device_time.DeviceTime.device_time"
|
||||
javascript_wdio: "https://webdriver.io/docs/api/appium.html#getdevicetime"
|
||||
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"
|
||||
ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#device_time-instance_method"
|
||||
php: "https://github.com/appium/php-client/" # TODO
|
||||
csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO
|
||||
|
||||
# Driver support by platform
|
||||
driver_support:
|
||||
ios:
|
||||
xcuitest: true
|
||||
uiautomation: true
|
||||
android:
|
||||
espresso: true
|
||||
uiautomator2: true
|
||||
uiautomator: true
|
||||
mac:
|
||||
mac: false
|
||||
windows:
|
||||
windows: false
|
||||
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: /session/:session_id/appium/device/system_time
|
||||
method: GET
|
||||
url_parameters:
|
||||
- name: session_id
|
||||
description: ID of the session to route the command to
|
||||
response:
|
||||
- type: string
|
||||
description: Time on the 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#L304
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user