diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml new file mode 100644 index 00000000000..d7378f709f6 --- /dev/null +++ b/.github/workflows/node.js.yml @@ -0,0 +1,37 @@ +# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions + +name: Node.js CI +on: [push, pull_request] + +jobs: + build: + + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [12.x, 14.x] + + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - run: npm run clean + - run: npm run test + - run: npm run e2e-test + + generate_docs: + needs: [build] + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Use Node.js 12.x + uses: actions/setup-node@v1 + with: + node-version: 12.x + - run: npm run clean + - run: npm run generate-docs diff --git a/.gitignore b/.gitignore index 9fa9e790c64..03e89765235 100644 --- a/.gitignore +++ b/.gitignore @@ -41,8 +41,6 @@ old coverage docs/mkdocs.yml 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/ diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 3f0c411e835..00000000000 --- a/.travis.yml +++ /dev/null @@ -1,30 +0,0 @@ -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 diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a94b2918e0..475aac98aea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,313 @@ +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) +=================================== + +Appium 1.19.1 is a patch release + +### iOS(XCUITest) + +Patches "missing target for targetId" bug in Safari tests (see [#14867](https://github.com/appium/appium/issues/14867)) + CHANGES IN VERSION 1.19.0 (FROM 1.18.3) =================================== @@ -58,7 +368,7 @@ Appium 1.19.0 is a minor release ### Flutter -The version is `0.0.25` +The version is `0.25` ### You.i Engine Driver diff --git a/README.md b/README.md index edd50fbea88..cc903894c21 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@ ## Appium [![NPM version](https://badge.fury.io/js/appium.svg)](https://npmjs.org/package/appium) -[![Dependency Status](https://david-dm.org/appium/appium.svg)](https://david-dm.org/appium/appium) -[![devDependency Status](https://david-dm.org/appium/appium/dev-status.svg)](https://david-dm.org/appium/appium#info=devDependencies) +[![Node.js CI](https://github.com/appium/appium/actions/workflows/node.js.yml/badge.svg)](https://github.com/appium/appium/actions/workflows/node.js.yml) [![Monthly Downloads](https://img.shields.io/npm/dm/appium.svg)](https://npmjs.org/package/appium) @@ -19,18 +18,9 @@ started](/docs/en/about-appium/getting-started.md) doc. 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. Choose a driver below for -specific information about how that driver works and how to set it up: - -* 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) +which know how to automate that particular platform. + +Please refer to [Appium Platform Support](/docs/en/about-appium/platform-support.md) for more details. ### Why Appium? @@ -67,7 +57,7 @@ Concepts](/docs/en/about-appium/intro.md). 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+. +Node.js 12+. ### Get Started diff --git a/ci-jobs/generate-docs.yml b/ci-jobs/generate-docs.yml index e539af3ac47..f343999895e 100644 --- a/ci-jobs/generate-docs.yml +++ b/ci-jobs/generate-docs.yml @@ -1,8 +1,8 @@ # parameters: # No params yet, but may add later jobs: - job: generate_docs - pool: - vmImage: "macOS 10.14" + pool: + vmImage: "macOS 10.15" variables: CC: gcc CXX: g++ @@ -15,6 +15,8 @@ jobs: npm install brew install hub hub --version + git config --global user.name "Appium Maintainers" + git config --global user.email "maintainers@appium.io" git remote add triager https://triager:$GITHUB_TOKEN@github.com/appium/appium git checkout -b generate-docs-$BUILD_SOURCEVERSION git status diff --git a/ci-jobs/templates/bundle-template.yml b/ci-jobs/templates/bundle-template.yml index e4b8d42f114..161723b4650 100644 --- a/ci-jobs/templates/bundle-template.yml +++ b/ci-jobs/templates/bundle-template.yml @@ -2,7 +2,7 @@ jobs: - job: bundle_and_upload_appium_zip pool: - vmImage: 'macOS 10.14' + vmImage: 'macOS 10.15' variables: CC: gcc CXX: g++ @@ -14,13 +14,6 @@ jobs: 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 diff --git a/ci-jobs/update-appium-io.yml b/ci-jobs/update-appium-io.yml index 606b4013cc7..a50a0006289 100644 --- a/ci-jobs/update-appium-io.yml +++ b/ci-jobs/update-appium-io.yml @@ -9,7 +9,7 @@ jobs: steps: - task: NodeTool@0 inputs: - versionSpec: '10.x' + versionSpec: '14.x' - script: | pip install mkdocs==0.16.3 git config --global user.email "maintainers@appium.io" @@ -28,4 +28,4 @@ jobs: popd displayName: Make branch with Updated Docs and make PR env: - GITHUB_TOKEN: $(GITHUB_TOKEN) \ No newline at end of file + GITHUB_TOKEN: $(GITHUB_TOKEN) diff --git a/commands-yml/commands/context/get-context.yml b/commands-yml/commands/context/get-context.yml index 5e12308f18c..4093766278a 100644 --- a/commands-yml/commands/context/get-context.yml +++ b/commands-yml/commands/context/get-context.yml @@ -32,9 +32,6 @@ example_usage: context = current_context ruby_core: context = @driver.current_context - php: - | - $context = $driver->context(); csharp: | string Context = driver.Context; @@ -46,7 +43,6 @@ client_docs: 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 @@ -66,7 +62,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/context/get-contexts.yml b/commands-yml/commands/context/get-contexts.yml index 7e6efb2d517..5d64c34a58f 100644 --- a/commands-yml/commands/context/get-contexts.yml +++ b/commands-yml/commands/context/get-contexts.yml @@ -8,10 +8,10 @@ description: 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. - + [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: @@ -33,9 +33,6 @@ example_usage: ruby_core: | context = @driver.available_contexts - php: - | - $contexts = $driver->contexts(); csharp: | List AllContexts = new List(); @@ -51,7 +48,6 @@ client_docs: 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 @@ -71,7 +67,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/context/set-context.yml b/commands-yml/commands/context/set-context.yml index e471272b1c0..b146f74e485 100644 --- a/commands-yml/commands/context/set-context.yml +++ b/commands-yml/commands/context/set-context.yml @@ -50,12 +50,6 @@ example_usage: @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 @@ -75,7 +69,6 @@ client_docs: 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 @@ -95,7 +88,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/activity/current-activity.yml b/commands-yml/commands/device/activity/current-activity.yml index 8957aa263ef..6527c6df695 100644 --- a/commands-yml/commands/device/activity/current-activity.yml +++ b/commands-yml/commands/device/activity/current-activity.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.current_activity - php: - | - $activity = $driver->currentActivity(); csharp: | string activity = driver.CurrentActivity; @@ -35,7 +32,6 @@ client_docs: 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 @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/activity/current-package.yml b/commands-yml/commands/device/activity/current-package.yml index 54e5110327a..7936619ded8 100644 --- a/commands-yml/commands/device/activity/current-package.yml +++ b/commands-yml/commands/device/activity/current-package.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.current_package - php: - | - // TODO PHP sample csharp: | string package = driver.CurrentPackage; @@ -35,7 +32,6 @@ client_docs: 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 @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: false diff --git a/commands-yml/commands/device/activity/start-activity.yml b/commands-yml/commands/device/activity/start-activity.yml index f09bbd5ce70..d44562fa545 100644 --- a/commands-yml/commands/device/activity/start-activity.yml +++ b/commands-yml/commands/device/activity/start-activity.yml @@ -24,10 +24,6 @@ example_usage: 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"); @@ -39,7 +35,6 @@ client_docs: 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 @@ -59,7 +54,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/app/activate-app.yml b/commands-yml/commands/device/app/activate-app.yml index 3e5f86b9409..ffed9dd53b4 100644 --- a/commands-yml/commands/device/app/activate-app.yml +++ b/commands-yml/commands/device/app/activate-app.yml @@ -30,9 +30,6 @@ example_usage: | @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'); @@ -45,7 +42,6 @@ client_docs: 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 @@ -65,7 +61,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/app/app-state.yml b/commands-yml/commands/device/app/app-state.yml index 93202f48305..1bd1a3dc83e 100644 --- a/commands-yml/commands/device/app/app-state.yml +++ b/commands-yml/commands/device/app/app-state.yml @@ -30,9 +30,6 @@ example_usage: | @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 @@ -44,7 +41,6 @@ client_docs: 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 @@ -64,7 +60,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true @@ -73,7 +68,7 @@ client_support: # Information about the HTTP endpoints endpoint: url: /session/:session_id/appium/device/app_state - method: GET + method: POST url_parameters: - name: session_id description: ID of the session to route the command to diff --git a/commands-yml/commands/device/app/background-app.yml b/commands-yml/commands/device/app/background-app.yml index 748d82a6a70..dccfee35c16 100644 --- a/commands-yml/commands/device/app/background-app.yml +++ b/commands-yml/commands/device/app/background-app.yml @@ -42,9 +42,6 @@ example_usage: ruby_core: | @driver.background_app(10) - php: - | - $driver->backgroundApp(10); csharp: | driver.BackgroundApp(10) @@ -56,7 +53,6 @@ client_docs: 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 @@ -76,7 +72,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/app/close-app.yml b/commands-yml/commands/device/app/close-app.yml index f95e2e3cfda..c2a80dfc24d 100644 --- a/commands-yml/commands/device/app/close-app.yml +++ b/commands-yml/commands/device/app/close-app.yml @@ -20,9 +20,6 @@ example_usage: ruby_core: | @driver.close_app - php: - | - $driver->closeApp(); csharp: | driver.CloseApp(); @@ -34,7 +31,6 @@ client_docs: 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 @@ -54,7 +50,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/app/end-test-coverage.yml b/commands-yml/commands/device/app/end-test-coverage.yml index eb1c0e3fd1c..b7bf312c813 100644 --- a/commands-yml/commands/device/app/end-test-coverage.yml +++ b/commands-yml/commands/device/app/end-test-coverage.yml @@ -20,9 +20,6 @@ example_usage: ruby_core: | @driver.end_coverage("Intent", "/path") - php: - | - $driver->endTestCoverage('Intent', '/path'); csharp: | driver.EndTestCoverage("Intent", "/path"); @@ -34,7 +31,6 @@ client_docs: 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 @@ -54,7 +50,6 @@ client_support: java: true python: true ruby: false - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/app/get-app-strings.yml b/commands-yml/commands/device/app/get-app-strings.yml index 1c75031f1b4..ccd9f654a71 100644 --- a/commands-yml/commands/device/app/get-app-strings.yml +++ b/commands-yml/commands/device/app/get-app-strings.yml @@ -20,9 +20,6 @@ example_usage: ruby_core: | @driver.app_strings("en") - php: - | - $strings = $driver->appStrings(); csharp: | Dictionary appStrings = driver.GetAppStringDictionary("end", "/path/to/file"); @@ -34,7 +31,6 @@ client_docs: 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 @@ -54,7 +50,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/app/install-app.yml b/commands-yml/commands/device/app/install-app.yml index 471e1b81dfe..67263c1292f 100644 --- a/commands-yml/commands/device/app/install-app.yml +++ b/commands-yml/commands/device/app/install-app.yml @@ -25,9 +25,6 @@ example_usage: 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") @@ -39,7 +36,6 @@ client_docs: 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 @@ -59,7 +55,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/app/is-app-installed.yml b/commands-yml/commands/device/app/is-app-installed.yml index e4f4e2ccf55..ef2ff00c0cf 100644 --- a/commands-yml/commands/device/app/is-app-installed.yml +++ b/commands-yml/commands/device/app/is-app-installed.yml @@ -25,9 +25,6 @@ example_usage: ruby_core: | @driver.app_installed?('com.example.AppName') - php: - | - $driver->isAppInstalled('com.example.AppName') csharp: | driver.IsAppInstalled("com.example.AppName"); @@ -39,7 +36,6 @@ client_docs: 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 @@ -59,7 +55,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/app/launch-app.yml b/commands-yml/commands/device/app/launch-app.yml index f1206f85ea1..96896f624ab 100644 --- a/commands-yml/commands/device/app/launch-app.yml +++ b/commands-yml/commands/device/app/launch-app.yml @@ -28,9 +28,6 @@ example_usage: ruby_core: | @driver.launch_app - php: - | - $driver->launchApp(); csharp: | driver.LaunchApp(); @@ -42,7 +39,6 @@ client_docs: 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 @@ -62,7 +58,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/app/remove-app.yml b/commands-yml/commands/device/app/remove-app.yml index c7c3b29d758..58f9da06bb7 100644 --- a/commands-yml/commands/device/app/remove-app.yml +++ b/commands-yml/commands/device/app/remove-app.yml @@ -26,9 +26,6 @@ example_usage: ruby_core: | @driver.remove_app('com.example.AppName') - php: - | - $driver->removeApp('com.example.AppName'); csharp: | driver.RemoveApp("com.example.AppName"); @@ -40,7 +37,6 @@ client_docs: 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 @@ -60,7 +56,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/app/reset-app.yml b/commands-yml/commands/device/app/reset-app.yml index 38b4a343fb1..fa7322cfcf4 100644 --- a/commands-yml/commands/device/app/reset-app.yml +++ b/commands-yml/commands/device/app/reset-app.yml @@ -20,9 +20,6 @@ example_usage: ruby_core: | @driver.reset - php: - | - $driver->reset(); csharp: | driver.ResetApp(); @@ -34,7 +31,6 @@ client_docs: 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 @@ -54,7 +50,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/app/terminate-app.yml b/commands-yml/commands/device/app/terminate-app.yml index c3bccc55ea8..7b8b7694110 100644 --- a/commands-yml/commands/device/app/terminate-app.yml +++ b/commands-yml/commands/device/app/terminate-app.yml @@ -30,9 +30,6 @@ example_usage: | @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 @@ -44,7 +41,6 @@ client_docs: 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 @@ -64,7 +60,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/authentication/finger-print.yml b/commands-yml/commands/device/authentication/finger-print.yml index 6fba757a69f..cfc8ea2e587 100644 --- a/commands-yml/commands/device/authentication/finger-print.yml +++ b/commands-yml/commands/device/authentication/finger-print.yml @@ -28,9 +28,6 @@ example_usage: ruby_core: | @driver.finger_print 1 - php: - | - // PHP Code here csharp: | // CSharp Code here @@ -42,7 +39,6 @@ client_docs: 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 @@ -62,7 +58,6 @@ client_support: java: true python: true ruby: true - php: false csharp: false javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/clipboard/get-clipboard.yml b/commands-yml/commands/device/clipboard/get-clipboard.yml index d8ba34da2be..a384ccae54d 100644 --- a/commands-yml/commands/device/clipboard/get-clipboard.yml +++ b/commands-yml/commands/device/clipboard/get-clipboard.yml @@ -8,6 +8,12 @@ description: (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. + Activate App command cannot launch the WebDriverAgent properly on some environments. It depends on XCTest framework by Apple. Then, you should launch the WebDriverAgent using its Springboard's application icon. Follow the example below. + + 1. Open springboard, `@driver.activate_app 'com.apple.springboard'`. + 2. Find the WDA icon with `@driver.find_element :accessibility_id, 'WebDriverAgentRunner-Runner'` (It should be visible on the screen) and click it. + 3. Call the get clipboard API. + 4. Open the application under test with the [Activate App](/docs/en/commands/device/app/activate-app.md). example_usage: java: @@ -30,9 +36,6 @@ example_usage: ruby_core: | @driver.get_clipboard - php: - | - // PHP Code here csharp: | // CSharp Code here @@ -48,7 +51,6 @@ client_docs: ruby_core: - android: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#get_clipboard-instance_method" - ios: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Ios/Device#get_clipboard-instance_method" - php: "https://github.com/appium/php-client/releases/latest" csharp: "https://github.com/appium/appium" # TODO # Driver support by platform @@ -68,7 +70,6 @@ client_support: java: true python: true ruby: true - php: false csharp: false javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/clipboard/set-clipboard.yml b/commands-yml/commands/device/clipboard/set-clipboard.yml index c0e136578c9..eb9f300fdda 100644 --- a/commands-yml/commands/device/clipboard/set-clipboard.yml +++ b/commands-yml/commands/device/clipboard/set-clipboard.yml @@ -27,9 +27,6 @@ example_usage: ruby_core: | @driver.set_clipboard content: 'happy testing' - php: - | - // PHP Code here csharp: | // CSharp Code here @@ -45,7 +42,6 @@ client_docs: ruby_core: - ios: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Ios/Device#set_clipboard-instance_method" - android: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#set_clipboard-instance_method" - php: "https://github.com/appium/php-client/releases/latest" csharp: "https://github.com/appium/appium" # TODO # Driver support by platform @@ -65,7 +61,6 @@ client_support: java: true python: true ruby: true - php: false csharp: false javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/emulator/power_ac.yml b/commands-yml/commands/device/emulator/power_ac.yml index bf762ba34bc..d94b17c216f 100644 --- a/commands-yml/commands/device/emulator/power_ac.yml +++ b/commands-yml/commands/device/emulator/power_ac.yml @@ -48,7 +48,6 @@ client_support: java: true python: true ruby: true - php: false csharp: false javascript_wd: false javascript_wdio: false diff --git a/commands-yml/commands/device/emulator/power_capacity.yml b/commands-yml/commands/device/emulator/power_capacity.yml index 45cc07d9b39..874c239fa67 100644 --- a/commands-yml/commands/device/emulator/power_capacity.yml +++ b/commands-yml/commands/device/emulator/power_capacity.yml @@ -48,7 +48,6 @@ client_support: java: true python: true ruby: true - php: false csharp: false javascript_wd: false javascript_wdio: false diff --git a/commands-yml/commands/device/files/pull-file.yml b/commands-yml/commands/device/files/pull-file.yml index c4ddb9f52fd..fe436815430 100644 --- a/commands-yml/commands/device/files/pull-file.yml +++ b/commands-yml/commands/device/files/pull-file.yml @@ -21,9 +21,6 @@ example_usage: 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"); @@ -35,7 +32,6 @@ client_docs: 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 @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/files/pull-folder.yml b/commands-yml/commands/device/files/pull-folder.yml index 139091b8830..dfdc67b3b8d 100644 --- a/commands-yml/commands/device/files/pull-folder.yml +++ b/commands-yml/commands/device/files/pull-folder.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.pull_folder('/data/local/tmp/file.txt') - php: - | - $folderBase64 = $driver->pullFolder($path); csharp: | byte[] folder = driver.PullFolder("/path/to/device"); @@ -35,7 +32,6 @@ client_docs: 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 @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/files/push-file.yml b/commands-yml/commands/device/files/push-file.yml index 81420761d6e..1399fee39c2 100644 --- a/commands-yml/commands/device/files/push-file.yml +++ b/commands-yml/commands/device/files/push-file.yml @@ -5,7 +5,7 @@ short_description: Place a file onto the device in a particular place example_usage: java: | - driver.pushFile("/path/to/device/foo.bar", new File("/Users/johndoe/files/foo.bar")); + driver.pushFile("/data/local/tmp/foo.bar", new File("/Users/johndoe/files/foo.bar")); python: | dest_path = '/data/local/tmp/test_push_file.txt' @@ -13,23 +13,20 @@ example_usage: self.driver.push_file(dest_path, base64.b64encode(data).decode('utf-8')) javascript_wd: | - await driver.pushFileToDevice('/path/to/device/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8='); + 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('/path/to/device/foo.bar', File.read('path/to/file.png')) + push_file('/data/local/tmp/foo.bar', File.read('path/to/file.png')) ruby_core: | - @driver.push_file('/path/to/device/foo.bar', File.read('path/to/file.png')) - php: - | - $driver->pushFile('/path/to/device/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8='); + @driver.push_file('/data/local/tmp/foo.bar', File.read('path/to/file.png')) csharp: | - driver.PushFile("/path/to/device/foo.bar", new FileInfo("/Users/johndoe/files/foo.bar")) + 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-" @@ -38,7 +35,6 @@ client_docs: 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 @@ -58,7 +54,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/interactions/is-locked.yml b/commands-yml/commands/device/interactions/is-locked.yml index cb20e17ae82..3e15b713c47 100644 --- a/commands-yml/commands/device/interactions/is-locked.yml +++ b/commands-yml/commands/device/interactions/is-locked.yml @@ -22,9 +22,6 @@ example_usage: ruby_core: | @driver.device_locked? - php: - | - // TODO PHP sample csharp: | bool isLocked = driver.IsLocked(); // Supported by IOSDriver & AndroidDriver @@ -36,7 +33,6 @@ client_docs: 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 @@ -56,7 +52,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/interactions/lock.yml b/commands-yml/commands/device/interactions/lock.yml index ec0e008638f..24c71090274 100644 --- a/commands-yml/commands/device/interactions/lock.yml +++ b/commands-yml/commands/device/interactions/lock.yml @@ -25,9 +25,6 @@ example_usage: | @driver.lock @driver.lock(5) # lock 5 seconds - php: - | - $driver->lock(5); csharp: | driver.Lock(); // Supported by IOSDriver & AndroidDriver @@ -39,7 +36,6 @@ client_docs: 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 @@ -59,7 +55,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/interactions/rotate.yml b/commands-yml/commands/device/interactions/rotate.yml index ffc594fc0d5..f4aa36e926d 100644 --- a/commands-yml/commands/device/interactions/rotate.yml +++ b/commands-yml/commands/device/interactions/rotate.yml @@ -12,9 +12,6 @@ example_usage: javascript_wdio: | driver.rotateDevice(100, 100); - php: - | - // TODO PHP sample csharp: | driver.Rotate(new Dictionary { { "x", 114 }, { "y", 198 }, { "duration", 5 }, { "radius", 3 }, { "rotation", 220 }, { "touchCount", 2 } }); @@ -23,7 +20,6 @@ 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 @@ -43,7 +39,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/interactions/shake.yml b/commands-yml/commands/device/interactions/shake.yml index 009ee6c31c5..21ccbbc25b5 100644 --- a/commands-yml/commands/device/interactions/shake.yml +++ b/commands-yml/commands/device/interactions/shake.yml @@ -22,9 +22,6 @@ example_usage: ruby_core: | @driver.shake - php: - | - $driver->shake(); csharp: | driver.ShakeDevice(); @@ -36,7 +33,6 @@ client_docs: 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 @@ -56,7 +52,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/interactions/unlock.yml b/commands-yml/commands/device/interactions/unlock.yml index cdcc31af549..e89dbc508bc 100644 --- a/commands-yml/commands/device/interactions/unlock.yml +++ b/commands-yml/commands/device/interactions/unlock.yml @@ -25,9 +25,6 @@ example_usage: ruby_core: | @driver.unlock - php: - | - // TODO PHP sample csharp: | driver.Unlock(); // Supported by IOSDriver & AndroidDriver @@ -39,7 +36,6 @@ client_docs: 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 @@ -59,7 +55,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/keys/hide-keyboard.yml b/commands-yml/commands/device/keys/hide-keyboard.yml index e6783f8ad0d..63992f62b96 100644 --- a/commands-yml/commands/device/keys/hide-keyboard.yml +++ b/commands-yml/commands/device/keys/hide-keyboard.yml @@ -21,12 +21,6 @@ example_usage: ruby_core: | @driver.hide_keyboard - php: - | - $driver->hideKeyboard(); - $driver->hideKeyboard(array( - 'keyName' => 'Done' - )); csharp: | driver.HideKeyboard(); @@ -38,7 +32,6 @@ client_docs: 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 @@ -58,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/keys/is-keyboard-shown.yml b/commands-yml/commands/device/keys/is-keyboard-shown.yml index 78c76a56f67..53239f133c9 100644 --- a/commands-yml/commands/device/keys/is-keyboard-shown.yml +++ b/commands-yml/commands/device/keys/is-keyboard-shown.yml @@ -47,7 +47,6 @@ client_support: java: true python: true ruby: true - php: false csharp: false javascript_wd: true javascript_wdio: false diff --git a/commands-yml/commands/device/keys/long-press-keycode.yml b/commands-yml/commands/device/keys/long-press-keycode.yml index a8cff5d3338..89a0419ac48 100644 --- a/commands-yml/commands/device/keys/long-press-keycode.yml +++ b/commands-yml/commands/device/keys/long-press-keycode.yml @@ -23,9 +23,6 @@ example_usage: ruby_core: | @driver.long_press_keycode(10) - php: - | - // TODO PHP sample csharp: | driver.LongPressKeyCode(WindowsKeyCode.Back); @@ -37,7 +34,6 @@ client_docs: 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 @@ -57,7 +53,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/keys/press-keycode.yml b/commands-yml/commands/device/keys/press-keycode.yml index 5cb90dec0d3..b3cbe1e20dc 100644 --- a/commands-yml/commands/device/keys/press-keycode.yml +++ b/commands-yml/commands/device/keys/press-keycode.yml @@ -23,9 +23,6 @@ example_usage: ruby_core: | @driver.press_keycode(10) - php: - | - // TODO PHP sample csharp: | driver.PressKeyCode(WindowsKeyCode.Windows); @@ -37,7 +34,6 @@ client_docs: 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 @@ -57,7 +53,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/network/gsm-call.yml b/commands-yml/commands/device/network/gsm-call.yml index b72b92caf60..193fde10541 100644 --- a/commands-yml/commands/device/network/gsm-call.yml +++ b/commands-yml/commands/device/network/gsm-call.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.gsm_call(phone_number: '5551234567', action: :call) - php: - | - // TODO csharp: | // TODO @@ -35,7 +32,6 @@ client_docs: 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 @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: false csharp: false javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/network/gsm-signal.yml b/commands-yml/commands/device/network/gsm-signal.yml index 2395fcb184f..ce9408c2d48 100644 --- a/commands-yml/commands/device/network/gsm-signal.yml +++ b/commands-yml/commands/device/network/gsm-signal.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.gsm_signal :good - php: - | - // TODO csharp: | // TODO @@ -35,7 +32,6 @@ client_docs: 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 @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: false csharp: false javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/network/gsm-voice.yml b/commands-yml/commands/device/network/gsm-voice.yml index e86b1ff8ccd..246fe7729ad 100644 --- a/commands-yml/commands/device/network/gsm-voice.yml +++ b/commands-yml/commands/device/network/gsm-voice.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.gsm_voice :home - php: - | - // TODO csharp: | // TODO @@ -35,7 +32,6 @@ client_docs: 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 @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: false csharp: false javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/network/network-speed.yml b/commands-yml/commands/device/network/network-speed.yml index e9e6306aa21..f328085bd7a 100644 --- a/commands-yml/commands/device/network/network-speed.yml +++ b/commands-yml/commands/device/network/network-speed.yml @@ -47,7 +47,6 @@ client_support: java: true python: true ruby: true - php: false csharp: false javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/network/send-sms.yml b/commands-yml/commands/device/network/send-sms.yml index 04d0aa9758c..2a411774869 100644 --- a/commands-yml/commands/device/network/send-sms.yml +++ b/commands-yml/commands/device/network/send-sms.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.send_sms(phone_number: '555-123-4567', message: 'Hey lol') - php: - | - // TODO csharp: | // TODO @@ -35,7 +32,6 @@ client_docs: 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 @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: false csharp: false javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/network/toggle-airplane-mode.yml b/commands-yml/commands/device/network/toggle-airplane-mode.yml index 046eff45372..8e6a6f1453a 100644 --- a/commands-yml/commands/device/network/toggle-airplane-mode.yml +++ b/commands-yml/commands/device/network/toggle-airplane-mode.yml @@ -18,9 +18,6 @@ example_usage: ruby_core: | @driver.toggle_flight_mode - php: - | - // TODO csharp: | // TODO @@ -31,7 +28,6 @@ client_docs: 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 @@ -51,7 +47,6 @@ client_support: java: true python: false ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/network/toggle-data.yml b/commands-yml/commands/device/network/toggle-data.yml index 810eb1cff97..af64fd228dd 100644 --- a/commands-yml/commands/device/network/toggle-data.yml +++ b/commands-yml/commands/device/network/toggle-data.yml @@ -24,9 +24,6 @@ example_usage: ruby_core: | @driver.toggle_data - php: - | - // TODO csharp: | // TODO @@ -37,7 +34,6 @@ client_docs: 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 @@ -57,7 +53,6 @@ client_support: java: true python: false ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/network/toggle-location-services.yml b/commands-yml/commands/device/network/toggle-location-services.yml index 9fbb58718a2..f4d9b052632 100644 --- a/commands-yml/commands/device/network/toggle-location-services.yml +++ b/commands-yml/commands/device/network/toggle-location-services.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.toggle_location_services - php: - | - // TODO csharp: | // TODO @@ -35,7 +32,6 @@ client_docs: 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 @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/network/toggle-wifi.yml b/commands-yml/commands/device/network/toggle-wifi.yml index 0db1d8b0f76..7be1ac34274 100644 --- a/commands-yml/commands/device/network/toggle-wifi.yml +++ b/commands-yml/commands/device/network/toggle-wifi.yml @@ -29,9 +29,6 @@ example_usage: ruby_core: | @driver.toggle_wifi - php: - | - // TODO csharp: | // TODO @@ -43,7 +40,6 @@ client_docs: 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 @@ -63,7 +59,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/performance-data/get-performance-data.yml b/commands-yml/commands/device/performance-data/get-performance-data.yml index 4569bf5b2f4..fd13d4952cd 100644 --- a/commands-yml/commands/device/performance-data/get-performance-data.yml +++ b/commands-yml/commands/device/performance-data/get-performance-data.yml @@ -22,9 +22,6 @@ example_usage: 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 @@ -36,7 +33,6 @@ client_docs: 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 @@ -56,7 +52,6 @@ client_support: java: true python: false ruby: true - php: false csharp: false javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/performance-data/performance-data-types.yml b/commands-yml/commands/device/performance-data/performance-data-types.yml index 3fbb3e9657c..33fbe0b845d 100644 --- a/commands-yml/commands/device/performance-data/performance-data-types.yml +++ b/commands-yml/commands/device/performance-data/performance-data-types.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.get_performance_data_types - php: - | - // TODO PHP sample csharp: | // Not supported @@ -35,7 +32,6 @@ client_docs: 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 @@ -55,7 +51,6 @@ client_support: java: true python: false ruby: true - php: false csharp: false javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/recording-screen/start-recording-screen.yml b/commands-yml/commands/device/recording-screen/start-recording-screen.yml index 2870de4e9f9..775f0b60548 100644 --- a/commands-yml/commands/device/recording-screen/start-recording-screen.yml +++ b/commands-yml/commands/device/recording-screen/start-recording-screen.yml @@ -7,9 +7,6 @@ example_usage: | driver.startRecordingScreen(); driver.startRecordingScreen(new BaseStartScreenRecordingOptions(....)); - javascript_wd: - | - await driver.startRecordingScreen(); javascript_wdio: | driver.startRecordingScreen(); @@ -26,9 +23,6 @@ example_usage: python: | self.driver.start_recording_screen() - php: - | - // TODO PHP sample csharp: | driver.StartRecordingScreen( @@ -40,7 +34,6 @@ example_usage: 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" @@ -48,7 +41,6 @@ client_docs: 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 @@ -68,7 +60,6 @@ client_support: java: true python: true ruby: true - php: false csharp: false javascript_wd: true javascript_wdio: true @@ -115,7 +106,7 @@ endpoint: - 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`. + Available formats are the output of `ffmpeg -codecs` such as `libx264` and `mpeg4`. Defaults to `mjpeg`. - name: options.videoQuality type: string description: (iOS Only) The video encoding quality (low, medium, high, photo - defaults to medium). diff --git a/commands-yml/commands/device/recording-screen/stop-recording-screen.yml b/commands-yml/commands/device/recording-screen/stop-recording-screen.yml index f3a06dd66d9..d03ee194f47 100644 --- a/commands-yml/commands/device/recording-screen/stop-recording-screen.yml +++ b/commands-yml/commands/device/recording-screen/stop-recording-screen.yml @@ -24,9 +24,6 @@ example_usage: python: | self.driver.stop_recording_screen() - php: - | - // TODO PHP sample csharp: | driver.StopRecordingScreen(); @@ -38,7 +35,6 @@ client_docs: 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 @@ -58,7 +54,6 @@ client_support: java: true python: true ruby: true - php: false csharp: false javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/simulator/toggle-touch-id-enrollment.yml b/commands-yml/commands/device/simulator/toggle-touch-id-enrollment.yml index 687180e3aca..722f7d63888 100644 --- a/commands-yml/commands/device/simulator/toggle-touch-id-enrollment.yml +++ b/commands-yml/commands/device/simulator/toggle-touch-id-enrollment.yml @@ -7,6 +7,8 @@ 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. + Another way to enable touch id is by using `mobile: enrollBiometric`. More info [here](https://github.com/appium/appium-xcuitest-driver#mobile-enrollbiometric). + 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: @@ -28,9 +30,6 @@ example_usage: ruby_core: | @driver.toggle_touch_id_enrollment - php: - | - // TODO PHP sample csharp: | // TODO C# sample @@ -42,7 +41,6 @@ client_docs: 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 @@ -62,7 +60,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/simulator/touch-id.yml b/commands-yml/commands/device/simulator/touch-id.yml index d6ade845590..43737c98749 100644 --- a/commands-yml/commands/device/simulator/touch-id.yml +++ b/commands-yml/commands/device/simulator/touch-id.yml @@ -40,9 +40,6 @@ example_usage: | @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 @@ -55,8 +52,7 @@ client_docs: 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" + csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/iOS/IOSDriver.cs" # Driver support by platform driver_support: @@ -75,7 +71,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/system/display-density.yml b/commands-yml/commands/device/system/display-density.yml index a22c5451abe..db40f881282 100644 --- a/commands-yml/commands/device/system/display-density.yml +++ b/commands-yml/commands/device/system/display-density.yml @@ -43,7 +43,6 @@ client_support: java: true python: true ruby: true - php: false csharp: false javascript_wd: false javascript_wdio: true diff --git a/commands-yml/commands/device/system/open-notifications.yml b/commands-yml/commands/device/system/open-notifications.yml index 47bb589aac0..90cb0969c6a 100644 --- a/commands-yml/commands/device/system/open-notifications.yml +++ b/commands-yml/commands/device/system/open-notifications.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.open_notifications(); - php: - | - $driver->openNotifications(); csharp: | // TODO @@ -35,7 +32,6 @@ client_docs: 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 @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/device/system/system-bars.yml b/commands-yml/commands/device/system/system-bars.yml index b5b3cfdfb93..adc0080309b 100644 --- a/commands-yml/commands/device/system/system-bars.yml +++ b/commands-yml/commands/device/system/system-bars.yml @@ -18,9 +18,6 @@ example_usage: ruby_core: | @driver.get_system_bars - php: - | - // TODO csharp: | // TODO @@ -31,7 +28,6 @@ client_docs: 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 @@ -51,7 +47,6 @@ client_support: java: true python: true ruby: true - php: false csharp: false javascript_wd: false javascript_wdio: true diff --git a/commands-yml/commands/device/system/system-time.yml b/commands-yml/commands/device/system/system-time.yml index 8ef434dbac7..b0461a9b215 100644 --- a/commands-yml/commands/device/system/system-time.yml +++ b/commands-yml/commands/device/system/system-time.yml @@ -24,9 +24,6 @@ example_usage: ruby_core: | @driver.device_time - php: - | - $time = $driver->getDeviceTime(); csharp: | string result = driver.DeviceTime; @@ -38,7 +35,6 @@ client_docs: 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 @@ -58,7 +54,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/actions/clear.yml b/commands-yml/commands/element/actions/clear.yml index b327879684c..a09a7c46075 100644 --- a/commands-yml/commands/element/actions/clear.yml +++ b/commands-yml/commands/element/actions/clear.yml @@ -22,9 +22,6 @@ example_usage: ruby_core: | @driver.find_element(:accessibility_id, "SomeAccessibilityID").clear - php: - | - // TODO PHP sample csharp: | var element = driver.FindElementByAccessibilityId("SomeAccessibilityID"); @@ -38,7 +35,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1780" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:clear" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:clear" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWebElement.cs" # Driver support by platform @@ -58,7 +54,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/actions/click.yml b/commands-yml/commands/element/actions/click.yml index 49fd1faf101..d6c717efe0c 100644 --- a/commands-yml/commands/element/actions/click.yml +++ b/commands-yml/commands/element/actions/click.yml @@ -29,9 +29,6 @@ example_usage: ruby_core: | @driver.find_element(:accessibility_id, 'SomeId').click - php: - | - $driver->byAccessibilityId('SomeId')->click(); csharp: | MobileElement el = driver.FindElement(MobileByAccessibilityID("Some ID"); @@ -48,7 +45,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1672" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#click-instance_method" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#click-instance_method" - php: "https://github.com/appium/php-client/" # TODO csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO # Driver support by platform @@ -68,7 +64,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/actions/send-keys.yml b/commands-yml/commands/element/actions/send-keys.yml index dbb1abadb6d..8c12b593764 100644 --- a/commands-yml/commands/element/actions/send-keys.yml +++ b/commands-yml/commands/element/actions/send-keys.yml @@ -28,10 +28,6 @@ example_usage: ruby_core: | @driver.find_element(:accessibility_id, "SomeAccessibilityID").send_keys("Hello World!") - php: - | - $el = $this->byAccessibilityId('SomeAccessibilityID'); - $el->setText('Hello world!'); csharp: | MobileElement el = driver.FindElement(MobileByAccessibilityID("Some ID"); @@ -48,7 +44,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1700" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#send_keys-instance_method" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#send_keys-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 @@ -68,7 +63,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/attributes/attribute.yml b/commands-yml/commands/element/attributes/attribute.yml index b30b9cec20b..5727b0be0d6 100644 --- a/commands-yml/commands/element/attributes/attribute.yml +++ b/commands-yml/commands/element/attributes/attribute.yml @@ -23,10 +23,6 @@ example_usage: ruby_core: | @driver.find_element(:accessibility_id, 'SomeAccessibilityID').attribute("content-desc") - php: - | - $el = $this->byAccessibilityId('SomeAccessibilityID'); - $name = $el->attribute('name'); csharp: | var element = driver.FindElementByAccessibilityId("SomeAccessibilityID"); @@ -40,7 +36,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1350" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FElement:attribute" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FElement:attribute" - 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/AppiumWebElement.cs" # TODO: Confirm if all the drivers support this @@ -60,7 +55,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/attributes/css-property.yml b/commands-yml/commands/element/attributes/css-property.yml index 69148ca8a8a..487ea9b6555 100644 --- a/commands-yml/commands/element/attributes/css-property.yml +++ b/commands-yml/commands/element/attributes/css-property.yml @@ -29,9 +29,6 @@ example_usage: ruby_core: | @driver.find_element(:id, 'SomeId').css_value - php: - | - // TODO PHP sample csharp: | var element = driver.FindElementById("SomeId"); @@ -44,7 +41,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1447" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:css_value" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:css_value" - 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/AppiumWebElement.cs" # TODO: Confirm if all the drivers support this @@ -64,7 +60,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/attributes/displayed.yml b/commands-yml/commands/element/attributes/displayed.yml index ca9f04582d6..19637ff57e1 100644 --- a/commands-yml/commands/element/attributes/displayed.yml +++ b/commands-yml/commands/element/attributes/displayed.yml @@ -23,10 +23,6 @@ example_usage: ruby_core: | @driver.find_element(:accessibility_id, "SomeAccessibilityID").displayed? - php: - | - $el = $this->byAccessibilityId('SomeAccessibilityID'); - $isDisplayed = $el->displayed(); csharp: | var element = driver.FindElementByAccessibilityId("SomeAccessibilityID"); @@ -39,7 +35,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1370" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FElement:displayed%3F" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FElement:displayed%3F" - 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/AppiumWebElement.cs" # TODO: Confirm support for these per platform @@ -59,7 +54,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/attributes/enabled.yml b/commands-yml/commands/element/attributes/enabled.yml index 33a8ef60b49..626afa9b223 100644 --- a/commands-yml/commands/element/attributes/enabled.yml +++ b/commands-yml/commands/element/attributes/enabled.yml @@ -22,9 +22,6 @@ example_usage: ruby_core: | @driver.find_element(:accessibility_id, "SomeAccessibilityID").enabled? - php: - | - // TODO PHP sample csharp: | var element = driver.FindElementByAccessibilityId("SomeAccessibilityID"); @@ -37,7 +34,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1386" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#enabled%3F-instance_method" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#enabled%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/AppiumWebElement.cs" # TODO: Confirm support for these per platform @@ -57,7 +53,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/attributes/location-in-view.yml b/commands-yml/commands/element/attributes/location-in-view.yml index 600b0e2d973..bd89dfda12c 100644 --- a/commands-yml/commands/element/attributes/location-in-view.yml +++ b/commands-yml/commands/element/attributes/location-in-view.yml @@ -37,7 +37,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/attributes/location.yml b/commands-yml/commands/element/attributes/location.yml index e42dcbbe6f6..cc33d90bb56 100644 --- a/commands-yml/commands/element/attributes/location.yml +++ b/commands-yml/commands/element/attributes/location.yml @@ -25,10 +25,6 @@ example_usage: ruby_core: | @driver.find_element(:accessibility_id, 'SomeAccessibilityID').location - php: - | - $el = $this->byAccessibilityId('SomeAccessibilityID'); - $location = $el->location(); csharp: | var element = driver.FindElementByAccessibilityId("SomeAccessibilityID"); @@ -41,7 +37,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2175" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:location" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:location" - 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/AppiumWebElement.cs" # TODO: Confirm if all the drivers support this @@ -61,7 +56,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/attributes/name.yml b/commands-yml/commands/element/attributes/name.yml index b2d31f1fdf1..0bda0fb6f60 100644 --- a/commands-yml/commands/element/attributes/name.yml +++ b/commands-yml/commands/element/attributes/name.yml @@ -23,9 +23,6 @@ example_usage: ruby_core: | @driver.find_element(:accessibility_id, 'SomeAccessibilityID').tag_name - php: - | - // TODO PHP sample csharp: | var element = driver.FindElementByAccessibilityId("SomeAccessibilityID"); @@ -38,7 +35,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1336" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#tag_name-instance_method" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#tag_name-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/AppiumWebElement.cs" # TODO: Confirm if all the drivers support this @@ -58,7 +54,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/attributes/page-index.yml b/commands-yml/commands/element/attributes/page-index.yml index 7141addf8e4..6e9fd32ebb3 100644 --- a/commands-yml/commands/element/attributes/page-index.yml +++ b/commands-yml/commands/element/attributes/page-index.yml @@ -18,9 +18,6 @@ example_usage: ruby: | // TODO Ruby sample - php: - | - // TODO PHP sample csharp: | // TODO C# sample @@ -31,7 +28,6 @@ client_docs: javascript_wdio: "https://webdriver.io/docs/api/mjsonwp.html#getpageindex" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1336" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#tag_name-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 # TODO: Confirm if all the drivers support this @@ -51,7 +47,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/attributes/rect.yml b/commands-yml/commands/element/attributes/rect.yml index 0eb2ecf13a6..d7896dcc1a6 100644 --- a/commands-yml/commands/element/attributes/rect.yml +++ b/commands-yml/commands/element/attributes/rect.yml @@ -27,9 +27,6 @@ example_usage: | element = @driver.find_element :accessibility_id, "SomeAccessibilityID" element.rect - php: - | - // TODO PHP sample csharp: | var element = driver.FindElementByAccessibilityId("SomeAccessibilityID"); @@ -40,7 +37,6 @@ client_docs: javascript_wdio: "https://webdriver.io/docs/api/webdriver.html#getelementrect" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#rect-instance_method" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#rect-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/AppiumWebElement.cs" # TODO: Confirm if all the drivers support this @@ -60,7 +56,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/attributes/replace-value.yml b/commands-yml/commands/element/attributes/replace-value.yml index cfc1cd763a5..36ac28a54c5 100644 --- a/commands-yml/commands/element/attributes/replace-value.yml +++ b/commands-yml/commands/element/attributes/replace-value.yml @@ -27,9 +27,6 @@ example_usage: | element = @driver.find_element :accessibility_id, "SomeAccessibilityID" @driver.replace_value element, 'some' - php: - | - // TODO PHP sample csharp: | // TODO C# sample @@ -41,7 +38,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1832" # TODO JAvaScript documentation link ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#replace_value-instance_method" ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#replace_value-instance_method" - 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 @@ -61,7 +57,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/attributes/selected.yml b/commands-yml/commands/element/attributes/selected.yml index d6ddfb7262e..33390bc2562 100644 --- a/commands-yml/commands/element/attributes/selected.yml +++ b/commands-yml/commands/element/attributes/selected.yml @@ -22,9 +22,6 @@ example_usage: ruby_core: | @driver.find_element(:accessibility_id, "SomeAccessibilityID").selected? - php: - | - // TODO PHP sample csharp: | var element = driver.FindElementByAccessibilityId("SomeAccessibilityID"); @@ -37,7 +34,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1402" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#selected%3F-instance_method" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#selected%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/AppiumWebElement.cs" # TODO: Confirm support for these per platform @@ -57,7 +53,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/attributes/size.yml b/commands-yml/commands/element/attributes/size.yml index 60c3cb14594..15f9cec22d5 100644 --- a/commands-yml/commands/element/attributes/size.yml +++ b/commands-yml/commands/element/attributes/size.yml @@ -25,10 +25,6 @@ example_usage: ruby_core: | @driver.find_element(:accessibility_id, 'SomeAccessibilityID').size - php: - | - $el = $this->byAccessibilityId('SomeAccessibilityID'); - $size = $el->size(); csharp: | var element = driver.FindElementByAccessibilityId("SomeAccessibilityID"); @@ -41,7 +37,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2203" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:size" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:size" - 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/AppiumWebElement.cs" # TODO: Confirm if all the drivers support this @@ -61,7 +56,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/attributes/text.yml b/commands-yml/commands/element/attributes/text.yml index 8f6a3bfa18f..3c021303118 100644 --- a/commands-yml/commands/element/attributes/text.yml +++ b/commands-yml/commands/element/attributes/text.yml @@ -29,10 +29,6 @@ example_usage: | element = @driver.find_element :accessibility_id, "SomeAccessibilityID" element.text - php: - | - $el = $this->byAccessibilityId('SomeAccessibilityID'); - $text = $el->text(); csharp: | var element = driver.FindElementByClassName("SomeClassName"); @@ -45,7 +41,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1832" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#text-instance_method" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#text-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/AppiumWebElement.cs" # Driver support by platform @@ -65,7 +60,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/find-element.yml b/commands-yml/commands/element/find-element.yml index ce396cb7c40..d22d4a900eb 100644 --- a/commands-yml/commands/element/find-element.yml +++ b/commands-yml/commands/element/find-element.yml @@ -26,9 +26,6 @@ example_usage: ruby_core: | @driver.find_element(:accessibility_id, 'SomeAccessibilityID') - php: - | - $el = $this->byAccessibilityId('SomeAccessibilityID'); csharp: | AndroidElement elementOne = driver.FindElementByAccessibilityID("Some ID"); @@ -41,7 +38,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L745" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/SearchContext:find_element" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/SearchContext:find_element" - 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 @@ -61,7 +57,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/find-elements.yml b/commands-yml/commands/element/find-elements.yml index 0398111bfa2..b145051a461 100644 --- a/commands-yml/commands/element/find-elements.yml +++ b/commands-yml/commands/element/find-elements.yml @@ -33,7 +33,7 @@ example_usage: List elementsTwo = (List) driver.findElementsByClassName("SomeClassName"); python: | - el = self.driver.find_elements_by_accessibility_id('SomeAccessibilityID') + el = driver.find_element(AppiumBy.ACCESSIBILITY_ID,'SomeAccessibilityID') javascript_wd: | let elementsOne = await driver.elementsByAccessibilityId("SomeAccessibilityID"); @@ -47,9 +47,6 @@ example_usage: ruby_core: | @driver.find_elements(:accessibility_id, "~SomeAccessibilityID") - php: - | - $els = $this->elements($this->using('accessibility id')->value('SomeAccessibilityID')); csharp: | IEnumerable elementsOne = driver.FindElementsByAccessibilityId("SomeAccessibilityID"); @@ -62,7 +59,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L798" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/SearchContext:find_elements" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/SearchContext:find_elements" - 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/AppiumWebElement.cs" # Driver support by platform @@ -82,7 +78,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/other/active.yml b/commands-yml/commands/element/other/active.yml index d7622cd6ff6..5a30c0364ab 100644 --- a/commands-yml/commands/element/other/active.yml +++ b/commands-yml/commands/element/other/active.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.switch_to.active_element - php: - | - // TODO PHP example csharp: | IWebElement currentElement = driver.SwitchTo().ActiveElement(); @@ -36,7 +33,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1934" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/0.0.28/Selenium/WebDriver/TargetLocator#active_element-instance_method" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/0.0.28/Selenium/WebDriver/TargetLocator#active_element-instance_method" - php: "https://github.com/appium/php-client/" # TODO csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteTargetLocator.cs" # Driver support by platform @@ -56,7 +52,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true @@ -65,7 +60,7 @@ client_support: # Information about the HTTP endpoints endpoint: url: /session/:session_id/element/active - method: 'POST' + method: "'GET'(W3C), 'POST'(JSONWP)" response: - name: ELEMENT type: object diff --git a/commands-yml/commands/element/other/equals-element.yml b/commands-yml/commands/element/other/equals-element.yml index 8eeca70d7fe..1989353220b 100644 --- a/commands-yml/commands/element/other/equals-element.yml +++ b/commands-yml/commands/element/other/equals-element.yml @@ -33,9 +33,6 @@ example_usage: element1 = @driver.find_element :class_name, "someClass" element2 = @driver.find_element :class_name, "someOtherClass" element1 == element2 - php: - | - // TODO PHP sample csharp: | var elementOne = driver.FindElementByClassName("SomeClassName"); @@ -49,7 +46,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1463" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/0.0.28/Selenium/WebDriver/Element#==-instance_method" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/0.0.28/Selenium/WebDriver/Element#==-instance_method" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWebElement.cs" # TODO: Confirm support for these per platform @@ -69,7 +65,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/element/other/submit.yml b/commands-yml/commands/element/other/submit.yml index 13e7c76c95b..5c58658a08a 100644 --- a/commands-yml/commands/element/other/submit.yml +++ b/commands-yml/commands/element/other/submit.yml @@ -30,9 +30,6 @@ example_usage: | element = @driver.find_element :class_name, "someClass" element.submit element - php: - | - // TODO PHP sample csharp: | var element = driver.FindElementByClassName("SomeClassName"); @@ -45,7 +42,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1741" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/0.0.28/Selenium/WebDriver/Element#submit-instance_method" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/0.0.28/Selenium/WebDriver/Element#submit-instance_method" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWebElement.cs" # Driver support by platform @@ -65,7 +61,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/example.yml b/commands-yml/commands/example.yml index c9b176f60b3..7b917e927fa 100644 --- a/commands-yml/commands/example.yml +++ b/commands-yml/commands/example.yml @@ -26,9 +26,6 @@ example_usage: ruby_core: | # Ruby Code in ruby_lib_core here - php: - | - // PHP Code here csharp: | driver.FindElementById("elementId").Click(); @@ -41,7 +38,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/releases" ruby: "https://github.com/appium/ruby_lib/releases/latest" ruby_core: "https://github.com/appium/ruby_lib/releases/latest" - php: "https://github.com/appium/php-client/releases/latest" csharp: "https://github.com/appium/appium" # TODO # Driver support by platform @@ -70,7 +66,6 @@ client_support: python: min: 2 ruby: true # If true, means it supports all - php: false # If false(y), means it is not supported # Information about the HTTP endpoints diff --git a/commands-yml/commands/interactions/actions.yml b/commands-yml/commands/interactions/actions.yml index 8907ad47c3d..ac5392cef2b 100644 --- a/commands-yml/commands/interactions/actions.yml +++ b/commands-yml/commands/interactions/actions.yml @@ -96,14 +96,14 @@ example_usage: # Build multiple action chains # Example: expressing a 1-second pinch-and-zoom # with a 500ms wait after the fingers first touch: - f1 = action.add_pointer_input(:touch, 'finger1') + f1 = ::Selenium::WebDriver::Interactions.pointer(:touch, name: 'finger1') f1.create_pointer_move(duration: 1, x: 200, y: 500, origin: ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT) f1.create_pointer_down(:left) f1.create_pause(0.5) f1.create_pointer_move(duration: 1, x: 200, y: 200, origin: ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT) f1.create_pointer_up(:left) - f2 = action.add_pointer_input(:touch, 'finger2') + f2 = ::Selenium::WebDriver::Interactions.pointer(:touch, name: 'finger2') f2.create_pointer_move(duration: 1, x: 200, y: 500, origin: ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT) f2.create_pointer_down(:left) f2.create_pause(0.5) @@ -123,14 +123,14 @@ example_usage: # Build multiple action chains # Example: expressing a 1-second pinch-and-zoom # with a 500ms wait after the fingers first touch: - f1 = @driver.action.add_pointer_input(:touch, 'finger1') + f1 = ::Selenium::WebDriver::Interactions.pointer(:touch, name: 'finger1') f1.create_pointer_move(duration: 1, x: 200, y: 500, origin: ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT) f1.create_pointer_down(:left) f1.create_pause(0.5) f1.create_pointer_move(duration: 1, x: 200, y: 200, origin: ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT) f1.create_pointer_up(:left) - f2 = @driver.action.add_pointer_input(:touch, 'finger2') + f2 = ::Selenium::WebDriver::Interactions.pointer(:touch, name: 'finger2') f2.create_pointer_move(duration: 1, x: 200, y: 500, origin: ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT) f2.create_pointer_down(:left) f2.create_pause(0.5) @@ -138,9 +138,6 @@ example_usage: f2.create_pointer_up(:left) @driver.perform_actions [f1, f2] - php: - | - // TODO csharp: | var inputDevice = new PointerInputDevice(PointerKind.Touch); @@ -160,7 +157,6 @@ client_docs: #javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L44" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/W3CActionBuilder" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/W3CActionBuilder" - php: "https://github.com/jupeter/selenium-php-webdriver/blob/master/Webdriver/Common/ActionChains.php" csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO # Driver support by platform @@ -180,7 +176,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/interactions/mouse/button-down.yml b/commands-yml/commands/interactions/mouse/button-down.yml index 2947a7516ae..75a0fbfcaa6 100644 --- a/commands-yml/commands/interactions/mouse/button-down.yml +++ b/commands-yml/commands/interactions/mouse/button-down.yml @@ -34,9 +34,6 @@ example_usage: ruby_core: | @driver.action.move_to(element).click_and_hold.perform - php: - | - // TODO PHP sample csharp: | Actions action = new Actions(driver); @@ -51,7 +48,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1625" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/ActionBuilder:click_and_hold" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/ActionBuilder:click_and_hold" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Interactions/Actions.cs" # Driver support by platform @@ -71,7 +67,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/interactions/mouse/button-up.yml b/commands-yml/commands/interactions/mouse/button-up.yml index be6abccf879..87e4ef0b514 100644 --- a/commands-yml/commands/interactions/mouse/button-up.yml +++ b/commands-yml/commands/interactions/mouse/button-up.yml @@ -42,9 +42,6 @@ example_usage: ruby_core: | @driver.action.click_and_hold(el).move_to(el, 10, 10).release.perform - php: - | - // TODO PHP sample csharp: | Actions action = new Actions(driver); @@ -61,7 +58,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1645" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/ActionBuilder:release" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/ActionBuilder:release" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Interactions/Actions.cs" # Driver support by platform @@ -81,7 +77,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/interactions/mouse/click.yml b/commands-yml/commands/interactions/mouse/click.yml index 9db8331d874..475a37d1869 100644 --- a/commands-yml/commands/interactions/mouse/click.yml +++ b/commands-yml/commands/interactions/mouse/click.yml @@ -29,9 +29,6 @@ example_usage: ruby_core: | @driver.action.move_to(element).click.perform - php: - | - // TODO PHP sample csharp: | Actions action = new Actions(driver); @@ -39,8 +36,6 @@ example_usage: action.Click(); action.Perform(); - - client_docs: java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/Actions.html#click--" python: "http://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.action_chains.ActionChains.click" @@ -48,7 +43,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1665" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Mouse:click" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Mouse:click" - 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 @@ -68,7 +62,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/interactions/mouse/doubleclick.yml b/commands-yml/commands/interactions/mouse/doubleclick.yml index 4144035d283..a2274c38270 100644 --- a/commands-yml/commands/interactions/mouse/doubleclick.yml +++ b/commands-yml/commands/interactions/mouse/doubleclick.yml @@ -29,9 +29,6 @@ example_usage: ruby_core: | @driver.action.move_to(element).double_click.perform - php: - | - // TODO PHP sample csharp: | Actions action = new Actions(driver); @@ -46,7 +43,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1686" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/ActionBuilder:double_click" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/ActionBuilder:double_click" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Interactions/Actions.cs" # Driver support by platform @@ -66,7 +62,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/interactions/mouse/moveto.yml b/commands-yml/commands/interactions/mouse/moveto.yml index 445fee35b4e..000054b9072 100644 --- a/commands-yml/commands/interactions/mouse/moveto.yml +++ b/commands-yml/commands/interactions/mouse/moveto.yml @@ -32,9 +32,6 @@ example_usage: | @driver.mouse.move_to(element) @driver.mouse.move_to(element, 5, 5) - php: - | - // TODO PHP sample csharp: | Actions action = new Actions(driver); @@ -50,7 +47,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1600" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Mouse:move_to" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Mouse:move_to" - 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 @@ -70,7 +66,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/interactions/touch/double-tap.yml b/commands-yml/commands/interactions/touch/double-tap.yml index 52f3d55ea80..c04f39b4968 100644 --- a/commands-yml/commands/interactions/touch/double-tap.yml +++ b/commands-yml/commands/interactions/touch/double-tap.yml @@ -32,9 +32,6 @@ example_usage: ruby_core: | @driver.touch_action.double_tap(element).perform - php: - | - // TODO PHP sample csharp: | TouchActions action = new TouchActions(driver); @@ -42,13 +39,12 @@ example_usage: action.Perform(); client_docs: - java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#doubleTap-org.openqa.selenium.WebElement-" - python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.double_tap" + java: "https://www.selenium.dev/selenium/docs/api/java/overview-summary.html" + python: "https://selenium-python.readthedocs.io/api.html?highlight=tap_and_hold#selenium.webdriver.common.touch_actions.TouchActions.double_tap" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L425" javascript_wdio: "https://webdriver.io/docs/api/jsonwp.html#touchdoubleclick" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:double_tap" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:double_tap" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Interactions/TouchActions.cs" # Driver support by platform @@ -68,7 +64,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/interactions/touch/flick.yml b/commands-yml/commands/interactions/touch/flick.yml index 4653329ed21..306025ce1ae 100644 --- a/commands-yml/commands/interactions/touch/flick.yml +++ b/commands-yml/commands/interactions/touch/flick.yml @@ -27,9 +27,6 @@ example_usage: ruby_core: | @driver.touch_action.flick(element, 1, 10, 10).perform - php: - | - // TODO PHP sample csharp: | TouchActions action = new TouchActions(driver); @@ -38,12 +35,11 @@ example_usage: client_docs: java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#flick-org.openqa.selenium.WebElement-int-int-int-" - python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.flick_element" + python: "https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.flick_element" javascript_wdio: "https://webdriver.io/docs/api/jsonwp.html#touchflick" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1513" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:flick" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:flick" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Interactions/TouchActions.cs" # Driver support by platform @@ -63,7 +59,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/interactions/touch/long-press.yml b/commands-yml/commands/interactions/touch/long-press.yml index ffc3fb02ff4..99af3d0db6d 100644 --- a/commands-yml/commands/interactions/touch/long-press.yml +++ b/commands-yml/commands/interactions/touch/long-press.yml @@ -35,9 +35,6 @@ example_usage: ruby_core: | @driver.touch_action.long_press(element).perform - php: - | - // TODO PHP sample csharp: | var touchAction = new TouchAction(Driver); @@ -45,12 +42,11 @@ example_usage: client_docs: java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#longPress-org.openqa.selenium.WebElement-" - python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.long_press" + python: "https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.long_press" javascript_wdio: "https://webdriver.io/docs/api/mjsonwp.html#touchperform" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1531" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:long_press" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:long_press" - 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 @@ -70,7 +66,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/interactions/touch/move.yml b/commands-yml/commands/interactions/touch/move.yml index e95abcb5026..2fe713cc85d 100644 --- a/commands-yml/commands/interactions/touch/move.yml +++ b/commands-yml/commands/interactions/touch/move.yml @@ -40,9 +40,6 @@ example_usage: ruby_core: | @driver.touch_action.down(element).move_to().perform - php: - | - // TODO PHP sample csharp: | TouchActions action = new TouchActions(driver); @@ -52,12 +49,11 @@ example_usage: client_docs: java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#down-int-int-" - python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.move" + python: "https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.touch_actions" javascript_wdio: "https://webdriver.io/docs/api/mjsonwp.html#multitouchperform" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1531" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:move" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:move" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Interactions/TouchActions.cs" # Driver support by platform @@ -77,7 +73,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/interactions/touch/multi-touch-perform.yml b/commands-yml/commands/interactions/touch/multi-touch-perform.yml index 8202bffb39c..0e505503db5 100644 --- a/commands-yml/commands/interactions/touch/multi-touch-perform.yml +++ b/commands-yml/commands/interactions/touch/multi-touch-perform.yml @@ -2,6 +2,10 @@ name: Multi Touch Perform short_description: Perform a multi touch action sequence +description: + | + Deprecated. Please consider using [W3C Actions](/docs/en/commands/interactions/actions.md) + example_usage: java: | @@ -55,9 +59,6 @@ example_usage: ruby_core: | @driver.multi_touch.down(element).move_to(10, 100).up(50, 50).perform - php: - | - // TODO PHP sample csharp: | // TODO C# sample @@ -69,7 +70,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1546" ruby: "https://www.rubydoc.info/github/appium/ruby_lib/Appium/MultiTouch" ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib/Appium/MultiTouch" - 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 @@ -89,7 +89,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/interactions/touch/scroll.yml b/commands-yml/commands/interactions/touch/scroll.yml index 5d2c39e7fab..47c7b2c710b 100644 --- a/commands-yml/commands/interactions/touch/scroll.yml +++ b/commands-yml/commands/interactions/touch/scroll.yml @@ -28,9 +28,6 @@ example_usage: ruby_core: | @driver.touch_actions.scroll(element, 10, 100).perform - php: - | - // TODO PHP sample csharp: | TouchActions action = new TouchActions(driver); @@ -39,12 +36,11 @@ example_usage: client_docs: java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#scroll-int-int-" - python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.scroll" + python: "https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.scroll" javascript_wdio: "https://webdriver.io/docs/api/jsonwp.html#touchscroll" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L425" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:scroll" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:scroll" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Interactions/TouchActions.cs" # Driver support by platform @@ -64,7 +60,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/interactions/touch/tap.yml b/commands-yml/commands/interactions/touch/tap.yml index 2e438afc056..dc3c7b24c06 100644 --- a/commands-yml/commands/interactions/touch/tap.yml +++ b/commands-yml/commands/interactions/touch/tap.yml @@ -37,9 +37,6 @@ example_usage: ruby_core: | @driver.touch_action.single_tap(element).perform - php: - | - // TODO PHP sample csharp: | TouchAction touchAction = new TouchAction(driver); @@ -52,7 +49,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1531" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:single_tap" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:single_tap" - 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 @@ -72,7 +68,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/interactions/touch/touch-down.yml b/commands-yml/commands/interactions/touch/touch-down.yml index 841228c1da9..a9919f797a2 100644 --- a/commands-yml/commands/interactions/touch/touch-down.yml +++ b/commands-yml/commands/interactions/touch/touch-down.yml @@ -36,9 +36,6 @@ example_usage: ruby_core: | @driver.touch_action.down(element).move().perform - php: - | - // TODO PHP sample csharp: | TouchActions action = new TouchActions(driver); @@ -48,12 +45,11 @@ example_usage: client_docs: java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#down-int-int-" - python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.tap_and_hold" + python: "https://selenium-python.readthedocs.io/api.html?highlight=tap_and_hold#selenium.webdriver.common.touch_actions.TouchActions.tap_and_hold" javascript_wdio: "https://webdriver.io/docs/api/jsonwp.html#touchdown" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1546" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/TouchActionBuilder#down-instance_method" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/TouchActionBuilder#down-instance_method" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Interactions/TouchActions.cs" # Driver support by platform @@ -73,7 +69,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/interactions/touch/touch-perform.yml b/commands-yml/commands/interactions/touch/touch-perform.yml index 8234764f170..2fe09241f0a 100644 --- a/commands-yml/commands/interactions/touch/touch-perform.yml +++ b/commands-yml/commands/interactions/touch/touch-perform.yml @@ -4,7 +4,9 @@ short_description: Perform a touch action sequence description: | - This functionality is only available from within a native context + Deprecated. Please consider using [W3C Actions](/docs/en/commands/interactions/actions.md). + + This functionality is only available from within a native context. 'Touch Perform' works similarly to the other singular touch interactions, except that this allows you to chain together more than one touch action as one command. This is useful because Appium commands are sent over the network and there's latency between commands. This latency can make certain touch @@ -39,6 +41,7 @@ example_usage: | driver.touchPerform([ { action: 'press', options: { x: 100, y: 250 }}, + { action: 'wait', options: { ms: 100 }}, { action: 'moveTo', options: { x: 300, y: 100 }}, { action: 'release' } ]); @@ -48,9 +51,6 @@ example_usage: ruby_core: | @driver.touch_action.down(element).move_to(10, 100).up(50, 50).perform - php: - | - // TODO PHP sample csharp: | TouchAction action = new TouchAction(driver); @@ -66,7 +66,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1546" ruby: "https://www.rubydoc.info/github/appium/ruby_lib/Appium/TouchAction" ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib/Appium/TouchAction" - 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/MultiAction/TouchAction.cs" # Driver support by platform @@ -86,7 +85,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/interactions/touch/touch-up.yml b/commands-yml/commands/interactions/touch/touch-up.yml index eac729a3634..6403fad82ad 100644 --- a/commands-yml/commands/interactions/touch/touch-up.yml +++ b/commands-yml/commands/interactions/touch/touch-up.yml @@ -36,9 +36,6 @@ example_usage: ruby_core: | @driver.touch_action.down(element).up(50, 50).perform - php: - | - // TODO PHP sample csharp: | TouchActions action = new TouchActions(driver); @@ -48,12 +45,11 @@ example_usage: client_docs: java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#up-int-int-" - python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.release" + python: "https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.release" javascript_wdio: "https://webdriver.io/docs/api/jsonwp.html#touchup" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1546" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:up" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:up" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Interactions/TouchActions.cs" # Driver support by platform @@ -73,7 +69,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/mobile-command.yml b/commands-yml/commands/mobile-command.yml index 48787598d08..bb52adf1ac9 100644 --- a/commands-yml/commands/mobile-command.yml +++ b/commands-yml/commands/mobile-command.yml @@ -10,125 +10,19 @@ (see [Execute Script](/docs/en/commands/web/execute.md) for more details on syntax). - List of available commands: + ## Android + ### UiAutomator2 - ### IOS - | Command | Description | Argument | Argument Example | - | ------- | ----------- | -------- | ---------------- | - | mobile:viewportScreenshot | Like [screenshot](/docs/en/commands/session/screenshot.md) but only includes contents of viewport | | | + Please refer to [mobile commands](https://github.com/appium/appium-uiautomator2-driver#platform-specific-extensions) section in UiAutomator2 driver repository. - ### IOS (XCUITest Only) - | Command | Description | Argument | Argument Example | - | ------- | ----------- | -------- | ---------------- | - | mobile:startPerfRecord | Starts performance profiling for the device under test | | | - | mobile:stopPerfRecord | Stops performance profiling for the device under test | | | - | mobile:startLogsBroadcast | Starts iOS system logs broadcast websocket on the same host and port where Appium server is running at `/ws/session/:sessionId:/appium/device/syslog` endpoint. | | | - | mobile:stopLogsBroadcast | Stops the iOS system logs broadcasting websocket server started by `mobile:startLogsBroadcast` | | | - | mobile:swipe | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-swipe) | | | - | mobile:scroll | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-scroll) | | | - | mobile:pinch | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-pinch) | | | - | mobile:doubleTap | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-doubleTap) | | | - | mobile:touchAndHold | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-touchAndHold) | | | - | mobile:twoFingerTap | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-twoFingerTap) | | | - | mobile:tapWithNumberOfTaps | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-tapWithNumberOfTaps) | | | - | mobile:tap | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-tap) | | | - | mobile:dragFromToForDuration | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-dragFromToForDuration) | | | - | mobile:selectPickerWheelValue | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-selectPickerWheelValue) | | | - | mobile:alert | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-alert) | | | - | mobile:installApp | refer to [XCUITest Mobile App Managemenet](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-installapp) | | | - | mobile:removeApp | refer to [XCUITest Mobile App Managemenet](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-removeapp) | | | - | mobile:isAppInstalled | refer to [XCUITest Mobile App Managemenet](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-isappinstalled) | | | - | mobile:launchApp | refer to [XCUITest Mobile App Managemenet](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-launchapp) | | | - | mobile:terminateApp | refer to [XCUITest Mobile App Managemenet](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-terminateapp) | | | - | mobile:activateApp | refer to [XCUITest Mobile App Managemenet](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-activateapp) | | | - | mobile:queryAppState | refer to [XCUITest Mobile App Managemenet](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-queryappstate) | | | - | mobile:setPasteboard | refer to [IOS Pasteboard Guide](/docs/en/writing-running-appium/ios/ios-xctest-pasteboard.md#mobile-setpasteboard) | | | - | mobile:getPasteboard | refer to [IOS Pasteboard Guide](/docs/en/writing-running-appium/ios/ios-xctest-pasteboard.md#mobile-getpasteboard) | | | - | mobile:installCertificate | refer to [IOS Pasteboard Guide](/docs/en/writing-running-appium/ios/ios-xctest-install-certificate.md) | | | - | mobile:getContexts | Retrieve available contexts, along with the url and title associated with each webview (see [get contexts](/docs/en/commands/context/get-contexts.md)). If `waitForWebviewMs` is provided, Appium will wait for available WebViews up to the number since Appium 1.17.0. | `{waitForWebviewMs}` | `{waitForWebviewMs: 5000}` | - | mobile:batteryInfo | Reads the battery information from the device under test | | | - | mobile:pressButton | Press a physical button. The available button options are: _home_, _volumeup_ and _volumedown_. Real devices support all three buttons whereas simulator only supports _home_. | `{name}` | `{name: "home"}` | - | mobile:enrollBiometric | Enroll (or unenroll) an iOS Simulator to use [biometrics](https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/authentication/#face-id-and-touch-id) | `{isEnabled}` | `{isEnabled: true}` | - | mobile:sendBiometricMatch | Send a matching or non-matching biometric input to an iOS Simulator. 'type' must be `touchId` or `faceId`. Match is a boolean indicating if it's a matching or non-matching input | `{type, match}` | `{type: "touchId", match: true}` | - | mobile:isBiometricEnrolled | Check if an iOS Simulator is enrolled or not. Returns `true` if enrolled, `false` if not enrolled. ||| - | mobile:clearKeychains | Clear the keychains for an iOS Simulator ||| - | mobile:siriCommand| Sends a command to Siri | `{text}` | `{text: "What time is it?"}` | - | mobile:source | This endpoint allows to retrieve the current native page source from WDA as a string (also being in a web context). Possible output formats are: `xml` (same output as for `getPageSource` command, the default value), `json` (the same tree structure as for the `xml` format, but represented as JSON) and `description` (native `debugDescription` output generated by XCTest). An optional `excludedAttributes` array allows to provide attributes names, which are going to be excluded from the resulting xml tree. This might significantly improve the performance of page source retrieval, especially if the `visible` attribute gets excluded. | `{format, excludedAttributes}` | `{format: 'description'}` `{format: 'xml', excludedAttributes: ['visible']}` | - | mobile:activeAppInfo | Gets current active application's information such as bundleId and process arguments | | | - | mobile:deviceInfo | Gets device information like locale and timezone. The timezone is TZ database format like `America/New_York` by default, fallback to Apple name like `US/New_York` | | | - | mobile:rotateElement | Sends a rotation gesture with two touches to the given element. See [rotate:withVelocity:](https://developer.apple.com/documentation/xctest/xcuielement/1618665-rotate) for more details. | `{element, rotation, velocity}` | `{element: 2, rotation: π/2, velocity: 1.5}` | - | mobile:deleteFile | Delete a file on the device under test. The remote path value should comply to [Pushing/Pulling Files](/docs/en/writing-running-appium/ios/ios-xctest-file-movement.md) tutorial. | `{remotePath}` | `{remotePath: 'path/to/file'}` | - | mobile:deleteFolder | Delete a folder on the device under test. The remote path value should comply to [Pushing/Pulling Files](/docs/en/writing-running-appium/ios/ios-xctest-file-movement.md) tutorial. | `{remotePath}` | `{remotePath: '@io.appium.example:documents/path/to/folder'}` | - | mobile:getPermission | Gets application permission state on a simulator. It requires https://github.com/wix/AppleSimulatorUtils ||| - | mobile:setPermission | Set a permission for the given bundleId via `xcrun simctl privacy` which is available since Xcode 11.4. `key` is 'service' in the list of `xcrun simctl privacy`. `value` is `yes`(grant), `no`(revoke) or `unset`(reset). It works on simulator. | `{bundleId, {key: value}}`| `{bundleId: 'io.appium.example', {'location-always': 'yes', calendar: 'no'}` | - | mobile:getAppearance | Get the device's UI appearance style via `xcrun simctl ui`. It returns `light`, `dark`, `unknown` or `unsupported` (below iOS 12). ||| - | mobile:setAppearance | Set the device's UI appearance style via `xcrun simctl ui` or Siri command. | `{style}` | `{style: 'dark'}` | - | mobile:getDeviceTime | Get time of the device under test. https://momentjs.com/docs/ is the full list of supported datetime format specifiers. Defaults to `YYYY-MM-DDTHH:mm:ssZ` which is ISO-8601. | `{format}` | `{format: 'YYYY-MM'}` | - | mobile:startAudioRecording | Start recording audio stream. Read [Audio Capture From iOS Simulators and Real Devices](/docs/en/writing-running-appium/ios/audio-capture.md) for more details | | | - | mobile:stopAudioRecording | Stop and store the recording audio stream. Read [Audio Capture From iOS Simulators and Real Devices](/docs/en/writing-running-appium/ios/audio-capture.md) for more details | | | + ### Espresso - ### Android - | Command | Description | Argument | Argument Example | - | ------- | ----------- | -------- | ---------------- | - | mobile:shell | Execute [ADB shell](https://developer.android.com/studio/command-line/adb#shellcommands) commands (requires [insecure feature](/docs/en/writing-running-appium/security.md) `adb_shell` to be enabled) | Read [this page](/docs/en/writing-running-appium/android/android-shell.md) | `{'command': 'echo', 'args': ['arg1', 'arg2']}` | - | mobile:startLogsBroadcast | Starts Android logcat broadcast websocket on the same host and port where Appium is running at `/ws/session/:sessionId:/appium/device/logcat` endpoint | | | - | mobile:stopLogsBroadcast | Stops the logcat broadcasting websocket server started by `mobile:startLogsBroadcast` | | | - | mobile:performEditorAction | Performs the given editor action on the focused input field. The following action names are supported: `normal, unspecified, none, go, search, send, next, done, previous`. | `{action}` | `{action: "previous"}`| - | mobile:getPermissions | Gets a list of permissions which are `denied`, `granted` or `requested`. | `{type, appPackage}` | `{type: "granted", appPackage: "io.appium.android.apis"}`| - | mobile:changePermissions | Grants or revokes permissions. | `{action, appPackage, permissions}` | `{action: "grant", appPackage: "io.appium.android.apis", permissions: "android.permission.READ_CONTACTS"}`, `{action: "revoke", appPackage: "io.appium.android.apis", permissions: ["android.permission.READ_CONTACTS", "android.permission.CAMERA"]}` | - | mobile:getNotifications | Get the list of items as JSON format in the status bar notifications. Please turn 'Notification access' on via _Settings > App & notifications > Special app access_ (the actual path depends on the device model). Please read [Appium Pro](https://appiumpro.com/editions/106-retrieving-status-bar-notifications-for-android-devices) for more details. | | | - | mobile: listSms | Get the list of SMS messages as [JSON format](https://github.com/appium/io.appium.settings#sms). | | | - | mobile:type | Send Unicode text to a focused element. | `{text}` | `{text: "happy testing"}` | - | mobile:getDeviceTime | Get time of the device under test. https://momentjs.com/docs/ is the full list of supported datetime format. Defaults to `YYYY-MM-DDTHH:mm:ssZ` which is ISO-8601. | `{format}` | `{format: 'YYYY-MM'}` | - | mobile:deleteFile | Delete a file on the device under test. The remote path value should be the full path or a file inside an application bundle. | `{remotePath}` | `{remotePath: '@io.appium.example/path/in/bundle'}`, `{remotePath: '/tmp/data/file'}` | - | mobile:startService | Starts the given service by calling `am start-service` or `am start-foreground-service` under the hood since Appium 1.18.0. The `intent` argument is mandatory. `user` is the ID of the user the service should be started for (the current user ID is used by default). If `foreground` is set to `true` then the service will be started in foreground. | `{intent, user, foreground}` | `{intent: 'my.app/my.activity', foreground: true}` | - | mobile:stopService | Stops the given service by calling `am stop-service` under the hood since Appium 1.18.0. The `intent` argument is mandatory. `user` is the ID of the user the service should be stopped for (the current user ID is used by default). | `{intent, user}` | `{intent: 'my.app/my.activity'}` | - | mobile:getContexts | Retrieve available contexts, along with details associated with each webview (see [get contexts](/docs/en/commands/context/get-contexts.md)) in JSON structure. The details of each webview includes such as android package name and its window handles details (see [get handles](/docs/en/commands/web/window/get-handles.md)). The details of each window handle (which donated as `pages` in the JSON) contains such as url, title and id. The id is part of a window handle name. Therefore, by concatenating a string like "CDwindow-" + id, you can use the string for switching to window (see [set window](/docs/en/commands/web/window/set-window.md).) | | | + Please refer to [mobile commands](https://github.com/appium/appium-espresso-driver#platform-specific-extensions) section in Espresso driver repository. - ### Android (UiAutomator2 only) - | Command | Description | Argument | Argument Example | - | ------- | ----------- | -------- | ---------------- | - | mobile:batteryInfo | Reads the battery information from the device under test | | | - | mobile:acceptAlert | Accepts an on-screen alert | Optional button label to click on | | - | mobile:dismissAlert | Dismisses an on-screen alert | Optional button label to click on | | - | mobile:scrollBackTo | Scroll from one element to another | `{elementId, elementToId}` | `{elementId: 2, elementToId: 1}` | - | mobile:scroll | Scroll the given scrollable element until the element identifier by `strategy` and `selector` becomes visible since Appium 1.18.0. An optional `maxSwipes` property can limit the number of scroll actions. It accepts an optional `element` property which should be the element identifier and scrollable. Without this property, Appium will select the first currently available scrollable container. Please read `mobileScroll` section in [appium-uiautomator2-driver](https://github.com/appium/appium-uiautomator2-driver/blob/master/lib/commands/general.js) for more details. | `{element, strategy, selector, maxSwipes}` | `{strategy: 'accessibility id', selector: 'target content description'}` | - | mobile:viewportScreenshot | Like [screenshot](/commands/session/screenshot/) but only includes contents of viewport | | | - | mobile:viewportRect | Returns the coordinates and size of the viewports since Appium 1.18.0. The return type is Rectangle defined in [general.js](https://github.com/appium/appium-uiautomator2-driver/blob/master/lib/commands/general.js).| | | - | mobile:deepLink | Opens a deep-link URL for testing [Instant Apps](https://support.google.com/googleplay/answer/7240211?hl=en) | `{url, package}` | `{url: "https://www.site.com/", package: "com.site.SomeAndroidPackage"}` | - | mobile:deviceInfo | Gets device information like manufacturer, model, timezone and locale. Read [GetDeviceInfo](https://github.com/appium/appium-uiautomator2-server/blob/master/app/src/main/java/io/appium/uiautomator2/handler/GetDeviceInfo.java) for more details. | | | - | mobile:type | Types the given Unicode string into focused field. The combination of `unicodeKeyboard` capability and the [send keys](https://appium.io/docs/en/commands/element/actions/send-keys/) works as _replacing_ the text field content. The send key in W3C action works only for ASCII. This command helps such cases to append unicode text content against the focused field. | `{text}` | `{text: 'happy testing'}` | - | mobile:longClickGesture | Refer to [Automating Mobile Gestures With UiAutomator2 Backend](/docs/en/writing-running-appium/android/android-mobile-gestures.md##mobile-longclickgesture) since Appium 1.19.0 | | | - | mobile:dragGesture | Refer to [Automating Mobile Gestures With UiAutomator2 Backend](/docs/en/writing-running-appium/android/android-mobile-gestures.md##mobile-draggesture) since Appium 1.19.0 | | | - | mobile:flingGesture | Refer to [Automating Mobile Gestures With UiAutomator2 Backend](/docs/en/writing-running-appium/android/android-mobile-gestures.md##mobile-flinggesture) since Appium 1.19.0 | | | - | mobile:pinchOpenGesture | Refer to [Automating Mobile Gestures With UiAutomator2 Backend](/docs/en/writing-running-appium/android/android-mobile-gestures.md##mobile-pinchopengesture) since Appium 1.19.0 | | | - | mobile:pinchCloseGesture | Refer to [Automating Mobile Gestures With UiAutomator2 Backend](/docs/en/writing-running-appium/android/android-mobile-gestures.md##mobile-pinchclosegesture) since Appium 1.19.0 | | | - | mobile:swipeGesture | Refer to [Automating Mobile Gestures With UiAutomator2 Backend](/docs/en/writing-running-appium/android/android-mobile-gestures.md##mobile-swipegesture) since Appium 1.19.0 | | | - | mobile:scrollGesture | Refer to [Automating Mobile Gestures With UiAutomator2 Backend](/docs/en/writing-running-appium/android/android-mobile-gestures.md##mobile-scrollgesture) since Appium 1.19.0 | | | - - ### Android (Espresso only) - | Command | Description | Argument | Argument Example | - | ------- | ----------- | -------- | ---------------- | - | mobile:swipe | Perform the ["swipe" view action](https://developer.android.com/reference/android/support/test/espresso/action/ViewActions.html#swipeDown()) | `{element, direction}` | `{element: 2, direction: "down|up|left|right"}` | - | mobile:swipe | Perform ["GeneralSwipeAction"](https://developer.android.com/reference/androidx/test/espresso/action/GeneralSwipeAction) | `{element, swiper, startCoordinates, endCoordinates, precisionDescriber}` | `{element: 3, swiper: "FAST|SLOW", startCoordinates: 'BOTTOM_RIGHT', endCoordinates: 'TOP_RIGHT', precisionDescriber: 'FINGER'}` | - | mobile:clickAction | Perform ["ClickAction"](https://developer.android.com/reference/androidx/test/espresso/action/GeneralClickAction) | `{element, tapper, coordinatesProvider, precisionDescriber, inputDevice, buttonState}` | `{element: 2, tapper: 'Long', coordinatesProvider: 'BOTTOM_RIGHT', precisionDescriber: 'Thumb', inputDevice: 0, buttonState: 0}` | - | mobile:isToastVisible | Check whether a toast message is visible. `text` is the mandatory argument. `isRegexp` is optional. `text` will be parsed as a regular expression pattern if `isRegexp` is `true`. `isRegexp` is `false` by default. It returns `true` if the `text` exists, or `false` otherwise. | `{text, isRegexp}` | `{ text: 'A toast' }`, `{ text: '^regex$', isRegexp: true } `| - | mobile:openDrawer | Open drawer by [DrawerAction](https://developer.android.com/reference/android/support/test/espresso/contrib/DrawerActions) with [gravity](https://developer.android.com/reference/android/view/Gravity). `gravity` is option. The default is [GravityCompat.START](https://developer.android.com/reference/android/support/v4/view/GravityCompat.html#START). This method blocks until the drawer is fully open. No operation if the drawer is already open. | `{element, gravity}` | `{ element: element_id }`, `{ element: element_id, gravity: 3 }` | - | mobile:closeDrawer | Close drawer by [DrawerAction](https://developer.android.com/reference/android/support/test/espresso/contrib/DrawerActions) with [gravity](https://developer.android.com/reference/android/view/Gravity). `gravity` is option. The default is [GravityCompat.START](https://developer.android.com/reference/android/support/v4/view/GravityCompat.html#START). This method blocks until the drawer is fully closed. No operation if the drawer is already closed. | `{element, gravity}` | `{ element: element_id }`, `{ element: elementId, gravity: 3 }` | - | mobile:setDate | Set date by [PickerActions#setDate](https://developer.android.com/reference/android/support/test/espresso/contrib/PickerActions.html#setDate(int,%20int,%20int)) for [DataPicker](https://developer.android.com/reference/android/widget/DatePicker). | `{element, year, monthOfYear, dayOfMonth}` | `{element: elementId, year: 2018, monthOfYear: 12, dayOfMonth: 1}` | - | mobile:setTime | Set time by [PickerActions#setTime](https://developer.android.com/reference/android/support/test/espresso/contrib/PickerActions.html#setTime(int,%20int)) for [TimePicker](https://developer.android.com/reference/android/widget/TimePicker). | `{element, hours, minutes}` | `{element: elementId, hours: 12, minutes: 10}` | - | mobile:navigateTo | Action to [NavigationView](https://developer.android.com/reference/android/support/design/widget/NavigationView) by [NavigationViewActions#navigateTo](https://developer.android.com/reference/android/support/test/espresso/contrib/NavigationViewActions.html#navigateTo(int)). The view must be a child of a DrawerLayout, of type NavigationView, visible on screen and displayed on screen. `com.google.android.material:material` as `additionalAndroidTestDependencies` capability is necessary. | `{element, menuItemId}` | `{element: elementId, menuItemId: 1}` | - | mobile:scrollToPage | Action to [ViewPager](https://developer.android.com/reference/android/support/v4/view/ViewPager) by [ViewPagerActions](https://developer.android.com/reference/android/support/test/espresso/contrib/ViewPagerActions). `scrollTo` must be one of `first`, `last`, `left`, `right`. `scrollTo` is used by default if `scrollTo` and `scrollToPage` are provided. | `{scrollTo, scrollToPage, smoothScroll}` | `{element: elementId, scrollTo: 'left', smoothScroll: true}`, `{element: elementId, scrollToPage: 2}`| - | mobile:backdoor | Invoke arbitrary methods defined in Android app. The methods must be `public` in Java and must be `open` in Kotlin. `target` is `activity`, `application` or `element`. `methods` are methods you would like to invoke. `element` is mandatory if `target` is `element`. Read docstring of _mobileBackdoor_ method [here](https://github.com/appium/appium-espresso-driver/blob/master/lib/commands/general.js) for more details | `{target, methods, element}` | `{target: 'activity', methods: [{name: 'method1'}, {name: 'method2', args: [{value: 'hello appium', type: 'java.lang.String'}] }] }`, `{target: 'element', element: elementId, [{name: 'getTypeface'}, {name: 'isItalic'}]}` | - | mobile:flashElement | Flashes an element on the screen to visually confirm you are operating on the correct element. Can optionally set `durationMillis` (in ms) and `repeatCount` of animation| `{element, durationMillis, repeatCount}` | `{element: "1234-abcd-5678", durationMillis: 1000, repeatCount: 10}` | - | mobile:uiautomator | Drive areas which are not part of App Under Test, using uiautomator2 APIs. `strategy` can be one of: "clazz", "res", "text", "textContains", "textEndsWith", "textStartsWith","desc", "descContains", "descEndsWith", "descStartsWith" and "pkg", taken from uiautomator [By class](https://developer.android.com/reference/androidx/test/uiautomator/By). `action` can be one of: "click", "longClick", "getText", "getContentDescription", "getClassName","getResourceName", "getVisibleBounds", "getVisibleCenter", "getApplicationPackage","getChildCount", "clear", "isCheckable", "isChecked", "isClickable", "isEnabled","isFocusable", "isFocused", "isLongClickable", "isScrollable" and "isSelected", taken from uiautomator [UiObject2](https://developer.android.com/reference/androidx/test/uiautomator/UiObject2). `index` is optional, if not given, will return all matching results | `{strategy, locator, index, action}` | `{strategy: 'clazz', locator: 'android.widget.TextView', index: 2, action: "getText"}` | - | mobile:webAtoms | Runs a chain of [webatoms](https://developer.android.com/training/testing/espresso/web). `withElement` and `perform` are basic chain items. Please refer [issue](https://github.com/appium/appium-espresso-driver/pull/380) and [Sample test code](https://github.com/appium/ruby_lib_core/blob/c9062c4b744263d790c7de17263cbd4645cdefc6/test/functional/android/android/mobile_commands_test.rb#L196-L239) as references. | `{webviewElement, forceJavascriptEnabled, methodChain}` | (webdriverio) `{ webviewElement: webviewEl.value, forceJavascriptEnabled: true, methodChain: [...]}` | - | mobile:dismissAutofill | Disable autofill dialog in Android O+ | `{element}` | `{element: elementId}` | - | mobile:deviceInfo | Gets device information like manufacturer, model, timezone and locale. Read [GetDeviceInfo](https://github.com/appium/appium-espresso-driver/blob/master/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetDeviceInfo.kt) for more details. | | | - | mobile:registerIdlingResources | Registers one or more idling resources. Read [idling-resources.js](https://github.com/appium/appium-espresso-driver/blob/master/lib/commands/idling-resources.js) for more details. | `{classNames}` | `{classNames: 'com.package.MyIdlingResource1, com.package.MyIdlingResource2'}` | - | mobile:unregisterIdlingResources | Unregisters one or more idling resources. Read [idling-resources.js](https://github.com/appium/appium-espresso-driver/blob/master/lib/commands/idling-resources.js) for more details. | `{classNames}` | `{classNames: 'com.package.MyIdlingResource1, com.package.MyIdlingResource2'}` | - | mobile:listIdlingResources | Returns the list of canonical class names of currently registered idling resources. Read [idling-resources.js](https://github.com/appium/appium-espresso-driver/blob/master/lib/commands/idling-resources.js) for more details. | | | + ## IOS + ### XCUITest + Please refer to [mobile commands](https://github.com/appium/appium-xcuitest-driver#platform-specific-extensions) section in XCUITest driver repository. example_usage: java: @@ -150,9 +44,6 @@ ruby_core: | @driver.execute_script("mobile: scroll", { "direction" => "down"}) - php: - | - // TODO PHP sample csharp: | driver.ExecuteScript("mobile:scroll", new Dictionary { { "direction", "down" } }); @@ -164,7 +55,6 @@ javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L102" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:execute_script" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:execute_script" - 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 @@ -184,7 +74,6 @@ java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/session/back.yml b/commands-yml/commands/session/back.yml index 03364e66119..1669b115298 100644 --- a/commands-yml/commands/session/back.yml +++ b/commands-yml/commands/session/back.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.back - php: - | - // TODO PHP sample csharp: | driver.Navigate().Back(); @@ -35,7 +32,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L640" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Navigation:back" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Navigation:back" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/INavigation.cs" # Driver support by platform @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/session/create.yml b/commands-yml/commands/session/create.yml index 1323c8789b3..0070d5f022c 100644 --- a/commands-yml/commands/session/create.yml +++ b/commands-yml/commands/session/create.yml @@ -75,9 +75,6 @@ example_usage: ruby_core: | ::Appium::Core.for(desired_caps).start_driver - php: - | - // TODO PHP sample csharp: | AppiumOptions capabilities = new AppiumOptions(); @@ -90,13 +87,12 @@ example_usage: AndroidDriver driver = new AndroidDriver(new Uri("http://127.0.0.1:4723/wd/hub"), appiumOptions); client_docs: - java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/server/DefaultSession.html#createSession-org.openqa.selenium.remote.server.DriverFactory-org.openqa.selenium.remote.server.Clock-org.openqa.selenium.remote.SessionId-org.openqa.selenium.Capabilities-" + java: "https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/WebDriver.html" python: "http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webelement.WebElement.clear" javascript_wdio: "https://webdriver.io/docs/api/webdriver.html#newsession" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1780" - ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:clear" - ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:clear" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link + ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver" + ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver" csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO Dotnet documentation link # Driver support by platform @@ -116,7 +112,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/session/delete.yml b/commands-yml/commands/session/delete.yml index a3b41d2f449..0306b159c8f 100644 --- a/commands-yml/commands/session/delete.yml +++ b/commands-yml/commands/session/delete.yml @@ -22,9 +22,6 @@ example_usage: ruby_core: | @driver.quit - php: - | - // TODO PHP sample csharp: | driver.Quit(); @@ -36,7 +33,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L470" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:quit" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:quit" - 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 @@ -56,7 +52,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/session/events/get-events.yml b/commands-yml/commands/session/events/get-events.yml index 187ab3ee185..a2aa3c468e5 100644 --- a/commands-yml/commands/session/events/get-events.yml +++ b/commands-yml/commands/session/events/get-events.yml @@ -25,9 +25,6 @@ example_usage: @driver.logs.events @driver.logs.events('event') @driver.logs.events(['event1', 'event2']) - php: - | - // PHP Code here csharp: | // csharp code here @@ -40,7 +37,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/releases" ruby: "https://www.rubydoc.info/gems/appium_lib/Appium/Driver#log_event-instance_method" ruby_core: "https://www.rubydoc.info/gems/appium_lib_core/Appium/Core/Logs#events-instance_method" - php: "https://github.com/appium/php-client/releases/latest" csharp: "https://github.com/appium/appium" # TODO # Driver support by platform @@ -67,7 +63,6 @@ client_support: java: true python: true ruby: true - php: false csharp: false javascript_wd: false javascript_wdio: false diff --git a/commands-yml/commands/session/events/log-event.yml b/commands-yml/commands/session/events/log-event.yml index 271f37f0bb2..34f82645c9f 100644 --- a/commands-yml/commands/session/events/log-event.yml +++ b/commands-yml/commands/session/events/log-event.yml @@ -32,10 +32,6 @@ example_usage: | @driver.logs.event vendor: 'appium', event: 'funEvent' @driver.logs.event = { vendor: 'appium', event: 'anotherEvent' } - - php: - | - // PHP Code here csharp: | // csharp Code here @@ -48,7 +44,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/releases" ruby: "https://www.rubydoc.info/gems/appium_lib/Appium/Driver#log_event-instance_method" ruby_core: "https://www.rubydoc.info/gems/appium_lib_core/Appium/Core/Logs#event-instance_method" - php: "https://github.com/appium/php-client/releases/latest" csharp: "https://github.com/appium/appium" # TODO # Driver support by platform @@ -75,7 +70,6 @@ client_support: java: true python: true ruby: true - php: false csharp: false javascript_wd: false javascript_wdio: false diff --git a/commands-yml/commands/session/execute-driver.yml b/commands-yml/commands/session/execute-driver.yml index 08034ea14ae..c1bc5a4e2ff 100644 --- a/commands-yml/commands/session/execute-driver.yml +++ b/commands-yml/commands/session/execute-driver.yml @@ -78,9 +78,6 @@ example_usage: return status; SCRIPT @driver.execute_driver script: script - php: - | - // TODO PHP sample csharp: | // TODO C# sample @@ -92,7 +89,6 @@ client_docs: javascript_wd: "" ruby: "https://www.rubydoc.info/github/appium/ruby_lib/master/Appium/Driver#execute_driver-instance_method" ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Base/Driver#execute_driver-instance_method" - php: "" # TODO PHP documentation link csharp: "" # TODO Dotnet documentation link # Driver support by platform @@ -112,7 +108,6 @@ client_support: java: true python: false ruby: false - php: false csharp: false javascript_wd: false javascript_wdio: false diff --git a/commands-yml/commands/session/geolocation/get-geolocation.yml b/commands-yml/commands/session/geolocation/get-geolocation.yml index eac334f53d0..9681c233d16 100644 --- a/commands-yml/commands/session/geolocation/get-geolocation.yml +++ b/commands-yml/commands/session/geolocation/get-geolocation.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.location - php: - | - // TODO PHP sample csharp: | Location location = driver.Location; @@ -35,7 +32,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L393" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/DriverExtensions/HasLocation#set_location-instance_method" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/DriverExtensions/HasLocation#set_location-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 @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/session/geolocation/set-geolocation.yml b/commands-yml/commands/session/geolocation/set-geolocation.yml index 622040f208f..bee8bd7cfe7 100644 --- a/commands-yml/commands/session/geolocation/set-geolocation.yml +++ b/commands-yml/commands/session/geolocation/set-geolocation.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.set_location(121.21, 11.56, 94.23) - php: - | - // TODO PHP sample csharp: | driver.Location.Altitude = 94.23; @@ -37,7 +34,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L407" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FDriverExtensions%2FHasLocation:set_location" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FDriverExtensions%2FHasLocation:set_location" - 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 @@ -57,7 +53,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/session/get.yml b/commands-yml/commands/session/get.yml index 0df8f0909fb..a498e3c3d5e 100644 --- a/commands-yml/commands/session/get.yml +++ b/commands-yml/commands/session/get.yml @@ -21,21 +21,17 @@ example_usage: ruby_core: | @driver.session_capabilities - php: - | - // TODO PHP sample csharp: | ICapabilities caps = driver.Capabilities; client_docs: - java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/server/ActiveSessions.html#get-org.openqa.selenium.remote.SessionId-" + java: "https://www.selenium.dev/selenium/docs/api/java/overview-summary.html" python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.session.Session.session" javascript_wdio: "https://webdriver.io/docs/api/jsonwp.html#getsession" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L227" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FRemote%2FOSS%2FBridge:session_capabilities" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FRemote%2FOSS%2FBridge:session_capabilities" - 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 @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/session/logs/get-log-types.yml b/commands-yml/commands/session/logs/get-log-types.yml index b9da4bdc662..b80ce441dae 100644 --- a/commands-yml/commands/session/logs/get-log-types.yml +++ b/commands-yml/commands/session/logs/get-log-types.yml @@ -1,6 +1,6 @@ --- name: Get available log types -short_description: Get the log for a given log type. Log buffer is reset after each request +short_description: Get available log types as a list of strings example_usage: java: @@ -22,9 +22,6 @@ example_usage: ruby_core: | @driver.logs.available_types - php: - | - // TODO PHP sample csharp: | IReadOnlyCollection logTypes = driver.Manage().Logs.AvailableLogTypes; @@ -36,7 +33,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L441" ruby: "https://www.rubydoc.info/github/appium/ruby_lib/Appium/Common#get_available_log_types-instance_method" ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Logs#available_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 @@ -56,7 +52,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/session/logs/get-log.yml b/commands-yml/commands/session/logs/get-log.yml index 5970ab2e4a4..d723b8d1f4e 100644 --- a/commands-yml/commands/session/logs/get-log.yml +++ b/commands-yml/commands/session/logs/get-log.yml @@ -8,7 +8,7 @@ example_usage: LogEntries logEntries = driver.manage().logs().get("driver"); python: | - logs = driver.get_log('driver'); + logs = driver.get_log('driver') javascript_wd: | const logs = await driver.log('driver'); @@ -22,9 +22,6 @@ example_usage: ruby_core: | @driver.logs.get 'driver' - php: - | - // TODO PHP sample csharp: | ILogs logs = driver.Manage().Logs; @@ -36,7 +33,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L455" ruby: "https://www.rubydoc.info/github/appium/ruby_lib/Appium/Common#get_log-instance_method" ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Logs#get-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 @@ -56,7 +52,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/session/orientation/get-orientation.yml b/commands-yml/commands/session/orientation/get-orientation.yml index e441a7872a1..993c937d618 100644 --- a/commands-yml/commands/session/orientation/get-orientation.yml +++ b/commands-yml/commands/session/orientation/get-orientation.yml @@ -22,9 +22,6 @@ example_usage: ruby_core: | @driver.orientation - php: - | - // TODO PHP sample csharp: | ScreenOrientation orientation = driver.Orientation; @@ -36,7 +33,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2021" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/DriverExtensions/Rotatable:orientation" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/DriverExtensions/Rotatable:orientation" - 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 @@ -56,7 +52,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/session/orientation/set-orientation.yml b/commands-yml/commands/session/orientation/set-orientation.yml index d232ae22e88..46f3546f1d9 100644 --- a/commands-yml/commands/session/orientation/set-orientation.yml +++ b/commands-yml/commands/session/orientation/set-orientation.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.rotation = :landscape - php: - | - // TODO PHP sample csharp: | driver.Orientation = ScreenOrientation.Landscape; @@ -35,7 +32,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2042" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/DriverExtensions/Rotatable:orientation" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/DriverExtensions/Rotatable:orientation" - 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 @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/session/screenshot.yml b/commands-yml/commands/session/screenshot.yml index 29d429e2ef6..08f0ca8013a 100644 --- a/commands-yml/commands/session/screenshot.yml +++ b/commands-yml/commands/session/screenshot.yml @@ -29,9 +29,6 @@ example_usage: ruby_core: | @driver.screenshot_as(:base64) - php: - | - // TODO PHP sample csharp: | Screenshot screenshot = driver.GetScreenshot(); @@ -43,7 +40,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1089" ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Base/TakeScreenshot#screenshot_as-instance_method" ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Base/TakeScreenshot#screenshot_as-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 @@ -63,7 +59,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/session/settings/get-settings.yml b/commands-yml/commands/session/settings/get-settings.yml index 512b7a0fa6e..8d0e8a5ee94 100644 --- a/commands-yml/commands/session/settings/get-settings.yml +++ b/commands-yml/commands/session/settings/get-settings.yml @@ -17,9 +17,13 @@ example_usage: ruby_core: | @driver.get_settings + @driver.settings.get python: | - self.driver.get_settings + self.driver.get_settings() + csharp: + | + driver.Settings client_docs: java: "https://appium.github.io/java-client/io/appium/java_client/HasSettings.html#getSettings--" @@ -28,6 +32,7 @@ client_docs: ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#get_settings-instance_method" ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#get_settings-instance_method" python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.settings.Settings.get_settings" + csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Android/Interfaces/IHasSettings.cs" # Driver support by platform driver_support: @@ -46,7 +51,6 @@ client_support: java: true python: false ruby: false - php: false csharp: false javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/session/settings/update-settings.yml b/commands-yml/commands/session/settings/update-settings.yml index 8f13490ab9b..74829586ba9 100644 --- a/commands-yml/commands/session/settings/update-settings.yml +++ b/commands-yml/commands/session/settings/update-settings.yml @@ -13,13 +13,22 @@ example_usage: driver.updateSettings({nativeWebTap: true}); ruby: | - update_settings(sample: 'value') + update_settings({'nativeWebTap' => true, 'allowInvisibleElements' => true}) ruby_core: | - @driver.update_settings(sample: 'value') + @driver.update_settings({'nativeWebTap' => true, 'allowInvisibleElements' => true}) + @driver.settings.update({'nativeWebTap' => true, 'allowInvisibleElements' => true}) + @driver.settings = {'nativeWebTap' => true, 'allowInvisibleElements' => true} python: | self.driver.update_settings({"sample": "value"})) + csharp: + | + driver.Settings = new Dictionary() { + [AutomatorSetting.KeyInjectionDelay] = 1500, + ["nativeWebTap"] = true + }; + client_docs: java: "https://appium.github.io/java-client/io/appium/java_client/HasSettings.html#setSetting-io.appium.java_client.Setting-java.lang.Object-" @@ -28,6 +37,7 @@ client_docs: ruby: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#update_settings-instance_method" ruby_core: "https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#update_settings-instance_method" python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.settings.Settings.update_settings" + csharp: "https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Android/Interfaces/IHasSettings.cs" # Driver support by platform driver_support: @@ -44,10 +54,9 @@ driver_support: windows: true client_support: java: true - python: false - ruby: false - php: false - csharp: false + python: true + ruby: true + csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/session/source.yml b/commands-yml/commands/session/source.yml index 3cab3089611..5b9635cdd04 100644 --- a/commands-yml/commands/session/source.yml +++ b/commands-yml/commands/session/source.yml @@ -30,9 +30,6 @@ example_usage: ruby_core: | @driver.page_source - php: - | - // TODO PHP sample csharp: | string pageSource = driver.PageSource; @@ -44,7 +41,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1808" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:page_source" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:page_source" - 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 @@ -64,7 +60,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/session/timeouts/async-script.yml b/commands-yml/commands/session/timeouts/async-script.yml index c3028013bad..c8dd5e8779f 100644 --- a/commands-yml/commands/session/timeouts/async-script.yml +++ b/commands-yml/commands/session/timeouts/async-script.yml @@ -1,6 +1,6 @@ --- name: Set Script Timeout -short_description: Set the amount of time, in milliseconds, that asynchronous scripts executed by [execute async](/docs/en/commands/session/timeouts/async-script.md) are permitted to run before they are aborted (Web context only) +short_description: Set the amount of time, in milliseconds, that asynchronous scripts executed by [execute async](/docs/en/commands/web/execute-async.md) are permitted to run before they are aborted (Web context only) example_usage: java: @@ -22,9 +22,6 @@ example_usage: ruby_core: | @driver.script_timeout(5) # Ruby translates it to seconds - php: - | - // TODO PHP sample csharp: | // TODO C# sample @@ -36,7 +33,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L699" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Timeouts#script_timeout=" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Timeouts#script_timeout=" - 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 @@ -56,7 +52,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/session/timeouts/implicit-wait.yml b/commands-yml/commands/session/timeouts/implicit-wait.yml index 075aacf7fc1..84d5ec6a3fa 100644 --- a/commands-yml/commands/session/timeouts/implicit-wait.yml +++ b/commands-yml/commands/session/timeouts/implicit-wait.yml @@ -31,9 +31,6 @@ example_usage: ruby_core: | @driver.manage.timeouts.implicit_wait = 5 # Ruby translates it to seconds - php: - | - // TODO PHP sample csharp: | driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30); @@ -46,7 +43,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L681" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Timeouts:implicit_wait=" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Timeouts:implicit_wait=" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/ITimeouts.cs" # Driver support by platform @@ -66,7 +62,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/session/timeouts/timeouts.yml b/commands-yml/commands/session/timeouts/timeouts.yml index 44df37461a5..54fff9c8499 100644 --- a/commands-yml/commands/session/timeouts/timeouts.yml +++ b/commands-yml/commands/session/timeouts/timeouts.yml @@ -26,9 +26,6 @@ example_usage: ruby_core: | @driver.timeout('pageLoad', 5) # Ruby translates it to seconds - php: - | - // TODO PHP sample csharp: | driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(30); @@ -40,7 +37,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L714" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/OSS/Bridge#timeout-instance_method" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/OSS/Bridge#timeout-instance_method" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/ITimeouts.cs" # Driver support by platform @@ -60,7 +56,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/status.yml b/commands-yml/commands/status.yml index b623d720dca..00d7b9788a9 100644 --- a/commands-yml/commands/status.yml +++ b/commands-yml/commands/status.yml @@ -27,9 +27,6 @@ example_usage: ruby_core: | @driver.remote_status - php: - | - // TODO csharp: | // TODO @@ -41,7 +38,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L44" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/DriverExtensions/HasRemoteStatus#remote_status-instance_method" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/DriverExtensions/HasRemoteStatus#remote_status-instance_method" - php: "https://github.com/appium/php-client/" # TODO csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO # Driver support by platform @@ -61,7 +57,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/execute-async.yml b/commands-yml/commands/web/execute-async.yml index 994fc1805b1..fa27e4cf293 100644 --- a/commands-yml/commands/web/execute-async.yml +++ b/commands-yml/commands/web/execute-async.yml @@ -8,7 +8,7 @@ description: Asynchronous script commands may not span page loads. If an unload event is fired while waiting for a script result, an error should be returned to the client. - The script argument defines the script to execute in teh form of a function body. The function will be invoked with the provided args array and the values may be accessed via the arguments object in the order specified. The final argument will always be a callback function that must be invoked to signal that the script has finished. + The script argument defines the script to execute in the form of a function body. The function will be invoked with the provided args array and the values may be accessed via the arguments object in the order specified. The final argument will always be a callback function that must be invoked to signal that the script has finished. Arguments may be any JSON-primitive, array, or JSON object. JSON objects that define a WebElement reference will be converted to the corresponding DOM element. Likewise, any WebElements in the script result will be returned to the client as WebElement JSON objects. @@ -42,9 +42,6 @@ example_usage: ruby_core: | @driver.execute_async_script("document.title") - php: - | - // TODO PHP sample csharp: | // TODO C# sample @@ -56,7 +53,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L182" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:execute_async_script" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:execute_async_script" - 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 @@ -76,7 +72,6 @@ client_support: java: false python: false ruby: false - php: false csharp: false javascript_wd: false javascript_wdio: false diff --git a/commands-yml/commands/web/execute.yml b/commands-yml/commands/web/execute.yml index 22df8e4cce3..2dea72368ac 100644 --- a/commands-yml/commands/web/execute.yml +++ b/commands-yml/commands/web/execute.yml @@ -38,9 +38,6 @@ example_usage: ruby_core: | @driver.execute_script("document.title") - php: - | - // TODO PHP sample csharp: | // TODO C# sample @@ -52,7 +49,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L102" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:execute_script" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:execute_script" - 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 @@ -72,7 +68,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/frame/parent.yml b/commands-yml/commands/web/frame/parent.yml index 22c7c6fc4ab..8cabb5210b3 100644 --- a/commands-yml/commands/web/frame/parent.yml +++ b/commands-yml/commands/web/frame/parent.yml @@ -22,9 +22,6 @@ example_usage: ruby_core: | @driver.parent_frame - php: - | - // TODO PHP sample csharp: | driver.SwitchTo().ParentFrame(); @@ -35,7 +32,6 @@ client_docs: javascript_wdio: "https://webdriver.io/docs/api/webdriver.html#switchtoparentframe" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/TargetLocator:parent_frame" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/TargetLocator:parent_frame" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteTargetLocator.cs" # Driver support by platform @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/frame/switch.yml b/commands-yml/commands/web/frame/switch.yml index bc84237925d..5921765c5a2 100644 --- a/commands-yml/commands/web/frame/switch.yml +++ b/commands-yml/commands/web/frame/switch.yml @@ -25,9 +25,6 @@ example_usage: ruby_core: | @driver.switch_to.frame(3) - php: - | - // TODO PHP sample csharp: | driver.SwitchTo().Frame(3); @@ -39,7 +36,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L332" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/W3C/Bridge:switch_to_frame" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/W3C/Bridge:switch_to_frame" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteTargetLocator.cs" # Driver support by platform @@ -59,7 +55,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/navigation/back.yml b/commands-yml/commands/web/navigation/back.yml index 979f3f4c99a..89b84a8c95d 100644 --- a/commands-yml/commands/web/navigation/back.yml +++ b/commands-yml/commands/web/navigation/back.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.back - php: - | - // TODO PHP sample csharp: | driver.Navigate().Back(); @@ -35,7 +32,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L640" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Navigation:back" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Navigation:back" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/INavigation.cs" # Driver support by platform @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/navigation/forward.yml b/commands-yml/commands/web/navigation/forward.yml index a14d57cc113..c3b12459b28 100644 --- a/commands-yml/commands/web/navigation/forward.yml +++ b/commands-yml/commands/web/navigation/forward.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.forward - php: - | - // TODO PHP sample csharp: | driver.Navigate().Forward(); @@ -35,7 +32,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L626" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Navigation:forward" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Navigation:forward" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteNavigator.cs" # Driver support by platform @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/navigation/go-to-url.yml b/commands-yml/commands/web/navigation/go-to-url.yml index 405be8e0b16..2b10d4bcf9b 100644 --- a/commands-yml/commands/web/navigation/go-to-url.yml +++ b/commands-yml/commands/web/navigation/go-to-url.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.get("http://appium.io") - php: - | - $this->driver->get("http://appium.io"); csharp: | driver.Navigate().GoToUrl("http://appium.io"); @@ -35,7 +32,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L486" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:get" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:get" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteNavigator.cs" # Driver support by platform @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/navigation/refresh.yml b/commands-yml/commands/web/navigation/refresh.yml index a404612ac5c..c4636fd86f3 100644 --- a/commands-yml/commands/web/navigation/refresh.yml +++ b/commands-yml/commands/web/navigation/refresh.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.navigate.refresh - php: - | - // TODO PHP sample csharp: | driver.Navigate().Refresh(); @@ -35,7 +32,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L503" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Navigation:refresh" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Navigation:refresh" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteNavigator.cs" # Driver support by platform @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/navigation/url.yml b/commands-yml/commands/web/navigation/url.yml index 67da2d3e419..833c72dc8f5 100644 --- a/commands-yml/commands/web/navigation/url.yml +++ b/commands-yml/commands/web/navigation/url.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.current_url - php: - | - // TODO PHP sample csharp: | string url = driver.Url; @@ -35,7 +32,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1943" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:current_url" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:current_url" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWebDriver.cs" # Driver support by platform @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/storage/delete-all-cookies.yml b/commands-yml/commands/web/storage/delete-all-cookies.yml index 861631aadf3..7ee453fe3b7 100644 --- a/commands-yml/commands/web/storage/delete-all-cookies.yml +++ b/commands-yml/commands/web/storage/delete-all-cookies.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.manage.delete_all_cookies - php: - | - // TODO PHP sample csharp: | driver.Manage().Cookies.DeleteAllCookies(); @@ -33,9 +30,8 @@ client_docs: python: "http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webdriver.WebDriver.delete_all_cookies" javascript_wdio: "https://webdriver.io/docs/api/browser/deleteCookies.html" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1993" - ruby: "https://www.selenium.dev/documentation/en/support_packages/working_with_cookies/#delete-all-cookies" - ruby_core: "https://www.selenium.dev/documentation/en/support_packages/working_with_cookies/#delete-all-cookies" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link + ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Manager#delete_all_cookies-instance_method" + ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Manager#delete_all_cookies-instance_method" csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteCookieJar.cs" # Driver support by platform @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/storage/delete-cookie.yml b/commands-yml/commands/web/storage/delete-cookie.yml index 09d78db60b3..7a486f4e9de 100644 --- a/commands-yml/commands/web/storage/delete-cookie.yml +++ b/commands-yml/commands/web/storage/delete-cookie.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.delete_cookie("cookie_name") - php: - | - // TODO PHP sample csharp: | driver.Manage().Cookies.DeleteCookieNamed("cookie_name"); @@ -33,9 +30,8 @@ client_docs: python: "http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webdriver.WebDriver.delete_cookie" javascript_wdio: "https://webdriver.io/docs/api/webdriver.html#deletecookie" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L2007" - ruby: "https://www.selenium.dev/documentation/en/support_packages/working_with_cookies/#delete-cookie" - ruby_core: "https://www.selenium.dev/documentation/en/support_packages/working_with_cookies/#delete-cookie" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link + ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Manager#delete_cookie-instance_method" + ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Manager#delete_cookie-instance_method" csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteCookieJar.cs" # Driver support by platform @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/storage/get-all-cookies.yml b/commands-yml/commands/web/storage/get-all-cookies.yml index bc6f6f8af41..dcec4e2b868 100644 --- a/commands-yml/commands/web/storage/get-all-cookies.yml +++ b/commands-yml/commands/web/storage/get-all-cookies.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.manage.all_cookies - php: - | - // TODO PHP sample csharp: | IEnumerable allCookies = driver.Manage().Cookies.AllCookies; @@ -33,9 +30,8 @@ client_docs: python: "http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webdriver.WebDriver.get_cookies" javascript_wdio: "https://webdriver.io/docs/api/browser/getCookies.html" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1957" - ruby: "https://www.selenium.dev/documentation/en/support_packages/working_with_cookies/#get-all-cookies" - ruby_core: "https://www.selenium.dev/documentation/en/support_packages/working_with_cookies/#get-all-cookies" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link + ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Manager#all_cookies-instance_method" + ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Manager#all_cookies-instance_method" csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteCookieJar.cs" # Driver support by platform @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/storage/set-cookie.yml b/commands-yml/commands/web/storage/set-cookie.yml index 7370fac6cfe..279251c7d40 100644 --- a/commands-yml/commands/web/storage/set-cookie.yml +++ b/commands-yml/commands/web/storage/set-cookie.yml @@ -24,9 +24,6 @@ example_usage: ruby_core: | @driver.manage.add_cookie(:name => 'foo', :value => 'bar') - php: - | - // TODO PHP sample csharp: | driver.Manage().Cookies.AddCookie(new Cookie("foo", "bar")); @@ -36,9 +33,8 @@ client_docs: python: "http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webdriver.WebDriver.add_cookie" javascript_wdio: "https://webdriver.io/docs/api/browser/setCookies.html" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1971" - ruby: "https://www.selenium.dev/documentation/en/support_packages/working_with_cookies/#add-cookie" - ruby_core: "https://www.selenium.dev/documentation/en/support_packages/working_with_cookies/#add-cookie" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link + ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Manager#add_cookie-instance_method" + ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Manager#add_cookie-instance_method" csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteCookieJar.cs" # Driver support by platform @@ -58,7 +54,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/window/close-window.yml b/commands-yml/commands/web/window/close-window.yml index 569ce781c5b..3b5276fabee 100644 --- a/commands-yml/commands/web/window/close-window.yml +++ b/commands-yml/commands/web/window/close-window.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.close - php: - | - // TODO PHP sample csharp: | driver.Close(); @@ -35,7 +32,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L260" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:close" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:close" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWebDriver.cs" # Driver support by platform @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/window/get-handle.yml b/commands-yml/commands/web/window/get-handle.yml index 6e36e5742f2..f6c003b4051 100644 --- a/commands-yml/commands/web/window/get-handle.yml +++ b/commands-yml/commands/web/window/get-handle.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.window_handle - php: - | - // TODO PHP sample csharp: | string windowHandle = driver.CurrentWindowHandle; @@ -35,7 +32,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L365" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:window_handle" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:window_handle" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWebDriver.cs" # Driver support by platform @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/window/get-handles.yml b/commands-yml/commands/web/window/get-handles.yml index c60a44dc215..42d69890c5f 100644 --- a/commands-yml/commands/web/window/get-handles.yml +++ b/commands-yml/commands/web/window/get-handles.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.window_handles - php: - | - // TODO PHP sample csharp: | IEnumerable windowHandles = driver.WindowHandles; @@ -35,7 +32,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L379" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:window_handles" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:window_handles" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWebDriver.cs" # Driver support by platform @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/window/get-window-position.yml b/commands-yml/commands/web/window/get-window-position.yml index c70850b1a52..5669ba906f0 100644 --- a/commands-yml/commands/web/window/get-window-position.yml +++ b/commands-yml/commands/web/window/get-window-position.yml @@ -25,9 +25,6 @@ example_usage: | @driver.window_position @driver.window_position("handleName") - php: - | - // TODO PHP sample csharp: | Point windowPosition = driver.Manage().Window.Position; @@ -39,7 +36,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L586" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/W3C/Bridge:window_position" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/W3C/Bridge:window_position" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWindow.cs" # Driver support by platform @@ -59,7 +55,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/window/get-window-size.yml b/commands-yml/commands/web/window/get-window-size.yml index 13ee6286678..67419b8db82 100644 --- a/commands-yml/commands/web/window/get-window-size.yml +++ b/commands-yml/commands/web/window/get-window-size.yml @@ -25,9 +25,6 @@ example_usage: | @driver.window_size @driver.window_size("handleName") - php: - | - // TODO PHP sample csharp: | Size windowSize = driver.Manage().Window.Size; @@ -39,7 +36,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L546" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/W3C/Bridge:window_size" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/W3C/Bridge:window_size" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWindow.cs" # Driver support by platform @@ -59,7 +55,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/window/maximize-window.yml b/commands-yml/commands/web/window/maximize-window.yml index a363d696806..b4222e874b5 100644 --- a/commands-yml/commands/web/window/maximize-window.yml +++ b/commands-yml/commands/web/window/maximize-window.yml @@ -22,9 +22,6 @@ example_usage: ruby_core: | @driver.maximize_window - php: - | - // TODO PHP sample csharp: | driver.Manage().Window.Maximize(); @@ -36,7 +33,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L517" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Window:maximize" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Window:maximize" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWindow.cs" # Driver support by platform @@ -56,7 +52,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/window/set-window-position.yml b/commands-yml/commands/web/window/set-window-position.yml index c8dd8e5bc87..d92912eefca 100644 --- a/commands-yml/commands/web/window/set-window-position.yml +++ b/commands-yml/commands/web/window/set-window-position.yml @@ -22,9 +22,6 @@ example_usage: ruby_core: | @driver.reposition_window(10, 10) - php: - | - // TODO PHP sample csharp: | driver.Manage().Window.Position = new Point(10, 10); @@ -36,7 +33,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L604" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/W3C/Bridge:reposition_window" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/W3C/Bridge:reposition_window" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWindow.cs" # Driver support by platform @@ -56,7 +52,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/window/set-window-size.yml b/commands-yml/commands/web/window/set-window-size.yml index bda7b4b3852..f35f0b427ba 100644 --- a/commands-yml/commands/web/window/set-window-size.yml +++ b/commands-yml/commands/web/window/set-window-size.yml @@ -22,9 +22,6 @@ example_usage: ruby_core: | @driver.resize_to(10, 10) - php: - | - // TODO PHP sample csharp: | driver.Manage().Window.Size = new Size(10, 10); @@ -36,7 +33,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L564" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/W3C/Bridge:maximize_window" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/W3C/Bridge:maximize_window" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWindow.cs" # Driver support by platform @@ -56,7 +52,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/window/set-window.yml b/commands-yml/commands/web/window/set-window.yml index 3cdfeb9491b..37a3db48f76 100644 --- a/commands-yml/commands/web/window/set-window.yml +++ b/commands-yml/commands/web/window/set-window.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.switch_to.window("handle") - php: - | - // TODO PHP sample csharp: | driver.SwitchTo().Window("handle"); @@ -35,7 +32,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L317" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/W3C/Bridge:switch_to_window" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/W3C/Bridge:switch_to_window" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteTargetLocator.cs" # Driver support by platform @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/commands/web/window/title.yml b/commands-yml/commands/web/window/title.yml index 7a186198621..a2c68a307cb 100644 --- a/commands-yml/commands/web/window/title.yml +++ b/commands-yml/commands/web/window/title.yml @@ -21,9 +21,6 @@ example_usage: ruby_core: | @driver.title - php: - | - // TODO PHP sample csharp: | string title = driver.Title; @@ -35,7 +32,6 @@ client_docs: javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1794" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:title" ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:title" - php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWebDriver.cs" # Driver support by platform @@ -55,7 +51,6 @@ client_support: java: true python: true ruby: true - php: true csharp: true javascript_wd: true javascript_wdio: true diff --git a/commands-yml/template.md b/commands-yml/template.md index 576a2303084..b626ac687eb 100644 --- a/commands-yml/template.md +++ b/commands-yml/template.md @@ -55,15 +55,6 @@ {{/if}} ``` -```php -{{#if example_usage.php}} -# PHP -{{example_usage.php}} -{{else}} -// Not supported -{{/if}} -``` - ```csharp {{#if example_usage.csharp}} // C# @@ -121,7 +112,6 @@ |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| {{versions client_support.javascript_wdio}} | {{client_url client_docs.wdio}} | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| {{versions client_support.javascript_wd}} | {{client_url client_docs.javascript_wd}} | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| {{versions client_support.ruby}} | {{client_url client_docs.ruby}} | -|[PHP](https://github.com/appium/php-client/releases/latest)| {{versions client_support.php}} | {{client_url client_docs.php}} | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| {{versions client_support.csharp}} | {{client_url client_docs.csharp}} | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in {{ymlFileName}}) diff --git a/commands-yml/validator.js b/commands-yml/validator.js index eeb9cbc8070..37b145904c8 100644 --- a/commands-yml/validator.js +++ b/commands-yml/validator.js @@ -61,7 +61,6 @@ const validator = { 'example_usage.ruby': {}, 'example_usage.ruby_core': {}, 'example_usage.csharp': {}, - 'example_usage.php': {}, 'description': {}, 'client_docs.java': {hasPossibleAttributes: _.keys(CLIENT_URL_TYPES)}, 'client_docs.javascript_wdio': {hasPossibleAttributes: _.keys(CLIENT_URL_TYPES)}, @@ -69,7 +68,6 @@ const validator = { 'client_docs.ruby': {hasPossibleAttributes: _.keys(CLIENT_URL_TYPES)}, 'client_docs.ruby_core': {hasPossibleAttributes: _.keys(CLIENT_URL_TYPES)}, 'client_docs.csharp': {hasPossibleAttributes: _.keys(CLIENT_URL_TYPES)}, - 'client_docs.php': {hasPossibleAttributes: _.keys(CLIENT_URL_TYPES)}, 'endpoint': {presence: true}, 'driver_support': {presence: true}, 'endpoint.url': {presence: true}, diff --git a/docs/README.md b/docs/README.md index 9528061d3c7..45e6cdad26a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -6,6 +6,11 @@ Formatted doc is [here](http://appium.io/documentation.html?lang=en). ## doc translation -At the moment we are focusing on improving the english documentation. When it -is done we are planning to setup proper i18n l10n processes so that it is +At the moment we are focusing on improving the english documentation. When it +is done we are planning to setup proper i18n l10n processes so that it is easier for people to help in translating the documentation. + +## Bump supported NodeJS version + +- Refer to https://nodejs.org/en/download/releases/ if current supported version is EOL +- Example to bump supported NodeJS version: https://github.com/appium/appium/pull/15000 diff --git a/docs/cn/about-appium/appium-clients.md b/docs/cn/about-appium/appium-clients.md index 1c2c4c8d355..a6fe3196440 100644 --- a/docs/cn/about-appium/appium-clients.md +++ b/docs/cn/about-appium/appium-clients.md @@ -11,13 +11,16 @@ Appium 服务端自身定义了基于官方协议的扩展,帮助 Appium 用 Ruby | [https://github.com/appium/ruby_lib](https://github.com/appium/ruby_lib), [https://github.com/appium/ruby_lib_core](https://github.com/appium/ruby_lib_core) Python | [https://github.com/appium/python-client](https://github.com/appium/python-client) Java | [https://github.com/appium/java-client](https://github.com/appium/java-client) +C# (.NET) | [https://github.com/appium/appium-dotnet-driver](https://github.com/appium/appium-dotnet-driver) + +### Community based + +语言 / 框架 | Github 仓库和安装指南 | +----- | ----- | JavaScript (Node.js) | [https://github.com/admc/wd](https://github.com/admc/wd) JavaScript (Node.js) | [https://github.com/webdriverio/webdriverio](https://github.com/webdriverio/webdriverio) JavaScript (Browser) | [https://github.com/projectxyzio/web2driver](https://github.com/projectxyzio/web2driver) -Objective C | [https://github.com/appium/selenium-objective-c](https://github.com/appium/selenium-objective-c) -PHP | [https://github.com/appium/php-client](https://github.com/appium/php-client) -C# (.NET) | [https://github.com/appium/appium-dotnet-driver](https://github.com/appium/appium-dotnet-driver) -RobotFramework | [https://github.com/jollychang/robotframework-appiumlibrary](https://github.com/jollychang/robotframework-appiumlibrary) +RobotFramework | [https://github.com/serhatbolsu/robotframework-appiumlibrary](https://github.com/serhatbolsu/robotframework-appiumlibrary) --- EOF. diff --git a/docs/cn/about-appium/intro.md b/docs/cn/about-appium/intro.md index 40755f773ac..ddca7088123 100644 --- a/docs/cn/about-appium/intro.md +++ b/docs/cn/about-appium/intro.md @@ -1,6 +1,6 @@ ## Appium 介绍 -Appium 是一个开源工具,用于自动化 iOS 手机、 Android 手机和 Windows 桌面平台上的原生、移动 Web 和混合应用。**「原生应用」**指那些用 iOS、 Android 或者 Windows SDKs 编写的应用。**「移动 Web 应用」**是用移动端浏览器访问的应用( Appium 支持 iOS 上的 Safari 、Chrome 和 Android 上的内置浏览器)。**「混合应用」**带有一个「webview」的包装器——用来和 Web 内容交互的原生控件。类似于 [Apache Cordova](https://cordova.apache.org) 或 [Phonegap](http://phonegap.com/) 项目,创建一个混合应用使得用 Web 技术开发然后打包进原生包装器创建一个混合应用变得容易了。 +Appium 是一个开源工具,用于自动化 iOS 手机、 Android 手机和 Windows 桌面平台上的原生、移动 Web 和混合应用。**「原生应用」**指那些用 iOS、 Android 或者 Windows SDKs 编写的应用。**「移动 Web 应用」**是用移动端浏览器访问的应用( Appium 支持 iOS 上的 Safari 、Chrome 和 Android 上的内置浏览器)。**「混合应用」**带有一个「webview」的包装器——用来和 Web 内容交互的原生控件。类似于 [Apache Cordova](https://cordova.apache.org) 项目,创建一个混合应用使得用 Web 技术开发然后打包进原生包装器创建一个混合应用变得容易了。 重要的是,Appium 是跨平台的:它允许你用同样的 API 对多平台(iOS、Android、Windows)写测试。做到在 iOS、Android 和 Windows 测试套件之间复用代码。 diff --git a/docs/cn/advanced-concepts/parallel-tests.md b/docs/cn/advanced-concepts/parallel-tests.md index 98b765991bb..d372f6eaef5 100644 --- a/docs/cn/advanced-concepts/parallel-tests.md +++ b/docs/cn/advanced-concepts/parallel-tests.md @@ -29,7 +29,7 @@ Appium 给用户提供了在一个机器上启动多个 Android sessions 的方 十分不幸,目前并不能在本地运行 iOS 的并发测试。iOS 同一时间只能启动一个模拟器,不像 Andoid 可以同时多个模拟器去运行测试。 -如果你想运行 iOS 的并发测试,你需要使用 Sauce 上传你的 Appium 测试脚本,然后就可以运行多台 iOS 和 Android 的并发测试,只要你的账号允许。查看更多相关信息可以查看 [这里](https://docs.saucelabs.com/tutorials/appium/)。 +如果你想运行 iOS 的并发测试,你需要使用 Sauce 上传你的 Appium 测试脚本,然后就可以运行多台 iOS 和 Android 的并发测试,只要你的账号允许。 本文由 thanksdanny 翻译,由 lihuazhang 校验。 diff --git a/docs/cn/advanced-concepts/wda-custom-server.md b/docs/cn/advanced-concepts/wda-custom-server.md index ebb06e39f49..bc52be2b45a 100644 --- a/docs/cn/advanced-concepts/wda-custom-server.md +++ b/docs/cn/advanced-concepts/wda-custom-server.md @@ -8,9 +8,6 @@ Appium 的 iOS 版本的后端用的是[Facebook's WebDriverAgent](https://githu ### 安装WDA -Appium 会自动下载 WebDriverAgent 源码。如果使用 npm 命令(`npm install -g appium`) 安装Appium的话,通常情况下会保存在/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent 目录下。 -如果是首次安装的话,还需要下载一些第三方依赖("carthage"工具就是为此准备的: `brew install carthage`): - ```bash cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent ./Scripts/bootstrap.sh -d diff --git a/docs/cn/contributing-to-appium/appium-from-source.md b/docs/cn/contributing-to-appium/appium-from-source.md index fa750486dcf..ebadc3a9321 100644 --- a/docs/cn/contributing-to-appium/appium-from-source.md +++ b/docs/cn/contributing-to-appium/appium-from-source.md @@ -23,7 +23,6 @@ git clone https://github.com/appium/appium.git cd appium npm install npm run build -npm run authorize-ios # for ios only node . ``` ```center @@ -31,7 +30,6 @@ git clone https://github.com/appium/appium.git cd appium npm install npm run build # 需要gulp,往下看 -npm run authorize-ios # 仅iOS node . ``` @@ -74,31 +72,6 @@ node . 完整的参数列表,请参考[the server documentation](/docs/cn/writing-running-appium/server-args.md) - -#### Hacking with Appium for iOS - -#### 鼓捣 iOS 上的Appium - -为了避免启动iOS应用程序时可能出现的安全对话框,您必须通过以下两种方式之一修改 `/etc/authorization` 文件: - -1. 手动修改 `/etc/authorization` 文件中的 `system.privilege.taskport` 下的 ``的值为 ``。 -2. 运行以下命令,为您自动修改 `/etc/authorization` 文件: - - ```center - sudo npm run authorize-ios - ``` - - -此时,运行: - -```center -rm -rf node-modules -npm install -npm run build -``` - -现在你的 Appium 实例已经准备好了。运行 `node .` 以启动Appium服务器。 - #### 鼓捣 Android 上的Appium 通过运行以下命令配置Appium: diff --git a/docs/cn/drivers/android-uiautomator2.md b/docs/cn/drivers/android-uiautomator2.md new file mode 100644 index 00000000000..5e73f93dc24 --- /dev/null +++ b/docs/cn/drivers/android-uiautomator2.md @@ -0,0 +1,102 @@ +## Android 的 UiAutomator2 驱动 + +Appium 目前官方推荐使用 `UiAutomator2` 作为安卓app在自动化测试中的驱动。 + _(如果你是Appium新手? 可以参阅 [introduction to Appium drivers(TODO)](#TODO))_. + 这个驱动使用了谷歌的 [UiAutomator2](https://developer.android.com/training/testing/ui-automator.html) 技术,让自动化测试可以更方便地在安卓真机或者模拟器上运行。 + +UiAutomator2 驱动的开发过程,记录在了[appium-uiautomator2-driver](https://github.com/appium/appium-uiautomator2-driver) 代码仓库中。 + +在更早期的安卓设备驱动中,包括了以下驱动: +* [UiAutomator 驱动](/docs/en/drivers/android-uiautomator.md) + + +### 需求与依赖 + +在 Appium 常规依赖之外: + +* 需要在您的设备上,安装并配置好 Java 8 +* 在 Mac,Windows 或者 Linux OS 设备上,需要安装好 Android SDK + * Android SDK 中 Build Tools 的版本需要大于等于 24 + +此外,UiAutomator2 驱动是不支持对 Android 5.0 (Lollipop, API level 21)以下的设备进行自动化测试的,如果对这类版本的设备进行自动化测试,建议使用:[UiAutomator 驱动](/docs/en/drivers/android-uiautomator.md); + + +### 使用方式 + +通过 UiAutomator2 驱动启动一个测试任务时,需要传递一个`automationName` [capability] 的参数在 [新会话的请求](#TODO) 中,并且 `automationName` 的值需要是:`UiAutomator2`。当然,你至少也需要再传递这些参数:`platformName` (=`Android`), `platformVersion`, `deviceName`, 与 `app`。 + +同时,强烈建议您传递:`appPackage` 与 `appActivity` 这两个参数,以便让 Appium 知道您想要拉起哪个 App 和哪个 activity。如果没有的话,Appium 将会自己从 App 的 manifest 文件中自动去查找。 + + +### 功能参数 + +UiAutomator2 驱动支持许多通用的功能参数:[Appium +capabilities](/docs/en/writing-running-appium/caps.md),同时,有许多特有的功能参数,可以参考这篇文档查找这些功能参数:[Android +section](/docs/en/writing-running-appium/caps.md#android-only)。 + +对于 web 测试,是测试 Chrome 而不是去测试您自己的应用程序,需要保证 `app` 参数为空,并且设置 `browserName` 为 `Chrome`。需要提醒您的是:您需要保证 Chrome 是在安卓模拟器/真机上运行,并且与 [version compatible with +Chromedriver](/docs/en/writing-running-appium/web/chromedriver.md) 兼容。 + + +### 命令 + +如果需要查看 Appium 支持的命令,及它们是如何映射到 UiAutomator2 驱动的,可以参考:[API +Reference](#TODO)。 + + +### 基础设置 + +1. 确保您拥有 Appium 的基础依赖(例如:Node 与 NPM)来安装和配置 Appium。 + +1. 确保 Java ( 这里指的是 JDK 而不是 JRE )已经成功安装并且在环境变量中配置好了 Java 的路径。这一步的具体操作,在 Mac/Linux 与 Windows 等不同平台上操作不同,这里为您提供一个在 Windows 平台上设置路径的方法:[点击查看](https://www.java.com/en/download/help/path.xml)。 + +1. 确保环境变量: `JAVA_HOME` 已经成功设置为 JDK 的路径。举一个 Mac/Linux 的例子(这个路径的具体地址,根据您安装的实际情况有所不同): + ``` + export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home" + ``` + + 在 Windows 电脑上,可以通过 「控制面板」来配置。 + [Android Studio](https://developer.android.com/studio/index.html) 同样提供了一个 JDK,像这样的一个路径: `/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home` (示例为Mac电脑版本)。您同样可以指定这个路径。 + +1. 安装 [Android SDK](http://developer.android.com/sdk/index.html)。当前最常用的方法是通过:[Android + Studio](https://developer.android.com/studio/index.html) 来安装配置。可以在桌面应用程序中,通过GUI界面操作,选中一个路径来下载 Android SDK。 + +1. 设置 `ANDROID_HOME` 环境变量。举个例子,如果您下载 Android SDK 在 `/usr/local/adt` 这个路径下,您将在这个路径下,找到一个包含 SDK 文件的、名称为: `sdk` 的文件夹。在这种情况下,打开 +Mac 和 Linux 的配置文件(如:`~/.bashrc`, `~/.bash_profile` 及其他类型的文件),将这个环境变量与路径记录在其中。 + + ``` + export ANDROID_HOME="/usr/local/adt/sdk" + ``` + + 在 Windows 机器上,按照相同的步骤,将环境变量设置在「控制面板」中。 + +1. 通过 SDK manager,确保您安装了您所需要的、对应 Android API 版本的 SDK(例如:24)。 + +1. 在 Windows 电脑上,需确保您的 Appium 是通过管理员模式来运行的。 + +到此,您基础的系统配置已经完成了。接下来的步骤,需要看您是选择在模拟器运行测试还是在真机上运行测试。需要准备好待测 App (最好是Debug 版本)APK 的本地路径或下载链接,这个路径或链接,在运行测试时,需要设置为 `app` 参数的内容。 + + +### 模拟器设置 + +使用模拟器运行测试是,需要使用 Android Studio 或 SDK 提供的 AVD Manager。通过使用这个工具,来创建您所需要的模拟器。在模拟器启动时,Appium 将会自动找到并使用它进行测试。同时,如果您指定了 `avd` 这个功能参数为您所制定的设备名称时,Appium 会启动您指定的模拟器来运行测试。 + +关于模拟器的一些小提示: + +* Android 模拟器可以设置硬件加速,尽管它有一些局限性。可以通过 Intel 网站下载,或者通过 Android SDK manager。了解更多信息,[可以点击这里查看](https://github.com/intel/haxm)。 + +* 如果您想在 Appium 测试中使用电源相关的命令,请确保在 AVD 的 `config.ini` 文件中,设置了:`hw.battery=yes` (在 Android 5.0 上,为默认设置)。 + + +### 真机设置 + +对于 Android 自动化测试,除了以下一些简单操作外,不需要其他复杂的设置: + +* 确保打开了设备的 [开发者模式](https://developer.android.com/studio/debug/dev-options.html)。 + +* 确保设备通过 USB 连接到 Appium 服务启动的设备上,并且可以被 [ADB](https://developer.android.com/studio/command-line/adb.html) 找到 +( 执行 `adb devices` 确认 )。 + +* 确保设置中的“验证应用程序”是关闭的,以允许 Appium 安装一些辅助软件,而不用手动点击确认。 + +( 对于一些特殊的指令,设备可能需要被 root ,尽管这并不是经常会遇到的。 ) diff --git a/docs/cn/drivers/ios-xcuitest-img/check-prov-prof.png b/docs/cn/drivers/ios-xcuitest-img/check-prov-prof.png new file mode 100644 index 00000000000..0016e46b15f Binary files /dev/null and b/docs/cn/drivers/ios-xcuitest-img/check-prov-prof.png differ diff --git a/docs/cn/drivers/ios-xcuitest-img/create-new-project.png b/docs/cn/drivers/ios-xcuitest-img/create-new-project.png new file mode 100644 index 00000000000..3afc4db84a8 Binary files /dev/null and b/docs/cn/drivers/ios-xcuitest-img/create-new-project.png differ diff --git a/docs/cn/drivers/ios-xcuitest-img/create-single-page.png b/docs/cn/drivers/ios-xcuitest-img/create-single-page.png new file mode 100644 index 00000000000..5f8c61042d6 Binary files /dev/null and b/docs/cn/drivers/ios-xcuitest-img/create-single-page.png differ diff --git a/docs/cn/drivers/ios-xcuitest-img/no-prov-prof.png b/docs/cn/drivers/ios-xcuitest-img/no-prov-prof.png new file mode 100644 index 00000000000..f63c353987f Binary files /dev/null and b/docs/cn/drivers/ios-xcuitest-img/no-prov-prof.png differ diff --git a/docs/cn/drivers/ios-xcuitest-img/project-prov-prof.png b/docs/cn/drivers/ios-xcuitest-img/project-prov-prof.png new file mode 100644 index 00000000000..a6aed1d459e Binary files /dev/null and b/docs/cn/drivers/ios-xcuitest-img/project-prov-prof.png differ diff --git a/docs/cn/drivers/ios-xcuitest-img/set-up-bundle.png b/docs/cn/drivers/ios-xcuitest-img/set-up-bundle.png new file mode 100644 index 00000000000..1ff5a248a7c Binary files /dev/null and b/docs/cn/drivers/ios-xcuitest-img/set-up-bundle.png differ diff --git a/docs/cn/drivers/ios-xcuitest-img/untrusted-dev.png b/docs/cn/drivers/ios-xcuitest-img/untrusted-dev.png new file mode 100644 index 00000000000..601a407d1e6 Binary files /dev/null and b/docs/cn/drivers/ios-xcuitest-img/untrusted-dev.png differ diff --git a/docs/cn/drivers/ios-xcuitest-img/xcode-bundle-id.png b/docs/cn/drivers/ios-xcuitest-img/xcode-bundle-id.png new file mode 100644 index 00000000000..1d187790a9c Binary files /dev/null and b/docs/cn/drivers/ios-xcuitest-img/xcode-bundle-id.png differ diff --git a/docs/cn/drivers/ios-xcuitest-img/xcode-config.png b/docs/cn/drivers/ios-xcuitest-img/xcode-config.png new file mode 100644 index 00000000000..26207e5cdfd Binary files /dev/null and b/docs/cn/drivers/ios-xcuitest-img/xcode-config.png differ diff --git a/docs/cn/drivers/ios-xcuitest-img/xcode-facebook-fail.png b/docs/cn/drivers/ios-xcuitest-img/xcode-facebook-fail.png new file mode 100644 index 00000000000..24994eae88d Binary files /dev/null and b/docs/cn/drivers/ios-xcuitest-img/xcode-facebook-fail.png differ diff --git a/docs/cn/drivers/ios-xcuitest-img/xcode-facebook-succeed.png b/docs/cn/drivers/ios-xcuitest-img/xcode-facebook-succeed.png new file mode 100644 index 00000000000..c4f2f5288af Binary files /dev/null and b/docs/cn/drivers/ios-xcuitest-img/xcode-facebook-succeed.png differ diff --git a/docs/cn/drivers/ios-xcuitest-real-devices.md b/docs/cn/drivers/ios-xcuitest-real-devices.md new file mode 100644 index 00000000000..5f003c816d1 --- /dev/null +++ b/docs/cn/drivers/ios-xcuitest-real-devices.md @@ -0,0 +1,200 @@ +## Appium XCUITest 驱动在真机上的设置 + +### 安装依赖 + +自 Appium 1.15.0 起,Appium 与真机设备通过 [appium-ios-device](https://github.com/appium/appium-ios-device) 进行联通。您不需要再额外安装依赖项。XCUITest 驱动会安装一个名为 `WebDriverAgent-Runner` 的辅助软件在设备上,并通过这个辅助软件控制被测应用。虽然这听起来很简单,但在苹果软件的代码签名和配置应用程序上,在开发和测试中可能会有些头痛。 +应该可以从Xcode中找到待测设备。请确保被测设备连接Xcode万无一失。你可以通过打开 _Devices and Simulators_ 这个选项栏来确认这件事。 + +这篇文章也有利于解决环境依赖安装的问题 [appium-xcuitest-driver](https://github.com/appium/appium-xcuitest-driver) 。 + + +### 基础 (自动) 配置 + +在 iOS 真机上使用 XCUITest 运行自动化测试最简单的方法,就是使用自动配置来运行。这里有两条路: + +* 使用功能参数 `xcodeOrgId` 与 `xcodeSigningId` : +```json + { + "xcodeOrgId": "", + "xcodeSigningId": "iPhone Developer" + } +``` +* 在任意路径下,创建一个 `.xcconfig` 文件,并添加如下配置: +``` + DEVELOPMENT_TEAM = + CODE_SIGN_IDENTITY = iPhone Developer +``` + +无论哪种情况,苹果公司会生成一个 10 位字符的唯一字符串作为您的 Team ID,分配给您的开发团队。您可以您的开发者账号找到这个 Team ID,您可以登录[developer.apple.com/account](http://developer.apple.com/account) 并点击侧边栏的 「开发者资格( Membership )」。您可以在 「开发者资格( Membership )」 详细信息的团队名称下找到您的 Team ID。您也可以在您电脑「钥匙串」中的 iPhone 开发者证书中的 「组织单元("Organizational Unit")」字段中,找到您的 Team ID。 + +需要注意的是,使用 `xcodeConfigFile` 这种方式,与使用 `xcodeOrgId` 和 `xcodeSigningId` 的方式是互斥的。 + +这些配置完成后,您就只剩下将您的真机设备配置在参数 `udid` 中就可以了。 + +如果配置完无法运行,一般会在 Appium 服务日志中有对应的报错信息,比如有些会提示:`info XCUITest xcodebuild exited with code '65' and +signal 'null'`。这通常意味着代码签名配置的有问题。继续回看上一部分[基础 (自动) 配置](#basic-manual-configuration)来解决这个问题。 + +如果 `WebDriverAgentRunner` 在真机设备上安装成功,但是 Appium 服务日志有如下报错: +``` +2017-01-24 09:02:18.358 xcodebuild[30385:339674] Error Domain=com.apple.platform.iphoneos Code=-12 "Unable to launch com.apple.test.WebDriverAgentRunner-Runner" UserInfo={NSLocalizedDescription=Unable to launch com.apple.test.WebDriverAgentRunner-Runner, NSUnderlyingError=0x7fa839cadc60 {Error Domain=DTXMessage Code=1 "(null)" UserInfo={DTXExceptionKey=The operation couldn’t be completed. Unable to launch com.apple.test.WebDriverAgentRunner-Runner because it has an invalid code signature, inadequate entitlements or its profile has not been explicitly trusted by the user. : Failed to launch process with bundle identifier 'com.apple.test.WebDriverAgentRunner-Runner'}}} +2017-01-24 09:02:18.358 xcodebuild[30385:339674] Error Domain=IDETestOperationsObserverErrorDomain Code=5 "Early unexpected exit, operation never finished bootstrapping - no restart will be attempted" UserInfo={NSLocalizedDescription=Early unexpected exit, operation never finished bootstrapping - no restart will be attempted} + +Testing failed: + Test target WebDriverAgentRunner encountered an error (Early unexpected exit, operation never finished bootstrapping - no restart will be attempted) +``` +这个问题是由于开发者在设备上不受信任,当你手动尝试将 `WebDriverAgentRunner` 安装在您的真机设备上时,会看到如下弹窗信息: + +![Untrusted developer](ios-xcuitest-img/untrusted-dev.png) + +您可以通过 设置(Settings) => 通用(General) => 设备管理(Device Management)来信任开发者,以使 `WebDriverAgentRunner` 能够成功运行 (更多详细信息见: [苹果官方支持文档](https://support.apple.com/en-us/HT204460))。 + + + +### 基础 (手动) 配置 + +在很多情况下,基本的自动配置是不满足使用需要的。通常在自动化运行时,会有代码签名和项目配置的问题。当正在使用的开发帐户是“免费”帐户时,无法创建出通用的配置文件。 + +这通常表现为 Xcode 报错为:**failed to create +provisioning profile**: + +![No provisioning profile](ios-xcuitest-img/no-prov-prof.png) + +解决此问题的最简单方法是通过打开 [Xcode](https://developer.apple.com/xcode/) 并创建一个新项目来创建配置文件 : + +![Create new project](ios-xcuitest-img/create-new-project.png) + +只要选择了 "iOS",具体的应用类型无关紧要,一般使用单页面应用 ("Single View Application")最简单也最方便: + +![Create single page](ios-xcuitest-img/create-single-page.png) + +重要的是,使用一个唯一的 产品名称("Product Name")与 组织名称("Organization Name"),并且,在这时候,请选择你的团队("Team")。 + +![Setup bundle](ios-xcuitest-img/set-up-bundle.png) + +您可以通过查看 "项目" 选项,来确认配置文件是否已创建: + +![Project pane](ios-xcuitest-img/project-prov-prof.png) + +或者通过进入您的帐户首选项并查看配置文件: + +![Check provisioning profile](ios-xcuitest-img/check-prov-prof.png) + +此时,您有一个有效的配置文件。记住 bundle id 并添加到测试的 `updatedWDABundleId` 功能参数中。然后按照 [如何初始化自动配置](#basic-automatic-configuration). + + +### 完全手工配置 + +或者,配置文件可以完全通过手工在项目中配置(需要知道的是,每次WDA更新、Appium更新时,都需要操作一次,_不推荐_ ): + +* 找到您 Appium 的安装路径: +``` + $ which appium + /path/where/installed/bin/appium +``` +* 由于路径在: `/path/where/installed/bin/appium`,那么,`WebDriverAgent` 可以在这个路径的下级路径中被找到: `/path/where/installed/lib/node_modules/appium/node_modules/appium-webdriveragent`。 + 打开终端(terminal),移动到该路径下执行如下命令: +``` + mkdir -p Resources/WebDriverAgent.bundle +``` +* ( 如果 Appium 版本低于 1.20 ) 在终端(terminal)执行如下命令: +``` + ./Scripts/bootstrap.sh -d +``` +* Xcode 打开 `WebDriverAgent.xcodeproj`。同时选中 `WebDriverAgentLib` + and `WebDriverAgentRunner` ,在 通用("General")页签下,都选择为自动管理签名("Automatically manage signing"),然后选择您所在的开发组织(`Development Team`),它将自动选择开发者签名证书(`Signing Ceritificate`)。结果应如下所示: + + ![WebDriverAgent in Xcode project](ios-xcuitest-img/xcode-config.png) + + * Xcode 可能无法为 `WebDriverAgentRunner` 创建配置文件: + + ![Xcode provisioning fail](ios-xcuitest-img/xcode-facebook-fail.png) + + * 这需要通过进入构建设置("Build Settings")页签下,手动更改目标的bundle id,并且将构建产物标识符("Product Bundle Identifier")`com.facebook.WebDriverAgentRunner` 进行一些修改,以让 Xcode 通过: + + ![Xcode bundle id](ios-xcuitest-img/xcode-bundle-id.png) + + * Going back to the "General" tab for the `WebDriverAgentRunner` target, you + should now see that it has created a provisioning profile and all is well: + 返回 `WebDriverAgentRunner` 的通用("General")页签,您将看到配置文件已经创建完成,并且所有配置都是正常的了: + + ![Xcode provisioning profile](ios-xcuitest-img/xcode-facebook-succeed.png) + +* 最后,您可以验证一切是否正常。构建项目: +``` + xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=' test +``` +如果一切正常,输出信息一般以此结尾: +``` + Test Suite 'All tests' started at 2017-01-23 15:49:12.585 + Test Suite 'WebDriverAgentRunner.xctest' started at 2017-01-23 15:49:12.586 + Test Suite 'UITestingUITests' started at 2017-01-23 15:49:12.587 + Test Case '-[UITestingUITests testRunner]' started. + t = 0.00s Start Test at 2017-01-23 15:49:12.588 + t = 0.00s Set Up +``` +* 要完全验证,您可以尝试访问 WebDriverAgent 服务器状态 + (**提示:** 您 _必须_ 保证 WebDriverAgent 服务与设备在同一网络下,可以通过以下方式获取 IP, Settings => Wi-Fi => Current Network): +``` + export DEVICE_URL='http://:8100' + export JSON_HEADER='-H "Content-Type: application/json;charset=UTF-8, accept: application/json"' + curl -X GET $JSON_HEADER $DEVICE_URL/status +``` + 您将获得类似如下的返回信息: + +``` + { + "value" : { + "state" : "success", + "os" : { + "name" : "iOS", + "version" : "10.2" + }, + "ios" : { + "simulatorVersion" : "10.2", + "ip" : "192.168.0.7" + }, + "build" : { + "time" : "Jan 23 2017 14:59:57" + } + }, + "sessionId" : "8951A6DD-F3AD-410E-A5DB-D042F42F68A7", + "status" : 0 + } +``` + +### 对被测应用的设置 + +不仅是 WDA 可以在您的设备上运行,被测应用也需要可以在您的设备上运行。它们之间的规则是相同的:一个拥有签名的被测应用( 一个 `.ipa` 文件)。 可以在 这里 [这里](https://medium.com/ios-os-x-development/ios-code-signing-provisioning-in-a-nutshell-d5b247760bef#.5hirl92tn) +与 +[这里](https://www.nodesagency.com/understanding-code-signing-for-ios-apps) 找到更详细的描述。 + +更详细地说,要使用真机运行自动化测试,您需要以下内容: + +* 一个 [苹果开发者ID](https://developer.apple.com/programs/ios/) 和一个有效的开发者帐户,以及一个配置好的开发证书和配置文件。(请确保配置文件具有[iOS Distribution](https://developer.apple.com/support/certificates/)类型) + +* 如果需要在真机运行测试,一个合法的 iOS 开发者证书和配置文件是必须有的。您的 App 也需要签名。您可以在这里看到更多信息:[苹果官方文档](https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/TestingYouriOSApp/TestingYouriOSApp.html)。 + +* 一台 iPad 或 iPhone设备。请确保在 Xcode 中可以找到它们。 + +* 一个拥有签名的 `.app` 或 `.ipa` 被测 App 应用,或者是它们可以被构建的源代码。 + +* 一台拥有 [Xcode](https://developer.apple.com/xcode/) 与 Xcode 开发者命令行工具的 Mac 系统的电脑。 + +Appium 将通过 `ideviceinstaller` (`libimobiledevice` 的一部分功能) 将应用安装到设备上,但有时候,通过 Xcode 预安装会更加方便(再看看这个:[苹果官方文档](https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/TestingYouriOSApp/TestingYouriOSApp.html)) + + +### 问题排查思路 + +1. 请通过 Xcode Organizer 或 iTunes 确保设备 UDID 是正确的。 它是一个 20+ 的字符串。 +1. 请确保相同操作在模拟器上是可以运行的。 +1. 请确保在设备上 **启动** 了以下设置: + 1. 设置(Settings) -> 开发者(Developer) -> **启动 UI Automation (Enable UI Automation)** + 1. 设置(Settings) -> Safari -> 高级(Advanced) -> **Web Inspector** 与 **Remote Automation** + 1. 请阅读 [Automating mobile web apps](/writing-running-appium/web/mobile-web) 获取关于 WebView 运行的详细信息。 +1. 如果您不想为手动配置配置文件,请在自动生成时带上 `.xctrunner` 标识。`.xctrunner` 在 Xcode 11. [A reference](https://github.com/appium/appium/issues/13610) 起,将被自动配置。 + +1. 请确保设备没有越狱 + - `com.apple.mobile.installation_proxy` 服务在管理 App 上[不起作用](https://github.com/appium/appium-desktop/issues/1447) + +1. 确保配置文件具有:[_iOS 分发证书_](https://developer.apple.com/support/certificates/) + - 由于 Apple 的安全设计,活动 Xcode/xcodebuild 连接/会话是与 WebDriverAgentRunner 交互所必需需要的。 证书限制的影响: ([issue](https://github.com/appium/appium/issues/14577#issuecomment-660997827)) diff --git a/docs/cn/drivers/ios-xcuitest.md b/docs/cn/drivers/ios-xcuitest.md new file mode 100644 index 00000000000..2c2fb828acd --- /dev/null +++ b/docs/cn/drivers/ios-xcuitest.md @@ -0,0 +1,118 @@ +## iOS 的 XCUITest 驱动 + +iOS 应用的自动化测试,Appium 主要通过 `XCUITest` 驱动进行驱动。_(如果您是 Appium 新手? 可以参阅: [introduction to Appium drivers](#TODO))_。这个驱动通过苹果公司的 [XCUITest](https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html) 库,让自动化测试可以更方便地执行 App 自动化测试。它是通过 [WebDriverAgent](https://github.com/facebook/webdriveragent) 服务对 XCUITest 进行访问。WebDriverAgent(也称之为 “ WDA ”)是 Facebook 公司的一个项目,Appium 的核心团队为其做出了许多贡献。WDA 是一个 WebDriver兼容的服务,服务可以运行在 iOS 模拟器或真机上,并且调用 XCUITest API。WDA 作为 Appium 的 XCUITest 驱动管理器,对用户而言是一个黑盒进程,通过 WDA 对往来的通信进行代理,并提供许多额外的能力(举个例子:如管理模拟器等方法)。 + +XCUITest 驱动的开发过程,记录在了 [appium-xcuitest-driver](https://github.com/appium/appium-xcuitest-driver) 仓库中。 + + +### 需求与依赖 + +在 Appium 常规依赖之外: + +* 苹果公司从的 XCUITest 库只适用于 iOS 版本大于等于 iOS 9.3 的模拟器或真机设备。 +* 需要一台 macOS 10.11 或 10.12 的 Mac 电脑。 +* Xcode 7 或更高版本的 Xcode. +* XCUITest 驱动从 Appium 1.6 开始在 Appium 中可用。 +* 为了驱动使用正确,附加的系统库是必需的(请参阅下面的安装部分)。 + +### 迁移自 UIAutomation 驱动 + +如果您正在从 Appium 的旧驱动程序:[UIAutomation-based driver](/docs/en/drivers/ios-uiautomation.md) 迁移到XCUITest驱动,您可能想知道这个:[迁移指南](/docs/en/advanced-concepts/migrating-to-xcuitest.md)。 + + +### 使用 + +在使用 XCUITest 驱动来创建一个会话链接时,需要包含 `automationName` [capability](#TODO) 参数在您的 [创建新会话请求](#TODO)中,且其值应该是:`XCUITest`。当然,您也至少传递这些必传参数:`platformName`, `platformVersion`, `deviceName` 与 `app`。 + +在 iPhone 与 iPad 设备上,参数 `platformName` 需要是 `iOS`。在 tvOS 设备上,参数 `platformName` 需要是 `tvOS`。 + +- iOS + ```json + { + "automationName": "XCUITest", + "platformName": "iOS", + "platformVersion": "12.2", + "deviceName": "iPhone 8", + ... + } + ``` +- tvOS + ```json + { + "automationName": "XCUITest", + "platformName": "tvOS", + "platformVersion": "12.2", + "deviceName": "Apple TV", + ... + } + ``` + +### 功能参数 + +XCUITest 驱动支持许多通用的功能参数 [Appium +capabilities](/docs/en/writing-running-appium/caps.md), 同时,有许多特有的功能参数,可以参考这篇文档查找这些功能参数:[appium-xcuitest-driver +README](https://github.com/appium/appium-xcuitest-driver#desired-capabilities). + +如果要在 Safari 上测试,而不是在您的 App 上测试的话,请设置 `app` 为空,并且设置 `browserName` 为 `Safari`。 + + +### 命令 + +如果需要查看 Appium 支持的命令,及它们是如何映射到 XCUITest 驱动的,可以参考:[API +Reference](#TODO). + + +### 基础设置 + +_(我们推荐使用 [Homebrew](https://brew.sh) 来安装系统依赖)_ + +1. 确保您拥有 Appium 的基础依赖(例如:Node 与 NPM)来安装和配置 Appium。 + +如果您的自动化测试不使用真机运行,那么您已经完成设置了! 使用模拟器运行一个自动化测试app, 参数 `app` 需要设置为 App 的绝对路径或下载地址,它需要是一个后缀为 `.app` 或 `.app.zip` 这样的,为模拟器构建的 App 文件。 + +### 真机设备设置 + +Automating a real device with XCUITest is considerably more complicated, +在真机上使用 XCUITest 进行自动化要复杂得多,原因是 +苹果对在真实设备上运行应用程序的限制。请查看 [XCUITest real device setup doc](ios-xcuitest-real-devices.md) 获取介绍 。 + +一旦设置完成,在真机上运行会话可以使用这些功能: + +* `app` 或 `bundleId` - 一个是:指定应用程序 (您使用的 `.ipa` 文件的本地路径或下载地址), 另一个是:如果您已经安装了 App, 用以标示您需要让 Appium 拉起哪一个应用。 +* `udid` - 指定要在哪个设备上运行测试。 如果只有一个设备的话,它可以设置为 `auto` , Appium 将会自动找到并使用该设备。 + + +### 可选设置 + +* 安装 idb 可以更好地处理各种iOS模拟器操作, +例如:生物特征、地理位置设置和窗口聚焦。 + * 参考 https://github.com/appium/appium-idb#installation 以安装一些必要的库 (自 Appium 1.14.0 起 ) + +* 安装 [AppleSimulatorUtils](https://github.com/wix/AppleSimulatorUtils) +以设置 [权限相关参数](https://github.com/appium/appium-xcuitest-driver#desired-capabilities) + +### 运行测试生成的文件 + +在 iOS 上测试生成的文件有时会很大。 它包括:日志文件、临时文件以及Xcode运行时产生的数据。如果需要删除这些文件,一般来说,可以从以下地址找到它们: + +``` +$HOME/Library/Logs/CoreSimulator/* +$HOME/Library/Developer/Xcode/DerivedData/* +``` + +### 键盘设置 +高于 Appium 1.14.0,Appium 默认配置键盘首选项以让测试运行地更加稳定。您可以通过这些 API 来设置。 + +- 可以在 _Keyboards_ 关闭 `Auto-Correction` +- 可以在 _Keyboards_ 关闭 `Predictive` +- Mark keyboard tutorial as complete +- (仅模拟器生效) 打开虚拟键盘 + +### 可访问偏好设置调整 + +在某些情况下,启用以下首选项有助于使某些视图元素可访问。 +Appium不会自动修改这些设置,因为它们可能会影响被测试应用程序的执行方式。 +如果需要这些设置,需要您手动设置。 + +- 可以在 _Settings > Accessibility_ 打开 `Spoken Content` +- 可以在 _Settings > Accessibility_ 打开 `Speak Selection` diff --git a/docs/cn/writing-running-appium/appium-bindings.md b/docs/cn/writing-running-appium/appium-bindings.md index 4ffa82f4797..a4ee0906c25 100644 --- a/docs/cn/writing-running-appium/appium-bindings.md +++ b/docs/cn/writing-running-appium/appium-bindings.md @@ -8,17 +8,13 @@ Appium 支持以下语言的客户端类库: | [Python][pypi]               | [GitHub](https://github.com/appium/python-client) | | [Java][maven] | [GitHub](https://github.com/appium/java-client) | | [JavaScript][npm] | [GitHub](https://github.com/admc/wd) | -| [PHP][php] | [GitHub](https://github.com/appium/php-client) | | [C#][nuget] | [GitHub](https://github.com/appium/appium-dotnet-driver) | -| [Objective-C][cocoapods] | [GitHub](https://github.com/appium/selenium-objective-c) | [rubygems]: http://rubygems.org/gems/appium_lib [pypi]: https://pypi.python.org/pypi/Appium-Python-Client [maven]: https://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22io.appium%22%20AND%20a%3A%22java-client%22 [npm]: https://www.npmjs.org/package/wd -[php]: https://github.com/appium/php-client [nuget]: https://www.nuget.org/packages/Appium.WebDriver/ -[cocoapods]: https://github.com/appium/selenium-objective-c 注意,一些方法类似 `endTestCoverage()` 目前并不能完全支持。当[这个问题](https://github.com/appium/appium/issues/2448)被解决后,覆盖率支持才会被添加。如果你仍然想使用这些方法,请参考 GitHub 上关于 bindings 的文档。 @@ -47,21 +43,11 @@ driver.lockScreen(3); driver.lock(3) ``` -```php -// php -$this->lock(3); -``` - ```csharp // c# driver.LockDevice(3); ``` -```objectivec -// objective c -[driver lockDeviceScreen:3]; -``` - ### 将应用切换至后台 将当前的应用切换到后台,然后可以让其在指定时间内回到前台,或者让它一直留在后台。 @@ -97,24 +83,12 @@ driver.backgroundApp(-1); // 持续置于后台 driver.backgroundApp({timeout: null}); // 持续置于后台 ``` -```php -// php -$this->backgroundApp(5); -$this->backgroundApp(-1); -``` - ```csharp // c# driver.BackgroundApp(5); driver.BackgroundApp(-1); ``` -```objectivec -// objective c -[driver runAppInBackground:3]; -[driver runAppInBackground:-1]; -``` - ### 收起键盘 收起键盘。 @@ -141,23 +115,11 @@ driver.hideKeyboard(); driver.hideKeyboard() ``` -```php -// php -$this->hideKeyboard(); -$this->hideKeyboard(array('strategy' => 'pressKey', 'key' => 'Done')); -``` - ```csharp // c# driver.HideKeyboard("Done"); ``` -```objectivec -// objective c -[driver hideKeyboard]; -``` - - ### 启动 Activity 在当前 app 打开一个 activity,或者新打开一个应用并启动一个 acticity, *仅支持 Android*。 @@ -187,18 +149,6 @@ start_activity app_package: 'io.appium.android.apis', app_activity: '.accessibil driver.StartActivity("com.example.android.apis", ".Foo"); ``` -```php -// php -$this->startActivity(array("appPackage" => "com.example.android.apis", - "appActivity" => ".Foo")); -``` - -```objectivec -// objective c -[driver startActivity:@"com.example.android.apis" package:@".Foo"]; -``` - - ### 打开通知栏 打开通知栏,*仅支持 Android*。 @@ -228,16 +178,6 @@ open_notifications driver.OpenNotifications(); ``` -```php -// php -$this->openNotifications(); -``` - -```objectivec -// objective c -[driver openNotifications]; -``` - ### 应用是否已安装 检测应用是否已被安装。 @@ -263,21 +203,11 @@ driver.isAppInstalled("com.example.android.apis") .then(function (isAppInstalled) { /*...*/ }) ``` -```php -// php -$this->isAppInstalled('com.example.android.apis'); -``` - ```csharp // c# driver.IsAppInstalled("com.example.android.apis-"); ``` -```objectivec -// objective c -[driver isAppInstalled:@"com.example.android.apis-"]; -``` - ### 安装应用 在设备上安装应用。 @@ -302,21 +232,11 @@ driver.installApp("path/to/my.apk") driver.installApp("path/to/my.apk") ``` -```php -// php -$this->installApp('path/to/my.apk'); -``` - ```csharp // c# driver.InstallApp("path/to/my.apk"); ``` -```objectivec -// objective c -[driver installAppAtPath:@"path/to/my.apk"]; -``` - ### 卸载应用 @@ -342,21 +262,11 @@ driver.removeApp("com.example.android.apis") driver.removeApp("com.example.android.apis") ``` -```php -// php -$this->removeApp('com.example.android.apis'); -``` - ```csharp // c# driver.RemoveApp("com.example.android.apis"); ``` -```objectivec -// objective c -[driver removeApp:@"com.example.android.apis"]; -``` - ### 摇一摇 模拟摇晃设备的操作。 @@ -381,21 +291,11 @@ driver.shake() driver.shake() ``` -```php -// php -$this->shake(); -``` - ```csharp // c# driver.ShakeDevice(); ``` -```objectivec -// objective c -[driver shakeDevice]; -``` - ### 关闭应用 关闭应用。 @@ -420,21 +320,11 @@ driver.closeApp() driver.closeApp() ``` -```php -// php -$this->closeApp(); -``` - ```csharp // c# driver.CloseApp(); ``` -```objectivec -// objective c -[driver closeApp]; -``` - ### 启动(Launch) 为 desired capabilities 启动一个 session。请注意只有设置了 autoLaunch=false 关键字时才会生效。这不是为了随意启动一个应用或 activities ——如果你想这么做,请使用 `start_activity` 这个 desired capability 的参数。这个方法的使用场景是在你设置了 autoLaunch=false 后,用来继续执行初始化("launch")流程的。(译者注:举个例子,国产系统经常会在应用安装时弹出提示窗阻碍安装,此时可以通过 autoLaunch=false 来让应用安装后先执行你的脚本来关掉弹窗,然后再用这个函数来继续启动应用。) @@ -459,21 +349,11 @@ driver.launchApp() driver.launchApp() ``` -```php -// php -$this->launchApp(); -``` - ```csharp // c# driver.LaunchApp(); ``` -```objectivec -// objective c -[driver launchApp]; -``` - ### 重置 重置应用。(译者注:类似于清除缓存) @@ -498,21 +378,11 @@ driver.resetApp() driver.resetApp() ``` -```php -// php -$this->reset(); -``` - ```csharp // c# driver.ResetApp(); ``` -```objectivec -// objective c -[driver resetApp]; -``` - ### 可用的上下文(Contexts) 列出所有可用的上下文(contexts)。 @@ -537,21 +407,11 @@ driver.getContextHandles() driver.contexts().then(function (contexts) { /*...*/ }) ``` -```php -// php -$this->contexts(); -``` - ```csharp // c# driver.GetContexts() ``` -```objectivec -// objective c -NSArray *contexts = driver.allContexts; -``` - ### 当前上下文(context) 列出当前的上下文(context)。 @@ -576,21 +436,11 @@ driver.getContext() driver.currentContext().then(function (context) { /*...*/ }) ``` -```php -// php -$this->context(); -``` - ```csharp // c# driver.GetContext() ``` -```objectivec -// objective c -NSString *context = driver.context; -``` - ### 切换至默认的上下文(context) 切换回默认的上下文(context)。(译者注:一般就是原生上下文 “NATIVE_APP”) @@ -615,21 +465,11 @@ driver.context(); driver.context() ``` -```php -// php -$this->context(NULL); -``` - ```csharp // c# driver.SetContext(); ``` -```objectivec -// objective c -[driver setContext:nil]; -``` - ### 应用的字符串 获得应用的字符串。(译者注:这里实际指的是返回应用的多语言文本,即每个 string 变量及在指定语言上的显示内容。例如 `{"action_forgot_password":"Forgot your password?"}` 。在 android 上对应的是项目中的 `strings.xml` 多语言配置文件) @@ -654,23 +494,11 @@ driver.getAppStrings(); driver.getAppStrings().then(function (appStrings) { /*...*/ }) ``` -```php -// php -$this->appStrings(); -$this->appStrings('ru'); -``` - ```csharp // c# driver.GetAppStrings(); ``` -```objectivec -// objective c -[driver appStrings]; -[driver appStringsForLanguage:"@ru"]; -``` - ### 按键事件 给设备发送按键事件。 @@ -695,22 +523,11 @@ driver.sendKeyEvent(AndroidKeyCode.HOME); driver.deviceKeyEvent(wd.SPECIAL_KEYS.Home) ``` -```php -// php -$this->keyEvent('176'); -``` - ```csharp // c# driver.KeyEvent("176"); ``` -```objectivec -// objective c -NSError *err; -[driver triggerKeyEvent:176 metastate:0 error:&err]; -``` - ### 当前 Activity 获取当前的 Acticity。仅支持 Android。 @@ -735,22 +552,11 @@ driver.currentActivity(); driver.getCurrentActivity().then(function (activity) { /*...*/ }) ``` -```php -// php -$this->currentActivity(); -``` - ```csharp // c# driver.GetCurrentActivity(); ``` -```objectivec -// objective c -NSError *err; -[driver currentActivity]; -``` - ### 当前包名(package) 获取当前包名(package)。仅支持 Android 。 @@ -775,17 +581,11 @@ driver.getCurrentPackage(); driver.getCurrentPackage().then(function (package) { /*...*/ }) ``` -```php -// php -$this->currentPackage(); -``` - ```csharp // c# driver.GetCurrentPackage(); ``` - ### 点击操作 / 多点触控操作 用于生成点击操作的 API。这部分文档的内容将会很快被补充进来。 @@ -821,33 +621,6 @@ action return action.perform(); // returns a promise ``` -```php -// php -$action = $this->initiateTouchAction(); - ->press(array('element' => $el)) - ->release() - ->perform(); - -$action1 = $this->initiateTouchAction(); -$action1->press(array('element' => $els[0])) - ->moveTo(array('x' => 10, 'y' => 0)) - ->moveTo(array('x' => 10, 'y' => -75)) - ->moveTo(array('x' => 10, 'y' => -600)) - ->release(); - -$action2 = $this->initiateTouchAction(); -$action2->press(array('element' => $els[1])) - ->moveTo(array('x' => 10, 'y' => 10)) - ->moveTo(array('x' => 10, 'y' => -300)) - ->moveTo(array('x' => 10, 'y' => -600)) - ->release(); - -$multiAction = $this->initiateMultiAction(); -$multiAction->add($action1); -$multiAction->add($action2); -$multiAction->perform(); -``` - ```csharp // c# ITouchAction action = new TouchAction(driver); @@ -891,11 +664,6 @@ return driver.swipe({ startX: 75, startY: 500, endX: 75, endY: 0, duration: 800 }); ``` -```php -// php -$this->swipe(75, 500, 75, 0, 800); -``` - ```csharp // c# todo: c# @@ -952,10 +720,6 @@ return driver.pinch(el); return el.pinch(); ``` -```php -$this->pinch($el); -``` - ```csharp // c# driver.Pinch(25, 25) @@ -1012,11 +776,6 @@ return driver.zoom(el); return el.zoom(); ``` -```php -// php -$this->zoom($el); -``` - ```csharp // c# driver.Zoom(100, 200); @@ -1054,12 +813,6 @@ return driver.elementByAccessibilityId().then(function (el) { }); ``` -```php -// php -$els = $this->elements($this->using('class name')->value('android.widget.TextView')); -$this->scroll($els[count($els) - 1], $els[0]); -``` - ```csharp // c# Dictionary scrollObject = new Dictionary(); @@ -1093,11 +846,6 @@ driver.pullFile("Library/AddressBook/AddressBook.sqlitedb") .then(function (base64File) { /*...*/ }) ``` -```php -// php -$this->pullFile('Library/AddressBook/AddressBook.sqlitedb'); -``` - ```csharp // c# driver.PullFile("Library/AddressBook/AddressBook.sqlitedb"); @@ -1133,13 +881,6 @@ driver.pushFile(path, data) driver.pushFile(path, data) ``` -```php -// php -$path = 'data/local/tmp/test_push_file.txt'; -$data = 'This is the contents of the file to push to the device.'; -$this->pushFile($path, base64_encode($data)); -``` - ```csharp // c# driver.PushFile("/data/local/tmp/file.txt", "some data for the file"); @@ -1175,12 +916,6 @@ var settings = driver.settings(); browser.updateSettings({'someSetting': true}); ``` -```php -// php -$settings = $this->getSettings(); -$this->updateSettings(array('cyberdelia' => "open")); -``` - ```csharp // c# Dictionarysettings = driver.GetSettings(); diff --git a/docs/cn/writing-running-appium/running-tests.md b/docs/cn/writing-running-appium/running-tests.md index 7fb0de2a058..eb49f2f329e 100644 --- a/docs/cn/writing-running-appium/running-tests.md +++ b/docs/cn/writing-running-appium/running-tests.md @@ -22,7 +22,7 @@ 想知道当前要做什么,最好的方法就是是查看示例代码: -[Node.js](https://github.com/appium/appium/tree/master/sample-code/javascript-webdriverio) | [Python](https://github.com/appium/appium/tree/master/sample-code/python) | [PHP](https://github.com/appium/appium/tree/master/sample-code/php) | [Ruby](https://github.com/appium/appium/tree/master/sample-code/ruby) | [Java](https://github.com/appium/appium/tree/master/sample-code/java) +[Node.js](https://github.com/appium/appium/tree/master/sample-code/javascript-webdriverio) | [Python](https://github.com/appium/appium/tree/master/sample-code/python) | [Ruby](https://github.com/appium/appium/tree/master/sample-code/ruby) | [Java](https://github.com/appium/appium/tree/master/sample-code/java) 基本上,首先确认 Appium 正在运行: @@ -50,20 +50,6 @@ } ``` -```php -// php -public static $browsers = array( - array( - 'desiredCapabilities' => array( - 'platformName' => 'iOS', - 'platformVersion' => '7.1', - 'deviceName' => 'iPhone Simulator', - 'app' => $myApp - ) - ) -); -``` - ```java // java DesiredCapabilities capabilities = new DesiredCapabilities(); @@ -142,20 +128,6 @@ Activity 可以通过以下方式指定: } ``` -```php -// php -public static $browsers = array( - array( - 'desiredCapabilities' => array( - 'platformName' => 'Android', - 'platformVersion' => '4.4', - 'deviceName' => 'Android Emulator', - 'app' => $myApp - ) - ) -); -``` - ```java // java DesiredCapabilities capabilities = new DesiredCapabilities(); @@ -205,23 +177,6 @@ Android 设备在 4.3 版本(API 级别 17)之前没有安装谷歌的 [UiA } ``` -```php -// php -public static $browsers = array( - array( - 'desiredCapabilities' => array( - 'automationName' => 'Selendroid', - 'platformName' => 'Android', - 'platformVersion' => '2.3', - 'deviceName' => 'Android Emulator', - 'app' => $myApp, - 'appPackage' => 'com.mycompany.package', - 'appActivity'=> '.MainActivity' - ) - ) -); -``` - ```java // java DesiredCapabilities capabilities = new DesiredCapabilities(); diff --git a/docs/en/about-appium/appium-clients.md b/docs/en/about-appium/appium-clients.md index 39d7271526a..b7bf8c094e4 100644 --- a/docs/en/about-appium/appium-clients.md +++ b/docs/en/about-appium/appium-clients.md @@ -6,15 +6,22 @@ Appium client libraries implement the [Mobile JSON Wire Protocol](https://github The Appium server itself defines custom extensions to the official protocols, giving Appium users helpful access to various device behaviors (such as installing/uninstalling apps during the course of a test session). This is why we need Appium-specific clients, not just the 'vanilla' Selenium clients. Of course, Appium client libraries only **add** functionality (in fact, they simply extend the standard Selenium clients), so they can still be used to run regular Selenium sessions. +### Appium repository + Language/Framework | Github Repo and Installation Instructions | ----- | ----- | Ruby | [https://github.com/appium/ruby_lib](https://github.com/appium/ruby_lib), [https://github.com/appium/ruby_lib_core](https://github.com/appium/ruby_lib_core) Python | [https://github.com/appium/python-client](https://github.com/appium/python-client) Java | [https://github.com/appium/java-client](https://github.com/appium/java-client) -JavaScript (Node.js) | [https://github.com/admc/wd](https://github.com/admc/wd) +C# (.NET) | [https://github.com/appium/appium-dotnet-driver](https://github.com/appium/appium-dotnet-driver) + +### Community based + +Language/Framework | Github Repo and Installation Instructions | +----- | ----- | +[Deprecated] JavaScript (Node.js) | [https://github.com/admc/wd](https://github.com/admc/wd) JavaScript (Node.js) | [https://github.com/webdriverio/webdriverio](https://github.com/webdriverio/webdriverio) JavaScript (Browser) | [https://github.com/projectxyzio/web2driver](https://github.com/projectxyzio/web2driver) -Objective C | [https://github.com/appium/selenium-objective-c](https://github.com/appium/selenium-objective-c) -PHP | [https://github.com/appium/php-client](https://github.com/appium/php-client) -C# (.NET) | [https://github.com/appium/appium-dotnet-driver](https://github.com/appium/appium-dotnet-driver) RobotFramework | [https://github.com/serhatbolsu/robotframework-appiumlibrary](https://github.com/serhatbolsu/robotframework-appiumlibrary) + +W3C WebDriver protocol compatible clients also work. diff --git a/docs/en/about-appium/getting-started.md b/docs/en/about-appium/getting-started.md index 1698fd344fd..820f5c1aa76 100644 --- a/docs/en/about-appium/getting-started.md +++ b/docs/en/about-appium/getting-started.md @@ -209,7 +209,7 @@ simply type into a text field and check that the correct text was entered: const field = await client.$("android.widget.EditText"); await field.setValue("Hello World!"); const value = await field.getText(); -assert.equal(value, "Hello World!"); +assert.strictEqual(value, "Hello World!"); ``` What's going on here is that after creating a session and launching our app, @@ -245,7 +245,7 @@ async function main () { const field = await client.$("android.widget.EditText"); await field.setValue("Hello World!"); const value = await field.getText(); - assert.equal(value,"Hello World!"); + assert.strictEqual(value,"Hello World!"); await client.deleteSession(); } diff --git a/docs/en/about-appium/intro.md b/docs/en/about-appium/intro.md index 42da9cf3a06..eadcc402639 100644 --- a/docs/en/about-appium/intro.md +++ b/docs/en/about-appium/intro.md @@ -7,8 +7,8 @@ applications on iOS mobile, Android mobile, and Windows desktop platforms. supports Safari on iOS and Chrome or the built-in 'Browser' app on Android). **Hybrid apps** have a wrapper around a "webview" -- a native control that enables interaction with web content. Projects like [Apache Cordova](https://cordova.apache.org) -or [Phonegap](http://phonegap.com/) make it easy to build apps using web -technologies that are then bundled into a native wrapper, creating a hybrid app. +make it easy to build apps using web technologies that are then bundled +into a native wrapper, creating a hybrid app. Importantly, Appium is "cross-platform": it allows you to write tests against multiple platforms (iOS, Android, Windows), using the same API. This enables diff --git a/docs/en/about-appium/platform-support.md b/docs/en/about-appium/platform-support.md index 99dea8901d7..36cea852bdd 100644 --- a/docs/en/about-appium/platform-support.md +++ b/docs/en/about-appium/platform-support.md @@ -2,33 +2,35 @@ Appium supports a variety of platforms and testing modalities (native, hybrid, web, real devices, simulators, etc...). This document is designed to -make explicit the level of support and requirements for each of these. +make explicit the level of support and requirements for each of these, +or guide each driver to proper page. + +## Appium team support + +This section lists drivers that are supported by Appium team. ### iOS Support iOS automation is supported with two drivers: -* The [XCUITest Driver](/docs/en/drivers/ios-xcuitest.md) -* The (deprecated) [UIAutomation Driver](/docs/en/drivers/ios-uiautomation.md) +- The [XCUITest Driver](/docs/en/drivers/ios-xcuitest.md) +- The (deprecated) [UIAutomation Driver](/docs/en/drivers/ios-uiautomation.md) +- The [safaridriver](/docs/en/drivers/safari.md) for Apple's [safaridriver](https://developer.apple.com/documentation/webkit/testing_with_webdriver_in_safari?language=objc) Please refer to these driver docs for setup instructions. -* Versions: 9.0 and up (as a rule, Appium supports the latest two iOS versions) -* Devices: Simulator and real device for iPhone, iPad and tvOS -* Native app support: Yes, with debug version of .app (simulator), +- Versions: 12.2 and up (as a rule, Appium supports the latest two iOS versions) +- Devices: Simulator and real device for iPhone, iPad and tvOS +- Native app support: Yes, with debug version of .app (simulator), or correctly-signed .ipa (real devices). Underlying support is provided by Apple's [XCUITest](https://developer.apple.com/reference/xctest) (or [UIAutomation](https://web.archive.org/web/20160904214108/https://developer.apple.com/library/ios/documentation/DeveloperTools/Reference/UIAutomationRef/) for older versions) framework. -* Mobile web support: Yes, via automation of mobile Safari. For real devices, - `ios-webkit-remote-debugger` is required, and automation of native aspects of - the Safari interface is not possible. See the [mobile web doc](/docs/en/writing-running-appium/web/mobile-web.md) for instructions. -* Hybrid support: Yes. For real devices, ios-webkit-remote-debugger is - required. See the [hybrid doc](/docs/en/writing-running-appium/web/hybrid.md) for instructions. -* Support for automating multiple apps in one session: No -* Support for automating multiple devices simultaneously: No -* Support for automating vendor-provided or third-party apps: Only - vendor-provided apps (Preferences, Maps, etc...), and only on the simulator. For iOS 10+, you can automate the home screen as well. -* Support for automating custom, non-standard UI controls: Minimal. You need to +- Mobile web support: Yes, via automation of mobile Safari. See the [mobile web doc](/docs/en/writing-running-appium/web/mobile-web.md) for instructions. +- Hybrid support: Yes. See the [hybrid doc](/docs/en/writing-running-appium/web/hybrid.md) for instructions. +- Support for automating multiple apps in one session: No +- Support for automating multiple devices simultaneously: Yes +- Support for automating vendor-provided or third-party apps: Yes, apps which are already installed on the device +- Support for automating custom, non-standard UI controls: Minimal. You need to set accessibility information on the control which enables some basic automation. @@ -36,33 +38,65 @@ Please refer to these driver docs for setup instructions. Android automation is supported with two drivers: -* The [UiAutomator2 Driver](/docs/en/drivers/android-uiautomator2.md) -* The (deprecated) [UiAutomator Driver](/docs/en/drivers/android-uiautomator.md) +- The [UiAutomator2 Driver](/docs/en/drivers/android-uiautomator2.md) +- The [Espresso Driver](/docs/en/drivers/android-espresso.md) +- The (deprecated) [UiAutomator Driver](/docs/en/drivers/android-uiautomator.md) +- The [geckodriver](/docs/en/drivers/gecko.md) for Firefox and [GeckoView](https://wiki.mozilla.org/Mobile/GeckoView) Please refer to these driver docs for setup instructions. -* Versions: 4.3 and up - * Versions 4.3 and up are supported via Appium's [UiAutomator and UiAutomator2](http://developer.android.com/tools/testing-support-library/index.html#UIAutomator) - libraries. UiAutomator is the default driver. -* Devices: Android emulators and real Android devices -* Native app support: Yes -* Mobile web support: Yes. Automation +- Versions: 4.3 and up + - Versions 4.3 and up are supported via Appium's [UiAutomator and UiAutomator2](http://developer.android.com/tools/testing-support-library/index.html#UIAutomator) + libraries. UiAutomator is the default driver. +- Devices: Android emulators and real Android devices +- Native app support: Yes +- Mobile web support: Yes. Automation is effected using a bundled [Chromedriver](http://chromedriver.chromium.org) server as a proxy. With 4.3, automation works on official Chrome browser or Chromium only. With 4.4+, automation also works on the built-in "Browser" app. Chrome/Chromium/Browser must already be installed on the device under test. See the [mobile web doc](/docs/en/writing-running-appium/web/mobile-web.md) for instructions. -* Hybrid support: Yes. See the [hybrid doc](/docs/en/writing-running-appium/web/hybrid.md) for instructions. - * With default Appium automation backend: versions 4.4 and up -* Support for automating multiple apps in one session: Yes -* Support for automating multiple devices simultaneously: Yes, +- Hybrid support: Yes. See the [hybrid doc](/docs/en/writing-running-appium/web/hybrid.md) for instructions. + - With default Appium automation backend: versions 4.4 and up +- Support for automating multiple apps in one session: Yes +- Support for automating multiple devices simultaneously: Yes, though Appium must be started using different ports for the server - parameters `--port`, `--bootstrap-port` and/or + parameters `--port`, `--bootstrap-port` and/or `--chromedriver-port`. See the [server args doc](/docs/en/writing-running-appium/server-args.md) for more information on these parameters. -* Support for automating vendor-provided or third-party apps: Yes -* Support for automating custom, non-standard UI controls: No +- Support for automating vendor-provided or third-party apps: Yes +- Support for automating custom, non-standard UI controls: No + +### macOS Support + +macOS automation is supported with below drivers. + +- The [Mac2Driver](/docs/en/drivers/mac2.md) is for macOS 10.15 or later +- The (deprecated) [MacDriver](/docs/en/drivers/mac.md) is for lower macOS versions ### Windows Desktop Support -See the [Windows Driver](/docs/en/drivers/windows.md) doc for details +Windows automation is supported with below drivers. + +- The [WinAppDriver](/docs/en/drivers/windows.md) +- The [geckodriver](/docs/en/drivers/gecko.md) for Firefox and [GeckoView](https://wiki.mozilla.org/Mobile/GeckoView) + +## Vendors/Community based drivers + +This section lists drivers that are supported by vendors and community. + +### You.i Engine Support + +- The [You.i Engine](https://github.com/YOU-i-Labs/appium-youiengine-driver) + +### Flutter Support + +- The [Flutter Driver](https://github.com/truongsinh/appium-flutter-driver) + +### Roku Support + +- The [Roku Driver](https://github.com/sharkyStudy/appium-roku-driver) + +### WebOS Support + +- The [WebOS Driver](https://github.com/sharkyStudy/appium-webos-driver) diff --git a/docs/en/advanced-concepts/grid.md b/docs/en/advanced-concepts/grid.md index 5e0cce1cce3..819463baf2b 100644 --- a/docs/en/advanced-concepts/grid.md +++ b/docs/en/advanced-concepts/grid.md @@ -1,6 +1,12 @@ -## Selenium Grid +## Selenium Grid 4 -You are able to register your appium server with a local [Selenium grid](https://github.com/SeleniumHQ/selenium/wiki/Grid2) ([setup docs](https://www.selenium.dev/documentation/en/grid/grid_3/setting_up_your_own_grid/)) by using the +`Relay` feature in Grid 4 allows you to proxy Appium requests to an appium server instance. + +Please check [Relaying commands to a service endpoint that supports WebDriver](https://www.selenium.dev/documentation/grid/configuration/toml_options/#relaying-commands-to-a-service-endpoint-that-supports-webdriver) and [Selenium Grid 4 and Appium together in harmony](https://www.youtube.com/watch?v=3_aP2rsqZD0) about the configuration and for more details. + +## Selenium Grid 3 + +You are able to register your appium server with a local [Selenium grid](https://github.com/SeleniumHQ/selenium/wiki/Grid2) ([setup docs](https://www.selenium.dev/documentation/legacy/grid_3/setting_up_your_own_grid/)) by using the `--nodeconfig` server parameter. ```center diff --git a/docs/en/advanced-concepts/image-elements.md b/docs/en/advanced-concepts/image-elements.md index 3896583448f..de74ddbb0a4 100644 --- a/docs/en/advanced-concepts/image-elements.md +++ b/docs/en/advanced-concepts/image-elements.md @@ -43,6 +43,7 @@ To access these settings, you should use the Appium [Settings API](/docs/en/adva |autoUpdateImageElementPosition|It can happen that a matched image changes position in between the time it is found and the time you tap on it. As with the previous setting, Appium can automatically adjust its position if it determines in a re-match that the position changed.|`true` or `false`|`false`| |imageElementTapStrategy|In order to tap on a found image element, Appium has to use one of its touch action strategies. The available strategies are the W3C Actions API, or the older MJSONWP TouchActions API. Stick to the default unless the driver you are using does not support the W3C Actions API for some reason.|`"w3cActions"` or `"touchActions"`|`"w3cActions"`| |getMatchedImageResult| Appium does not store the matched image result. Although, storing the result in memory might help for debugging whether which area is matched by find by image. Appium returns the image against [attribute](http://appium.io/docs/en/commands/element/attributes/attribute/) API as `visual`. | `true` or `false` | `false` | +|imageMatchMethod| The name of the template matching method for _find element by image_ since Appium 1.22.0. Please read [py_template_matching](https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_template_matching/py_template_matching.html) for more details about the meaning of each value. | `TM_CCOEFF`, `TM_CCOEFF_NORMED`, `TM_CCORR`, `TM_CCORR_NORMED`, `TM_SQDIFF`, `TM_SQDIFF_NORMED` | `TM_CCOEFF_NORMED` | Note that each language-specific Appium client may make these settings available via special constants which could differ slightly from the exact setting names mentioned above. diff --git a/docs/en/advanced-concepts/migrating-to-xcuitest.md b/docs/en/advanced-concepts/migrating-to-xcuitest.md index e3fe70098af..8f7add4df02 100644 --- a/docs/en/advanced-concepts/migrating-to-xcuitest.md +++ b/docs/en/advanced-concepts/migrating-to-xcuitest.md @@ -76,10 +76,6 @@ driver.findElement(z) where x and y are non-xpath locators and z is a xpath locator). -### System dependencies - -In addition to the many gotchas that might come with upgrading any XCode installation (unrelated to Appium), Appium's XCUITest support requires a new system dependency: [Carthage](https://github.com/Carthage/Carthage). Appium Doctor has now been updated to ensure that the `carthage` binary is on your path. - ### API differences Unfortunately, the XCUITest API and the UIAutomation API are not equivalent. In many cases (like with `tap/click`), the behavior is identical. But some features that were available in the UIAutomation backend are not yet available in the new XCUITest backend. These known lacking features include: diff --git a/docs/en/advanced-concepts/parallel-tests.md b/docs/en/advanced-concepts/parallel-tests.md index afc1bf4c206..490b3e97b6b 100644 --- a/docs/en/advanced-concepts/parallel-tests.md +++ b/docs/en/advanced-concepts/parallel-tests.md @@ -10,6 +10,7 @@ The important capabilities: - `chromedriverPort` the chromedriver port (if using webviews or chrome) - `mjpegServerPort` If you are using [appium-uiautomator2-driver](https://github.com/appium/appium-uiautomator2-driver), set a unique MJPEG server port for each parallel session. Otherwise you might get a port conflict such as in [this issue](https://github.com/appium/appium/issues/7745). - `systemPort` If you are using [appium-uiautomator2-driver](https://github.com/appium/appium-uiautomator2-driver), set a unique system port for each parallel session. Otherwise you might get a port conflict such as in [this issue](https://github.com/appium/appium/issues/7745). +- `chromedriverPort` If you are using [appium-chromedriver](https://github.com/appium/appium-chromedriver), set a unique ChromeDriver port for each parallel session. Otherwise, you might get a port conflict with the error message `Address already in use (48)` in the ChromeDriver log. ### Parallel iOS Tests diff --git a/docs/en/advanced-concepts/settings.md b/docs/en/advanced-concepts/settings.md index aa62b41244c..433036f2ee7 100644 --- a/docs/en/advanced-concepts/settings.md +++ b/docs/en/advanced-concepts/settings.md @@ -1,6 +1,6 @@ ## Settings -Settings are a new concept introduced by appium. They are currently not a part of the Mobile JSON Wire Protocol, or the Webdriver spec. +Settings are a new concept introduced by Appium. They are currently not a part of the Mobile JSON Wire Protocol, or the Webdriver spec. Settings are a way to specify the behavior of the appium server. @@ -48,62 +48,14 @@ Settings are implemented via the following API endpoints: [Image Elements](https://github.com/appium/appium/blob/master/docs/en/advanced-concepts/image-elements.md) also has image elements specific settings. -### Android Only +### UiAutomator2 -|Name|Description|Values| -|----|----|----| -| `ignoreUnimportantViews` | Controls whether the Android device should use `setCompressedLayoutHeirarchy()` which ignores all views which are marked IMPORTANT_FOR_ACCESSIBILITY_NO or IMPORTANT_FOR_ACCESSIBILITY_AUTO (and have been deemed not important by the system), in an attempt to make things less confusing or faster. Defaults to `false`. | `false` or `true` | +Please refer to the documentation on the [UiAutomator2 Driver repository](https://github.com/appium/appium-uiautomator2-driver#settings-api) -#### UiAutomator2 +### XCUITest -|Name|Description|Values| -|----|----|----| -| `actionAcknowledgmentTimeout` | Same as: [setActionAcknowledgmentTimeout](https://developer.android.com/reference/android/support/test/uiautomator/Configurator.html#setActionAcknowledgmentTimeout(long)). If a negative value is given, it would set to default (3 * 1000 milliseconds). Handled by [UiAutomator Configurator](https://developer.android.com/reference/android/support/test/uiautomator/Configurator.html) in Android API 18 and above. | e.g., `5000` | -| `allowInvisibleElements` | Controls whether the Android device should show all elements, visible and invisible. Defaults to `false`. | `false` or `true` | -| `enableMultiWindows` | If enabled then the page source and xpath lookup will include all windows available to the accessibility rather than the active one only. It might help to resolve finding elements on windows like `android.widget.PopupWindow`. Defaults to `false` and returns an active root window. Read [appium-uiautomator2-server#301](https://github.com/appium/appium-uiautomator2-server/pull/301) for more details. | `true` or `false` | -| `enableNotificationListener` | Controls whether the Android device should enable or disable the `NotificationListener`. Defaults to `true`. | `false` or `true` | -| `keyInjectionDelay` | Same as: [setKeyInjectionDelay](https://developer.android.com/reference/android/support/test/uiautomator/Configurator.html#setKeyInjectionDelay(long)). If a negative value is given, it would set to default (0 milliseconds). Handled by [UiAutomator Configurator](https://developer.android.com/reference/android/support/test/uiautomator/Configurator.html) in Android API 18 and above. | e.g., `5000` | -| `mjpegBilinearFiltering` | Controls whether or not to apply bilinear filtering to source screenshot resize algorithm. Enabling this flag may improve the quality of the resulting scaled bitmap, but will introduce a [small] performance hit. Defaults to `false`. | `false` or `true` | -| `mjpegScalingFactor` | Controls the scaling factor of streamed screenshots. 100 means no scaling is applied (e.g. 100% of the original size). The bigger image size is the more CPU performance is needed to encode it. Integer values between `1` and `100` are available. Defaults to `50`. | `1` to `100` | -| `mjpegServerFramerate` | Controls the framerate of streamed screenshots. Greater framerate values create greater CPU load. That actual maximum framerate value is limited by the performance of the device under test. Integer values between `1` and `60` are available. Defaults to `10`. | `1` to `60` | -| `mjpegServerPort` | Controls the MJPEG server port. Integer values between `1024` and `65535` are available. Defaults to `7810`. | `1024` to `65535` | -| `mjpegServerScreenshotQuality` | Controls the quality of streamed screenshots. Where the best quality is 100 and the worst is 1. The greater the value is the more CPU time is needed to encode a single bitmap into JPEG format. Usually a value between 25 and 90 is fine for this setting. Greater values affect performance too much without visible quality improvements and lower ones introduce visible distortions into the resulting image. Integer values between `1` and `100` are available. Defaults to `50`. | `1` to `100` | -| `normalizeTagNames` | Translate all class names used as XML tags to the limited set of ASCII characters supported by Apache Harmony library. Used by default in Android to avoid possible XML parsing exceptions caused by XPath lookup. The translation is based on [junidecode](https://github.com/gcardone/junidecode). This prevents [this error case](https://github.com/appium/appium/issues/11854). Defaults to `false`. | `false` or `true` | -| `scrollAcknowledgmentTimeout` | Same as: [setScrollAcknowledgmentTimeout](https://developer.android.com/reference/android/support/test/uiautomator/Configurator.html#setScrollAcknowledgmentTimeout(long)). If a negative value is given, it would set to default (200 milliseconds). Handled by [UiAutomator Configurator](https://developer.android.com/reference/android/support/test/uiautomator/Configurator.html) in Android API 18 and above. | e.g. `300` | -| `serverPort` | Controls the server port. Integer values between `1024` and `65535` are available. Defaults to `6790`. | `1024` to `65535` | -| `shutdownOnPowerDisconnect` | Shutdown the server through the broadcast receiver on [ACTION_POWER_DISCONNECTED](https://developer.android.com/reference/android/content/Intent.html#ACTION_POWER_DISCONNECTED). Defaults to `true`. | `false` or `true` | -| `simpleBoundsCalculation` | If enabled then the `bounds` attribute will be calculated using a less accurate but simpler method that may improve performance. First available in Appium 1.18.0. Defaults to `false`. | `false` or `true` | -| `trackScrollEvents` | Controls the tracking of scroll events as they happen. If `true`, a field, `lastScrollData`, is added to the results of `getSession`, which can then be used to check on scroll progress. Turning this feature off significantly increases touch action performance. Defaults to `true`. | `false` or `true` | -| `waitForIdleTimeout` | Same as: [setWaitForIdleTimeout](https://developer.android.com/reference/android/support/test/uiautomator/Configurator.html#setWaitForIdleTimeout(long)). If a negative value is given, it would set to default (10 * 1000 milliseconds). Handled by [UiAutomator Configurator](https://developer.android.com/reference/android/support/test/uiautomator/Configurator.html) in Android API 18 and above. | e.g. `10000` | -| `waitForSelectorTimeout` | Same as: [setWaitForSelectorTimeout](https://developer.android.com/reference/android/support/test/uiautomator/Configurator.html#setWaitForSelectorTimeout(long)). If a negative value is given, it would set to default (10 * 1000 milliseconds). Handled by [UiAutomator Configurator](https://developer.android.com/reference/android/support/test/uiautomator/Configurator.html) in Android API 18 and above. | e.g. `10000` | -| `wakeLockTimeout` | Controls the timeout of the acquired wake lock. The lock is acquired on server startup and is held until the UIAutomator2 server is killed or the timeout expires. Setting this value to zero or a negative number will release the lock immediately if it is held. Defaults to '24 * 60 * 60 * 1000' milliseconds. | e.g. `0`, `60000` (1 min) | -|`useResourcesForOrientationDetection`| Whether to use application resource properties to figure out the current device orientation. By default the orientation value is based on the current rotation, which might be incorrect for some particular device types (usually tablets). `false` by default. Available since Appium 1.19.1 | e.g. `true` | - -### iOS Only - -#### XCUITest - -|Name|Description|Values|Appium versions| -|----|----|----|----| -|`nativeWebTap`| Enable "real", non-javascript-based web taps in Safari. Default: `false`. Warning: depending on viewport size/ratio; this might not accurately tap an element. | `true`, `false` |1.7.0+| -|`mjpegServerScreenshotQuality`| The quality of the screenshots generated by the screenshots broadcaster, expressed as a value from `0` to `100`. The value `0` represents the maximum compression (or lowest quality) while the value `100` represents the least compression (or best quality). The default value is `25`. | e.g., `10` |1.10.0+| -|`mjpegServerFramerate`| The framerate at which the background screenshots broadcaster should broadcast screenshots in range `1..60`. The default value is `10` (Frames Per Second). Setting zero value will cause the framerate to be at its maximum possible value. | e.g., `60` |1.10.0+| -|`screenshotQuality`| Changes the quality of phone display screenshots following [xctest/xctimagequality](https://developer.apple.com/documentation/xctest/xctimagequality?language=objc). Default value is `1`. Read `screenshotQuality` in [appium-xcuitest-driver](https://github.com/appium/appium-xcuitest-driver#desired-capabilities) | e.g. `0`, `1`, `2` |1.10.0+| -|`mjpegScalingFactor`| Changes the scale of screenshots. Defaults to `100`, no scaling. Integer between `1` and `100` are available. | e.g. `1`, `50`, `100` |1.12.0+| -|`keyboardAutocorrection`| Changes the 'Auto-Correction' preference in _Keyboards_ setting. Defaults to `false` when WDA starts as xctest. | `true`, `false` |1.14.0+| -|`keyboardPrediction`| Changes the 'Predictive' preference in _Keyboards_ setting. Defaults to `false` when WDA starts as xctest. | `true`, `false` |1.14.0+| -|`customSnapshotTimeout` (`snapshotTimeout` before 1.19.1) | Set how much time is allowed to resolve a single accessibility snapshot with custom attributes. _Snapshots_ are mainly used for page source generation, XML lookup and custom attributes retrieval (these are visibility and accessibility ones). It might be necessary to increase this value if the actual page source is very large and contains hundreds of UI elements. Defaults to 15 seconds. Since Appium 1.19.1 if this timeout expires and no custom snapshot could be made then WDA tries to calculate the missing attributes using its own algorithms, so setting this value to zero might speed up, for example, page source retrieval, but for the cost of some element attribute preciseness. | e.g. `10`, `100` (seconds) |1.15.0+| -|`waitForIdleTimeout`|The amount of time in float seconds to wait until the application under test is idling. XCTest requires the app's main thread to be idling in order to execute any actions on it, so each action, like single click, might take a lot of time in case your app is constantly hogging the main thread. The default value is `10` (seconds). Setting it to zero disables idling checks completely (not recommended).|e.g. `2.5`|1.19.1+| -|`animationCoolOffTimeout`|The amount of time in float seconds to wait until the application under test does not have any active animations. This check is usually applied after each automation action that is supposed to change the state of the application under test, like `click` one, and blocks XCTest until the transition of the tested application to a new state completes or the cool off timeout occurs. The default value is `2` (seconds). Setting it to zero disables animation checks completely.|e.g. `1.5`, `0`|1.19.1+| -|`snapshotMaxDepth`| Changes the value of maximum depth for traversing elements source tree. It may help to prevent out of memory or timeout errors while getting the elements source tree, but it might restrict the depth of source tree. Please consider restricting this value if you observed an error like _Timed out snapshotting com.apple.testmanagerd..._ message or _Cannot get 'xml' source of the current application_ in your Appium log since they are possibly timeout related. A part of elements source tree might be lost if the value was too small. Defaults to `50` | e.g. `100` | 1.17.0+ | -|`useFirstMatch` | Enabling this setting makes single element lookups faster, but there is the known [problem](https://github.com/appium/appium/issues/10101) related to nested elements lookup. Defaults to `false`. |`true`, `false` |1.15.0+| -|`reduceMotion`| Changes the 'reduce motion' preference of accessibility feature. | `true`, `false` |1.15.0+| -|`defaultActiveApplication`| Sets the hint for active application selection. This helps WebDriverAgent to select the current application if there are multiple items in the active applications list and the desired one is also one of them. The setting is particularly useful for split-screen apps automation. Defaults to `auto`, which makes WebDriverAgent to select the application whose element is located at `screenPoint` location or a single item from the active apps list if the length of this list is equal to one. | e.g., `com.apple.Preferences` |1.15.0+| -|`activeAppDetectionPoint`| Defines the coordinates of the current screen point. WebDriverAgent uses this point to detect the active application if multiple application are active on the screen. The format of this value is `x,y`, where x and y are float or integer numbers representing valid screen coordinates. Setting this value to a point outside the actual screen coordinates might corrupt WebDriverAgent functionality. By default the screen point coordinates equal to 20% of the minimum screen dimension each, e.g. `MIN(w, h) * 0.2, MIN(w, h) * 0.2` | e.g. `100,300` |1.15.0+| -| `includeNonModalElements` | Whether returns all of elements including no modal dialogs on iOS 13+. It fixes [cannot find elements on nested modal presentations](https://github.com/appium/appium/issues/13227), but it might make visibility attributes unreliable. You could also enable `shouldUseTestManagerForVisibilityDetection` setting (defaults to `false`) or `simpleIsVisibleCheck` capability to improve the visibility detection. This issue may happen between iOS 13.0 to 13.2 (and Xcode 11.0 to 11.2). The query issued in `includeNonModalElements` returns `nil` with newer iOS/Xcode versions and Appium/WDA return proper elements three without this setting being used. Defaults to `false`. | `true`, `false` |1.15.0+| -| `acceptAlertButtonSelector` | Allows to customize accept alert button selector. It helps you to handle an arbitrary element as accept button in `accept alert` command. The selector should be a valid [class chain](https://github.com/facebookarchive/WebDriverAgent/wiki/Class-Chain-Queries-Construction-Rules) expression, where the search root is the alert element itself. The default button location algorithm is used if the provided selector is wrong or does not match any element. | e.g., **/XCUIElementTypeButton[\`label CONTAINS[c] 'accept'\`] | 1.16.0+ | -| `dismissAlertButtonSelector` | Allows to customize dismiss alert button selector. It helps you to handle an arbitrary element as dismiss button in `dismiss alert` command. The selector should be a valid [class chain](https://github.com/facebookarchive/WebDriverAgent/wiki/Class-Chain-Queries-Construction-Rules) expression, where the search root is the alert element itself. The default button location algorithm is used if the provided selector is wrong or does not match any element. | e.g., **/XCUIElementTypeButton[\`label CONTAINS[c] 'dismiss'\`] | 1.16.0+ | -| `screenshotOrientation` | Adjust screenshot orientation for iOS. Appium tries to return a screenshot and adjust its orientation properly using internal heuristics, but sometimes it does not work, especially in landscape mode. The actual screenshot orientation depends on various factors such as OS versions, model versions and whether this is a real or simulator device. This option allows you to enforce the given image orientation. Defaults to `auto`.| `auto`, `portrait`, `portraitUpsideDown`, `landscapeRight`, `landscapeLeft` | 1.17.0+ | -| `boundElementsByIndex` | Whether to look up elements with [`allElementsBoundByAccessibilityElement`](https://developer.apple.com/documentation/xctest/xcuielementquery/1500816-allelementsboundbyaccessibilitye) (default) or [`allElementsBoundByIndex`](https://developer.apple.com/documentation/xctest/xcuielementquery/1500945-allelementsboundbyindex). [This Stack Overflow topic](https://stackoverflow.com/questions/49307513/meaning-of-allelementsboundbyaccessibilityelement) explains the differences. Defaults to `false` | `true`, `false` | 1.18.0+ | +Please refer to the documentation on the [XCUITest Driver repository](https://github.com/appium/appium-xcuitest-driver#settings-api) +### Mac2 +Please refer to the documentation on the [Mac2Driver repository](https://github.com/appium/appium-mac2-driver#settings-api) diff --git a/docs/en/advanced-concepts/wda-custom-server.md b/docs/en/advanced-concepts/wda-custom-server.md index 7f22e9f920d..52947925d15 100644 --- a/docs/en/advanced-concepts/wda-custom-server.md +++ b/docs/en/advanced-concepts/wda-custom-server.md @@ -20,8 +20,6 @@ Important points: WebDriverAgent source is automatically downloaded with Appium. The usual folder location in case Appium is installed via npm tool (`npm install -g appium`) is `/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent` -If this was a fresh install then it is also necessary to download third-party dependencies -(_carthage_ tool is mandatory for this purpose: `brew install carthage`): ```bash cd /usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent @@ -57,15 +55,13 @@ so you'll see the icon of WebDriverAgentRunner application on the springboard. WebDriverAgent application acts as a REST server, which proxies external API requests to native XCTest calls for your application under test. The server address will be _localhost_ if you run your tests on Simulator -or the actual phone IP address in case of real device. -We use [appium-ios-device](https://github.com/appium/appium-ios-device) to route network requests +or the actual phone IP address in case of real device. Appium uses [appium-ios-device](https://github.com/appium/appium-ios-device) to route network requests to a real device from _localhost_ via USB, which means one can use this tool to unify WDA network address for Simulator and for real device. You can use [appium-ios-device](https://github.com/appium/appium-ios-device) to connect to a remote device requiring the module from your JavaScript code as same as Appium. -Alternatively, you can also use _iproxy_ to handle WebDriverAgent outside Appium. -It is available via `node install -g iproxy`. +Alternatively, you can also use [iproxy](https://github.com/libimobiledevice/libusbmuxd#iproxy), [go-ios](https://github.com/danielpaulus/go-ios) or [tidevice](https://github.com/alibaba/taobao-iphone-device) to handle WebDriverAgent process outside Appium. For instance, `iproxy` could be installed using npm: `npm install -g iproxy`. This helper class written in Java illustrates the main implementation details wit _iproxy_: diff --git a/docs/en/commands/context/get-context.md b/docs/en/commands/context/get-context.md index d61b0abb2a1..66d9978da1d 100644 --- a/docs/en/commands/context/get-context.md +++ b/docs/en/commands/context/get-context.md @@ -38,12 +38,6 @@ context = current_context context = @driver.current_context ``` -```php -# PHP -$context = $driver->context(); - -``` - ```csharp // C# string Context = driver.Context; @@ -89,7 +83,6 @@ For information on contexts, see Appium's [hybrid automation docs](/docs/en/writ |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/doc/api.md) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#current_context-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/context/get-context.yml) diff --git a/docs/en/commands/context/get-contexts.md b/docs/en/commands/context/get-contexts.md index f8a5802f847..ee9686a1574 100644 --- a/docs/en/commands/context/get-contexts.md +++ b/docs/en/commands/context/get-contexts.md @@ -37,12 +37,6 @@ context = @driver.available_contexts ``` -```php -# PHP -$contexts = $driver->contexts(); - -``` - ```csharp // C# List AllContexts = new List(); @@ -57,7 +51,7 @@ List AllContexts = new List(); ## 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. +[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). @@ -88,7 +82,6 @@ For information on contexts, see Appium's [hybrid automation docs](/docs/en/writ |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/doc/api.md) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#available_contexts-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/context/get-contexts.yml) diff --git a/docs/en/commands/context/set-context.md b/docs/en/commands/context/set-context.md index ec57826541e..5e85e406cc9 100644 --- a/docs/en/commands/context/set-context.md +++ b/docs/en/commands/context/set-context.md @@ -55,15 +55,6 @@ webview = @driver.available_contexts[1] ``` -```php -# PHP -$contexts = $driver->contexts(); -$driver->context($contexts[1]); -// ... -$driver->context('NATIVE_APP'); - -``` - ```csharp // C# // Switch to specific webview @@ -118,7 +109,6 @@ For information on contexts, see Appium's [hybrid automation docs](/docs/en/writ |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/doc/api.md) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#set_context-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/context/set-context.yml) diff --git a/docs/en/commands/device/activity/current-activity.md b/docs/en/commands/device/activity/current-activity.md index 859f23b4683..a1e60187ee1 100644 --- a/docs/en/commands/device/activity/current-activity.md +++ b/docs/en/commands/device/activity/current-activity.md @@ -37,12 +37,6 @@ current_activity ``` -```php -# PHP -$activity = $driver->currentActivity(); - -``` - ```csharp // C# string activity = driver.CurrentActivity; @@ -77,7 +71,6 @@ string activity = driver.CurrentActivity; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2519) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#current_activity-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Android/AndroidDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/activity/current-activity.yml) @@ -108,4 +101,4 @@ Name of the current [activity](https://developer.android.com/reference/android/a [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/activity/current-activity.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L429) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L440) diff --git a/docs/en/commands/device/activity/current-package.md b/docs/en/commands/device/activity/current-package.md index 0b92c99c2af..91ce90269fc 100644 --- a/docs/en/commands/device/activity/current-package.md +++ b/docs/en/commands/device/activity/current-package.md @@ -37,12 +37,6 @@ current_package ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# string package = driver.CurrentPackage; @@ -77,7 +71,6 @@ string package = driver.CurrentPackage; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| None | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2526) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#current_package-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Android/AndroidDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/activity/current-package.yml) @@ -108,4 +101,4 @@ Name of the current [package](https://developer.android.com/reference/java/lang/ [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/activity/current-package.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L432) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L443) diff --git a/docs/en/commands/device/activity/start-activity.md b/docs/en/commands/device/activity/start-activity.md index e41e1b2feb9..a738e881a37 100644 --- a/docs/en/commands/device/activity/start-activity.md +++ b/docs/en/commands/device/activity/start-activity.md @@ -40,13 +40,6 @@ start_activity app_package: "com.example", app_activity: "ActivityName" ``` -```php -# PHP -$driver->startActivity(array('appPackage' => 'com.example', - 'appActivity' => 'ActivityName')); - -``` - ```csharp // C# driver.StartActivity("com.example", "ActivityName"); @@ -81,7 +74,6 @@ driver.StartActivity("com.example", "ActivityName"); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2948) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#start_activity-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Android/AndroidDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/activity/start-activity.yml) @@ -121,4 +113,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/activity/start-activity.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L525) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L536) diff --git a/docs/en/commands/device/app/activate-app.md b/docs/en/commands/device/app/activate-app.md index d387148a0a4..b6a3b344f6b 100644 --- a/docs/en/commands/device/app/activate-app.md +++ b/docs/en/commands/device/app/activate-app.md @@ -42,12 +42,6 @@ activate_app('io.appium.android.apis') ``` -```php -# PHP -// Supports only `mobile: queryAppState` for iOS, XCUITest - -``` - ```csharp // C# driver.activateApp('com.apple.Preferences'); @@ -88,7 +82,6 @@ iOS tests with XCUITest can also use the `mobile: activateApp` method. See detai |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#activate_app-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/activate-app.yml) @@ -121,4 +114,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/activate-app.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L445) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L456) diff --git a/docs/en/commands/device/app/app-state.md b/docs/en/commands/device/app/app-state.md index d35e5b847de..823d3ef5c72 100644 --- a/docs/en/commands/device/app/app-state.md +++ b/docs/en/commands/device/app/app-state.md @@ -42,12 +42,6 @@ query_app_state('io.appium.android.apis') # `query_` prefix is also available ``` -```php -# PHP -// Supports only `mobile: queryAppState` for iOS, XCUITest - -``` - ```csharp // C# // Supports only `mobile: queryAppState` for iOS, XCUITest @@ -87,7 +81,6 @@ iOS tests with XCUITest can also use the `mobile: queryAppState` method. See det |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Base/Driver#app_state-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/app-state.yml) @@ -96,7 +89,7 @@ iOS tests with XCUITest can also use the `mobile: queryAppState` method. See det [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/app-state.yml) ### Endpoint -`GET /session/:session_id/appium/device/app_state` +`POST /session/:session_id/appium/device/app_state` [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/app-state.yml) ### URL Parameters @@ -120,4 +113,4 @@ Current the target app status. (Clients wrap the response properly) `0` is not i [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/app-state.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L480) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L491) diff --git a/docs/en/commands/device/app/background-app.md b/docs/en/commands/device/app/background-app.md index c7c9937afd1..2dac2656514 100644 --- a/docs/en/commands/device/app/background-app.md +++ b/docs/en/commands/device/app/background-app.md @@ -37,12 +37,6 @@ background_app(10) ``` -```php -# PHP -$driver->backgroundApp(10); - -``` - ```csharp // C# driver.BackgroundApp(10) @@ -94,7 +88,6 @@ iOS tests with XCUITest can also use the `mobile: terminateApp` method to termin |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2841) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#background_app-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/background-app.yml) @@ -127,4 +120,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/background-app.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L556) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L567) diff --git a/docs/en/commands/device/app/close-app.md b/docs/en/commands/device/app/close-app.md index b5bb40b5ada..1df4262a5e3 100644 --- a/docs/en/commands/device/app/close-app.md +++ b/docs/en/commands/device/app/close-app.md @@ -37,12 +37,6 @@ close_app ``` -```php -# PHP -$driver->closeApp(); - -``` - ```csharp // C# driver.CloseApp(); @@ -77,7 +71,6 @@ driver.CloseApp(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2798) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#close_app-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/close-app.yml) @@ -108,4 +101,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/close-app.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L550) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L561) diff --git a/docs/en/commands/device/app/end-test-coverage.md b/docs/en/commands/device/app/end-test-coverage.md index c5c39f84fa8..49c8b638749 100644 --- a/docs/en/commands/device/app/end-test-coverage.md +++ b/docs/en/commands/device/app/end-test-coverage.md @@ -37,12 +37,6 @@ end_coverage("Intent", "/path") ``` -```php -# PHP -$driver->endTestCoverage('Intent', '/path'); - -``` - ```csharp // C# driver.EndTestCoverage("Intent", "/path"); @@ -77,7 +71,6 @@ driver.EndTestCoverage("Intent", "/path"); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2858) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| None | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#end_coverage-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Android/AndroidDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/end-test-coverage.yml) @@ -111,4 +104,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/end-test-coverage.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L559) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L570) diff --git a/docs/en/commands/device/app/get-app-strings.md b/docs/en/commands/device/app/get-app-strings.md index e25d5afde7b..52db0744777 100644 --- a/docs/en/commands/device/app/get-app-strings.md +++ b/docs/en/commands/device/app/get-app-strings.md @@ -37,12 +37,6 @@ app_strings("en") ``` -```php -# PHP -$strings = $driver->appStrings(); - -``` - ```csharp // C# Dictionary appStrings = driver.GetAppStringDictionary("end", "/path/to/file"); @@ -77,7 +71,6 @@ Dictionary appStrings = driver.GetAppStringDictionary("end", "/p |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2916) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#app_strings-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/get-app-strings.yml) @@ -111,4 +104,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/get-app-strings.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L562) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L573) diff --git a/docs/en/commands/device/app/install-app.md b/docs/en/commands/device/app/install-app.md index c2b6cbab663..43c8a7802a7 100644 --- a/docs/en/commands/device/app/install-app.md +++ b/docs/en/commands/device/app/install-app.md @@ -37,12 +37,6 @@ install_app('/Users/johndoe/path/to/app.apk') ``` -```php -# PHP -$driver->installApp('/Users/johndoe/path/to/app.apk'); - -``` - ```csharp // C# driver.InstallApp("/Users/johndoe/path/to/app.apk") @@ -82,7 +76,6 @@ iOS tests with XCUITest can also use the `mobile: installApp` method. See detail |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2540) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#install_app-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/install-app.yml) @@ -115,4 +108,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/install-app.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L436) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L447) diff --git a/docs/en/commands/device/app/is-app-installed.md b/docs/en/commands/device/app/is-app-installed.md index e4122790b2b..06f85ea8748 100644 --- a/docs/en/commands/device/app/is-app-installed.md +++ b/docs/en/commands/device/app/is-app-installed.md @@ -37,12 +37,6 @@ app_installed?('com.example.AppName') ``` -```php -# PHP -$driver->isAppInstalled('com.example.AppName') - -``` - ```csharp // C# driver.IsAppInstalled("com.example.AppName"); @@ -82,7 +76,6 @@ iOS tests with XCUITest can also use the `mobile: isAppInstalled` method. See de |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2586) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#app_installed%3F-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/is-app-installed.yml) @@ -115,4 +108,4 @@ Return true if installed, false if not (`boolean`) [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/is-app-installed.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L472) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L483) diff --git a/docs/en/commands/device/app/launch-app.md b/docs/en/commands/device/app/launch-app.md index 470705b8966..d652903646e 100644 --- a/docs/en/commands/device/app/launch-app.md +++ b/docs/en/commands/device/app/launch-app.md @@ -37,12 +37,6 @@ launch_app ``` -```php -# PHP -$driver->launchApp(); - -``` - ```csharp // C# driver.LaunchApp(); @@ -83,7 +77,6 @@ iOS tests with XCUITest can also use the `mobile: launchApp` method. See detaile |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2798) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#launch_app-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/launch-app.yml) @@ -114,4 +107,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/launch-app.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L547) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L558) diff --git a/docs/en/commands/device/app/remove-app.md b/docs/en/commands/device/app/remove-app.md index 989794e0561..db92912afb9 100644 --- a/docs/en/commands/device/app/remove-app.md +++ b/docs/en/commands/device/app/remove-app.md @@ -37,12 +37,6 @@ remove_app('com.example.AppName') ``` -```php -# PHP -$driver->removeApp('com.example.AppName'); - -``` - ```csharp // C# driver.RemoveApp("com.example.AppName"); @@ -82,7 +76,6 @@ iOS tests with XCUITest can also use the `mobile: removeApp` method. See detaile |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2563) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#remove_app-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/remove-app.yml) @@ -116,4 +109,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/remove-app.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L454) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L465) diff --git a/docs/en/commands/device/app/reset-app.md b/docs/en/commands/device/app/reset-app.md index 66d6b9a11b2..53385be33e0 100644 --- a/docs/en/commands/device/app/reset-app.md +++ b/docs/en/commands/device/app/reset-app.md @@ -37,12 +37,6 @@ reset ``` -```php -# PHP -$driver->reset(); - -``` - ```csharp // C# driver.ResetApp(); @@ -77,7 +71,6 @@ driver.ResetApp(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2827) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#reset-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/reset-app.yml) @@ -108,4 +101,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/reset-app.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L553) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L564) diff --git a/docs/en/commands/device/app/terminate-app.md b/docs/en/commands/device/app/terminate-app.md index 80edeed1282..b65ab6b1286 100644 --- a/docs/en/commands/device/app/terminate-app.md +++ b/docs/en/commands/device/app/terminate-app.md @@ -42,12 +42,6 @@ terminate_app('io.appium.android.apis') ``` -```php -# PHP -// Supports only `mobile: queryAppState` for iOS, XCUITest - -``` - ```csharp // C# // Supports only `mobile: queryAppState` for iOS, XCUITest @@ -87,7 +81,6 @@ iOS tests with XCUITest can also use the `mobile: terminateApp` method. See deta |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Base/Driver#terminate_app-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/terminate-app.yml) @@ -121,4 +114,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/app/terminate-app.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L463) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L474) diff --git a/docs/en/commands/device/authentication/finger-print.md b/docs/en/commands/device/authentication/finger-print.md index 0e2345f0dac..1cfda446dbe 100644 --- a/docs/en/commands/device/authentication/finger-print.md +++ b/docs/en/commands/device/authentication/finger-print.md @@ -37,12 +37,6 @@ finger_print 1 ``` -```php -# PHP -// PHP Code here - -``` - ```csharp // C# // CSharp Code here @@ -85,7 +79,6 @@ Touch ID by iOS is [here](http://appium.io/docs/en/commands/device/simulator/tou |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/appium/appium-android-driver/blob/d16c7161d92ab6f6c9cec3f22218219ac3659716/lib/commands/actions.js#L260) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device#finger_print-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| None | | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/authentication/finger-print.yml) @@ -118,4 +111,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/authentication/finger-print.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L388) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L399) diff --git a/docs/en/commands/device/clipboard/get-clipboard.md b/docs/en/commands/device/clipboard/get-clipboard.md index 461b09852d6..0899f6957fb 100644 --- a/docs/en/commands/device/clipboard/get-clipboard.md +++ b/docs/en/commands/device/clipboard/get-clipboard.md @@ -39,12 +39,6 @@ get_clipboard ``` -```php -# PHP -// PHP Code here - -``` - ```csharp // C# // CSharp Code here @@ -56,7 +50,8 @@ get_clipboard 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. +(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. Activate App command cannot launch the WebDriverAgent properly on some environments. It depends on XCTest framework by Apple. Then, you should launch the WebDriverAgent using its Springboard's application icon. Follow the example below. +1. Open springboard, `@driver.activate_app 'com.apple.springboard'`. 2. Find the WDA icon with `@driver.find_element :accessibility_id, 'WebDriverAgentRunner-Runner'` (It should be visible on the screen) and click it. 3. Call the get clipboard API. 4. Open the application under test with the [Activate App](/docs/en/commands/device/app/activate-app.md). [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/clipboard/get-clipboard.yml) @@ -86,7 +81,6 @@ Get the content of the system clipboard |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/releases) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [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)| None | [github.com](https://github.com/appium/php-client/releases/latest) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | [github.com](https://github.com/appium/appium) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/clipboard/get-clipboard.yml) diff --git a/docs/en/commands/device/clipboard/set-clipboard.md b/docs/en/commands/device/clipboard/set-clipboard.md index a56d3d03fa5..355c08d2119 100644 --- a/docs/en/commands/device/clipboard/set-clipboard.md +++ b/docs/en/commands/device/clipboard/set-clipboard.md @@ -40,12 +40,6 @@ set_clipboard content: 'happy testing' ``` -```php -# PHP -// PHP Code here - -``` - ```csharp // C# // CSharp Code here @@ -85,7 +79,6 @@ Set the content of the system clipboard |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/releases) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [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)| None | [github.com](https://github.com/appium/php-client/releases/latest) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | [github.com](https://github.com/appium/appium) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/clipboard/set-clipboard.yml) diff --git a/docs/en/commands/device/emulator/power_ac.md b/docs/en/commands/device/emulator/power_ac.md index 604f748e91d..e1f4c4c12e3 100644 --- a/docs/en/commands/device/emulator/power_ac.md +++ b/docs/en/commands/device/emulator/power_ac.md @@ -35,10 +35,6 @@ set_power_ac :on ``` -```php -// Not supported -``` - ```csharp // Not supported ``` @@ -77,7 +73,6 @@ To set the state of the battery charger to connected or not. |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| None | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| None | | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device/Emulator#set_power_ac-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| None | | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/emulator/power_ac.yml) @@ -110,4 +105,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/emulator/power_ac.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L415) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L426) diff --git a/docs/en/commands/device/emulator/power_capacity.md b/docs/en/commands/device/emulator/power_capacity.md index 60094aa7c2b..3630e88ad55 100644 --- a/docs/en/commands/device/emulator/power_capacity.md +++ b/docs/en/commands/device/emulator/power_capacity.md @@ -35,10 +35,6 @@ set_power_capacity 50 ``` -```php -// Not supported -``` - ```csharp // Not supported ``` @@ -77,7 +73,6 @@ To set the battery percentage. |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| None | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| None | | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device/Emulator#set_power_capacity-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| None | | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/emulator/power_capacity.yml) @@ -110,4 +105,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/emulator/power_capacity.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L412) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L423) diff --git a/docs/en/commands/device/files/pull-file.md b/docs/en/commands/device/files/pull-file.md index 61ac48ee52b..343e2efd6ef 100644 --- a/docs/en/commands/device/files/pull-file.md +++ b/docs/en/commands/device/files/pull-file.md @@ -37,12 +37,6 @@ pull_file('/data/local/tmp/file.txt') ``` -```php -# PHP -$data = $driver->pullFile('data/local/tmp/file.txt'); - -``` - ```csharp // C# byte[] fileBase64 = driver.PullFile("/path/to/device/foo.bar"); @@ -77,7 +71,6 @@ byte[] fileBase64 = driver.PullFile("/path/to/device/foo.bar"); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2665) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#pull_file-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/files/pull-file.yml) @@ -110,4 +103,4 @@ Contents of file in base64 (`string`) [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/files/pull-file.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L504) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L515) diff --git a/docs/en/commands/device/files/pull-folder.md b/docs/en/commands/device/files/pull-folder.md index 1b0402c55b2..14f6a128fa2 100644 --- a/docs/en/commands/device/files/pull-folder.md +++ b/docs/en/commands/device/files/pull-folder.md @@ -37,12 +37,6 @@ pull_folder('/data/local/tmp/file.txt') ``` -```php -# PHP -$folderBase64 = $driver->pullFolder($path); - -``` - ```csharp // C# byte[] folder = driver.PullFolder("/path/to/device"); @@ -77,7 +71,6 @@ byte[] folder = driver.PullFolder("/path/to/device"); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2688) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#pull_folder-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/files/pull-folder.yml) @@ -110,4 +103,4 @@ A string of Base64 encoded data, representing a zip archive of the contents of t [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/files/pull-folder.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L507) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L518) diff --git a/docs/en/commands/device/files/push-file.md b/docs/en/commands/device/files/push-file.md index 73c55f1cab7..94d65e0e094 100644 --- a/docs/en/commands/device/files/push-file.md +++ b/docs/en/commands/device/files/push-file.md @@ -7,7 +7,7 @@ Place a file onto the device in a particular place ```java // Java -driver.pushFile("/path/to/device/foo.bar", new File("/Users/johndoe/files/foo.bar")); +driver.pushFile("/data/local/tmp/foo.bar", new File("/Users/johndoe/files/foo.bar")); ``` @@ -26,29 +26,23 @@ let data = new Buffer("Hello World").toString('base64'); driver.pushFile('/data/local/tmp/file.txt', data); // wd example -await driver.pushFileToDevice('/path/to/device/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8='); +await driver.pushFileToDevice('/data/local/tmp/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8='); ``` ```ruby # Ruby # ruby_lib example -push_file('/path/to/device/foo.bar', File.read('path/to/file.png')) +push_file('/data/local/tmp/foo.bar', File.read('path/to/file.png')) # ruby_lib_core example -@driver.push_file('/path/to/device/foo.bar', File.read('path/to/file.png')) - -``` - -```php -# PHP -$driver->pushFile('/path/to/device/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8='); +@driver.push_file('/data/local/tmp/foo.bar', File.read('path/to/file.png')) ``` ```csharp // C# -driver.PushFile("/path/to/device/foo.bar", new FileInfo("/Users/johndoe/files/foo.bar")) +driver.PushFile("/data/local/tmp/foo.bar", new FileInfo("/Users/johndoe/files/foo.bar")) ``` @@ -80,7 +74,6 @@ driver.PushFile("/path/to/device/foo.bar", new FileInfo("/Users/johndoe/files/fo |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2640) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#push_file-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/files/push-file.yml) @@ -114,4 +107,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/files/push-file.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L501) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L512) diff --git a/docs/en/commands/device/interactions/is-locked.md b/docs/en/commands/device/interactions/is-locked.md index 58f1d79615f..cbefd23b8a8 100644 --- a/docs/en/commands/device/interactions/is-locked.md +++ b/docs/en/commands/device/interactions/is-locked.md @@ -37,12 +37,6 @@ device_locked? ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# bool isLocked = driver.IsLocked(); // Supported by IOSDriver & AndroidDriver @@ -77,7 +71,6 @@ bool isLocked = driver.IsLocked(); // Supported by IOSDriver & AndroidDriver |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2407) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#device_locked%3F-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Android/AndroidDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/interactions/is-locked.yml) @@ -108,4 +101,4 @@ True if the device is locked, false if not (`boolean`) [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/interactions/is-locked.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L367) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L378) diff --git a/docs/en/commands/device/interactions/lock.md b/docs/en/commands/device/interactions/lock.md index b6c29ad0209..a12b524e495 100644 --- a/docs/en/commands/device/interactions/lock.md +++ b/docs/en/commands/device/interactions/lock.md @@ -39,12 +39,6 @@ lock(5) # lock 5 seconds ``` -```php -# PHP -$driver->lock(5); - -``` - ```csharp // C# driver.Lock(); // Supported by IOSDriver & AndroidDriver @@ -79,7 +73,6 @@ driver.Lock(); // Supported by IOSDriver & AndroidDriver |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2363) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#lock-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Android/AndroidDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/interactions/lock.yml) @@ -112,4 +105,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/interactions/lock.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L361) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L372) diff --git a/docs/en/commands/device/interactions/rotate.md b/docs/en/commands/device/interactions/rotate.md index 3f70591ffe4..74173f34aa8 100644 --- a/docs/en/commands/device/interactions/rotate.md +++ b/docs/en/commands/device/interactions/rotate.md @@ -30,12 +30,6 @@ driver.rotateDevice({x: 114, y: 198, duration: 5, radius: 3, rotation: 220, touc # Not supported ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.Rotate(new Dictionary { { "x", 114 }, { "y", 198 }, { "duration", 5 }, { "radius", 3 }, { "rotation", 220 }, { "touchCount", 2 } }); @@ -70,7 +64,6 @@ driver.Rotate(new Dictionary { { "x", 114 }, { "y", 198 }, { "durat |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2470) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/interactions/rotate.yml) @@ -108,4 +101,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/interactions/rotate.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L424) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L435) diff --git a/docs/en/commands/device/interactions/shake.md b/docs/en/commands/device/interactions/shake.md index d2563303d60..4d3c8104cc0 100644 --- a/docs/en/commands/device/interactions/shake.md +++ b/docs/en/commands/device/interactions/shake.md @@ -37,12 +37,6 @@ shake ``` -```php -# PHP -$driver->shake(); - -``` - ```csharp // C# driver.ShakeDevice(); @@ -77,7 +71,6 @@ driver.ShakeDevice(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2342) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#shake-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/iOS/IOSDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/interactions/shake.yml) @@ -108,4 +101,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/interactions/shake.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L354) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L365) diff --git a/docs/en/commands/device/interactions/unlock.md b/docs/en/commands/device/interactions/unlock.md index fe54e57853a..122c37c2e02 100644 --- a/docs/en/commands/device/interactions/unlock.md +++ b/docs/en/commands/device/interactions/unlock.md @@ -41,12 +41,6 @@ unlock ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.Unlock(); // Supported by IOSDriver & AndroidDriver @@ -81,7 +75,6 @@ driver.Unlock(); // Supported by IOSDriver & AndroidDriver |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2386) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#unlock-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Android/AndroidDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/interactions/unlock.yml) @@ -112,4 +105,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/interactions/unlock.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L364) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L375) diff --git a/docs/en/commands/device/keys/hide-keyboard.md b/docs/en/commands/device/keys/hide-keyboard.md index 297a729792b..615865d3f01 100644 --- a/docs/en/commands/device/keys/hide-keyboard.md +++ b/docs/en/commands/device/keys/hide-keyboard.md @@ -37,15 +37,6 @@ hide_keyboard ``` -```php -# PHP -$driver->hideKeyboard(); -$driver->hideKeyboard(array( - 'keyName' => 'Done' -)); - -``` - ```csharp // C# driver.HideKeyboard(); @@ -80,7 +71,6 @@ driver.HideKeyboard(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2723) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#hide_keyboard-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/keys/hide-keyboard.yml) @@ -116,4 +106,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/keys/hide-keyboard.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L495) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L506) diff --git a/docs/en/commands/device/keys/is-keyboard-shown.md b/docs/en/commands/device/keys/is-keyboard-shown.md index f45373297c1..3e7f5f88aa1 100644 --- a/docs/en/commands/device/keys/is-keyboard-shown.md +++ b/docs/en/commands/device/keys/is-keyboard-shown.md @@ -37,10 +37,6 @@ is_keyboard_shown ``` -```php -// Not supported -``` - ```csharp // Not supported ``` @@ -73,7 +69,6 @@ is_keyboard_shown |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| None | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2638) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#is_keyboard_shown-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| None | | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/keys/is-keyboard-shown.yml) @@ -104,4 +99,4 @@ True if the keyboard is shown. (`boolean`) [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/keys/is-keyboard-shown.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L498) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L509) diff --git a/docs/en/commands/device/keys/long-press-keycode.md b/docs/en/commands/device/keys/long-press-keycode.md index 555b3909db8..3f225156525 100644 --- a/docs/en/commands/device/keys/long-press-keycode.md +++ b/docs/en/commands/device/keys/long-press-keycode.md @@ -37,12 +37,6 @@ long_press_keycode(10) ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.LongPressKeyCode(WindowsKeyCode.Back); @@ -81,7 +75,6 @@ See https://developer.android.com/reference/android/view/KeyEvent.html# for refe |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2478) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#long_press_keycode-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Windows/WindowsDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/keys/long-press-keycode.yml) @@ -116,4 +109,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/keys/long-press-keycode.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L385) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L396) diff --git a/docs/en/commands/device/keys/press-keycode.md b/docs/en/commands/device/keys/press-keycode.md index 3c76e0b6cf5..bd11d7ba721 100644 --- a/docs/en/commands/device/keys/press-keycode.md +++ b/docs/en/commands/device/keys/press-keycode.md @@ -37,12 +37,6 @@ press_keycode(10) ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.PressKeyCode(WindowsKeyCode.Windows); @@ -81,7 +75,6 @@ See https://developer.android.com/reference/android/view/KeyEvent.html for refer |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2457) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#press_keycode-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Windows/WindowsDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/keys/press-keycode.yml) @@ -116,4 +109,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/keys/press-keycode.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L382) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L393) diff --git a/docs/en/commands/device/network/gsm-call.md b/docs/en/commands/device/network/gsm-call.md index 430080b1af4..da95499bb0f 100644 --- a/docs/en/commands/device/network/gsm-call.md +++ b/docs/en/commands/device/network/gsm-call.md @@ -37,12 +37,6 @@ gsm_call(phone_number: '5551234567', action: :call) ``` -```php -# PHP -// TODO - -``` - ```csharp // C# // TODO @@ -77,7 +71,6 @@ gsm_call(phone_number: '5551234567', action: :call) |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L3183) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](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/releases/latest)| None | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/network/gsm-call.yml) @@ -111,4 +104,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/network/gsm-call.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L394) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L405) diff --git a/docs/en/commands/device/network/gsm-signal.md b/docs/en/commands/device/network/gsm-signal.md index 8061c75f6e7..8e18ca5cf43 100644 --- a/docs/en/commands/device/network/gsm-signal.md +++ b/docs/en/commands/device/network/gsm-signal.md @@ -37,12 +37,6 @@ gsm_signal :good ``` -```php -# PHP -// TODO - -``` - ```csharp // C# // TODO @@ -77,7 +71,6 @@ gsm_signal :good |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L3221) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](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/releases/latest)| None | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/network/gsm-signal.yml) @@ -110,4 +103,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/network/gsm-signal.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L397) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L408) diff --git a/docs/en/commands/device/network/gsm-voice.md b/docs/en/commands/device/network/gsm-voice.md index e32feedf0fa..04fbd4a192b 100644 --- a/docs/en/commands/device/network/gsm-voice.md +++ b/docs/en/commands/device/network/gsm-voice.md @@ -37,12 +37,6 @@ gsm_voice :home ``` -```php -# PHP -// TODO - -``` - ```csharp // C# // TODO @@ -77,7 +71,6 @@ gsm_voice :home |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L3241) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](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/releases/latest)| None | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/network/gsm-voice.yml) @@ -110,4 +103,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/network/gsm-voice.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L409) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L420) diff --git a/docs/en/commands/device/network/network-speed.md b/docs/en/commands/device/network/network-speed.md index c2d073dc766..fd73501348d 100644 --- a/docs/en/commands/device/network/network-speed.md +++ b/docs/en/commands/device/network/network-speed.md @@ -37,10 +37,6 @@ set_network_speed :lte ``` -```php -// Not supported -``` - ```csharp // Not supported ``` @@ -73,7 +69,6 @@ set_network_speed :lte |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L3411) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Android/Device/Emulator#set_network_speed-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| None | | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/network/network-speed.yml) @@ -106,4 +101,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/network/network-speed.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L418) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L429) diff --git a/docs/en/commands/device/network/send-sms.md b/docs/en/commands/device/network/send-sms.md index 6b7907e868a..eab4aeaee0e 100644 --- a/docs/en/commands/device/network/send-sms.md +++ b/docs/en/commands/device/network/send-sms.md @@ -37,12 +37,6 @@ send_sms(phone_number: '555-123-4567', message: 'Hey lol') ``` -```php -# PHP -// TODO - -``` - ```csharp // C# // TODO @@ -77,7 +71,6 @@ send_sms(phone_number: '555-123-4567', message: 'Hey lol') |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L3183) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](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/releases/latest)| None | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/network/send-sms.yml) @@ -111,4 +104,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/network/send-sms.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L391) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L402) diff --git a/docs/en/commands/device/network/toggle-airplane-mode.md b/docs/en/commands/device/network/toggle-airplane-mode.md index d4a67e4cd30..49272100ef4 100644 --- a/docs/en/commands/device/network/toggle-airplane-mode.md +++ b/docs/en/commands/device/network/toggle-airplane-mode.md @@ -35,12 +35,6 @@ toggle_flight_mode ``` -```php -# PHP -// TODO - -``` - ```csharp // C# // TODO @@ -75,7 +69,6 @@ toggle_flight_mode |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2712) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#toggle_flight_mode-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/network/toggle-airplane-mode.yml) @@ -106,4 +99,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/network/toggle-airplane-mode.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L510) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L521) diff --git a/docs/en/commands/device/network/toggle-data.md b/docs/en/commands/device/network/toggle-data.md index 36eb7de5c3b..d307b0d1f2f 100644 --- a/docs/en/commands/device/network/toggle-data.md +++ b/docs/en/commands/device/network/toggle-data.md @@ -35,12 +35,6 @@ toggle_data ``` -```php -# PHP -// TODO - -``` - ```csharp // C# // TODO @@ -83,7 +77,6 @@ because it requires system or carrier privileged permission, and Android <= 21 d |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2771) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Device#toggle_data-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/network/toggle-data.yml) @@ -114,4 +107,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/network/toggle-data.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L513) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L524) diff --git a/docs/en/commands/device/network/toggle-location-services.md b/docs/en/commands/device/network/toggle-location-services.md index 8c4be2b2da2..da13f5b7174 100644 --- a/docs/en/commands/device/network/toggle-location-services.md +++ b/docs/en/commands/device/network/toggle-location-services.md @@ -37,12 +37,6 @@ toggle_location_services ``` -```php -# PHP -// TODO - -``` - ```csharp // C# // TODO @@ -77,7 +71,6 @@ toggle_location_services |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2758) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](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/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/network/toggle-location-services.yml) @@ -108,4 +101,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/network/toggle-location-services.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L519) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L530) diff --git a/docs/en/commands/device/network/toggle-wifi.md b/docs/en/commands/device/network/toggle-wifi.md index 761e90ecb2d..25882fcf45c 100644 --- a/docs/en/commands/device/network/toggle-wifi.md +++ b/docs/en/commands/device/network/toggle-wifi.md @@ -37,12 +37,6 @@ toggle_wifi ``` -```php -# PHP -// TODO - -``` - ```csharp // C# // TODO @@ -83,7 +77,6 @@ Since Android Q, a method to change the WiFi service state has been restricted. |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2738) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/master/Appium/Core/Device#toggle_wifi-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/network/toggle-wifi.yml) @@ -114,4 +107,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/network/toggle-wifi.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L516) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L527) diff --git a/docs/en/commands/device/performance-data/get-performance-data.md b/docs/en/commands/device/performance-data/get-performance-data.md index ff369f020d0..87c7757267f 100644 --- a/docs/en/commands/device/performance-data/get-performance-data.md +++ b/docs/en/commands/device/performance-data/get-performance-data.md @@ -37,12 +37,6 @@ get_performance_data package_name: 'io.appium.android.apis', data_type: 'cpuinfo ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# // Not supported @@ -77,7 +71,6 @@ get_performance_data package_name: 'io.appium.android.apis', data_type: 'cpuinfo |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L3412) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](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/releases/latest)| None | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/performance-data/get-performance-data.yml) @@ -112,4 +105,4 @@ The information type of the system state which is supported to read as like cpu, [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/performance-data/get-performance-data.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L379) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L390) diff --git a/docs/en/commands/device/performance-data/performance-data-types.md b/docs/en/commands/device/performance-data/performance-data-types.md index adb61e34b65..7e4761ec25c 100644 --- a/docs/en/commands/device/performance-data/performance-data-types.md +++ b/docs/en/commands/device/performance-data/performance-data-types.md @@ -37,12 +37,6 @@ get_performance_data_types ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# // Not supported @@ -77,7 +71,6 @@ get_performance_data_types |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L3398) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](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/releases/latest)| None | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/performance-data/performance-data-types.yml) @@ -108,4 +101,4 @@ The available performance data types (cpuinfo|batteryinfo|networkinfo|memoryinfo [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/performance-data/performance-data-types.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L376) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L387) diff --git a/docs/en/commands/device/recording-screen/start-recording-screen.md b/docs/en/commands/device/recording-screen/start-recording-screen.md index d9832c258d6..dfa95c85fc5 100644 --- a/docs/en/commands/device/recording-screen/start-recording-screen.md +++ b/docs/en/commands/device/recording-screen/start-recording-screen.md @@ -23,9 +23,7 @@ self.driver.start_recording_screen() // webdriver.io example driver.startRecordingScreen(); -// wd example -await driver.startRecordingScreen(); - +// Not supported ``` ```ruby @@ -42,12 +40,6 @@ start_recording_screen video_type: 'h264', time_limit: '260' # iOS ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.StartRecordingScreen( @@ -84,9 +76,8 @@ driver.StartRecordingScreen( |[Java](https://github.com/appium/java-client/releases/latest)| All | [static.javadoc.io](https://static.javadoc.io/io.appium/java-client/6.1.0/io/appium/java_client/screenrecording/CanRecordScreen.html#startRecordingScreen-T-) | |[Python](https://github.com/appium/python-client/releases/latest)| All | [appium.github.io](https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.screen_record.ScreenRecord.start_recording_screen) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | -|[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L3412) | +|[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [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/releases/latest)| None | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/recording-screen/start-recording-screen.yml) @@ -116,7 +107,7 @@ driver.StartRecordingScreen( | options.method | `string` | The http multipart upload method name. The 'PUT' one is used by default. | | options.forceRestart | `boolean` | 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`). | | options.timeLimit | `string` | Recording time. 180 seconds is by default. | -| options.videoType | `string` | (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`. | +| options.videoType | `string` | (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 `mjpeg`. | | options.videoQuality | `string` | (iOS Only) The video encoding quality (low, medium, high, photo - defaults to medium). | | options.videoFps | `string` | (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. | | options.videoScale | `string` | (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. | @@ -132,4 +123,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/recording-screen/start-recording-screen.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L370) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L381) diff --git a/docs/en/commands/device/recording-screen/stop-recording-screen.md b/docs/en/commands/device/recording-screen/stop-recording-screen.md index a89c8904a44..168d69f4cb7 100644 --- a/docs/en/commands/device/recording-screen/stop-recording-screen.md +++ b/docs/en/commands/device/recording-screen/stop-recording-screen.md @@ -40,12 +40,6 @@ stop_recording_screen remote_path: 'https://example.com', user: 'example', pass: ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.StopRecordingScreen(); @@ -80,7 +74,6 @@ driver.StopRecordingScreen(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L3398) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#stop_recording_screen-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| None | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/recording-screen/stop-recording-screen.yml) @@ -114,4 +107,4 @@ Base64 encoded string. If remote_path is set, the response is empty string. (`st [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/recording-screen/stop-recording-screen.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L373) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L384) diff --git a/docs/en/commands/device/simulator/toggle-touch-id-enrollment.md b/docs/en/commands/device/simulator/toggle-touch-id-enrollment.md index aaf719968e3..a2612242446 100644 --- a/docs/en/commands/device/simulator/toggle-touch-id-enrollment.md +++ b/docs/en/commands/device/simulator/toggle-touch-id-enrollment.md @@ -37,12 +37,6 @@ toggle_touch_id_enrollment ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# // TODO C# sample @@ -55,6 +49,8 @@ toggle_touch_id_enrollment 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. +Another way to enable touch id is by using `mobile: enrollBiometric`. More info [here](https://github.com/appium/appium-xcuitest-driver#mobile-enrollbiometric). + 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 @@ -85,7 +81,6 @@ This call will only work if the Appium process or its parent application (e.g., |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L3150) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](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/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/simulator/toggle-touch-id-enrollment.yml) @@ -118,4 +113,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/simulator/toggle-touch-id-enrollment.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L544) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L555) diff --git a/docs/en/commands/device/simulator/touch-id.md b/docs/en/commands/device/simulator/touch-id.md index e42469af671..a1cb563374c 100644 --- a/docs/en/commands/device/simulator/touch-id.md +++ b/docs/en/commands/device/simulator/touch-id.md @@ -43,12 +43,6 @@ touch_id(true) ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.PerformTouchID(false); // Simulates a failed touch @@ -97,7 +91,6 @@ Finger Print by Android is [here](http://appium.io/docs/en/commands/device/authe |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L3133) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Ios/Device#touch_id-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/iOS/IOSDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/simulator/touch-id.yml) @@ -130,5 +123,5 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/simulator/touch-id.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L541) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L552) * [Appium Docs](https://github.com/appium/appium-xcuitest-driver/blob/master/docs/touch-id.md) diff --git a/docs/en/commands/device/system/display-density.md b/docs/en/commands/device/system/display-density.md index a73081ef368..9e678dc87df 100644 --- a/docs/en/commands/device/system/display-density.md +++ b/docs/en/commands/device/system/display-density.md @@ -35,10 +35,6 @@ get_device_density ``` -```php -// Not supported -``` - ```csharp // Not supported ``` @@ -71,7 +67,6 @@ get_device_density |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| None | | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Android/Device#get_display_density-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| None | | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/system/display-density.yml) @@ -102,4 +97,4 @@ The device density(dpi) of the Android device (`number`) [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/system/display-density.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L538) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L549) diff --git a/docs/en/commands/device/system/open-notifications.md b/docs/en/commands/device/system/open-notifications.md index a4a512e3bfd..8323dc5fde1 100644 --- a/docs/en/commands/device/system/open-notifications.md +++ b/docs/en/commands/device/system/open-notifications.md @@ -37,12 +37,6 @@ open_notifications(); ``` -```php -# PHP -$driver->openNotifications(); - -``` - ```csharp // C# // TODO @@ -77,7 +71,6 @@ $driver->openNotifications(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L3004) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#open_notifications-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/system/open-notifications.yml) @@ -108,4 +101,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/system/open-notifications.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L522) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L533) diff --git a/docs/en/commands/device/system/system-bars.md b/docs/en/commands/device/system/system-bars.md index 03665be8d84..c79bb2e26d4 100644 --- a/docs/en/commands/device/system/system-bars.md +++ b/docs/en/commands/device/system/system-bars.md @@ -35,12 +35,6 @@ get_system_bars ``` -```php -# PHP -// TODO - -``` - ```csharp // C# // TODO @@ -75,7 +69,6 @@ get_system_bars |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| None | | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#get_system_bars-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| None | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/system/system-bars.yml) @@ -106,4 +99,4 @@ Information about visibility and bounds of status and navigation bar (`arraygetDeviceTime(); - -``` - ```csharp // C# string result = driver.DeviceTime; @@ -80,7 +74,6 @@ string result = driver.DeviceTime; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L3119) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#device_time-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/system/system-time.yml) @@ -111,4 +104,4 @@ Time on the device (`string`) [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/device/system/system-time.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L357) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L368) diff --git a/docs/en/commands/element/actions/clear.md b/docs/en/commands/element/actions/clear.md index 220633df30d..7607e7d30f0 100644 --- a/docs/en/commands/element/actions/clear.md +++ b/docs/en/commands/element/actions/clear.md @@ -39,12 +39,6 @@ find_element(:accessibility_id, "SomeAccessibilityID").clear ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# var element = driver.FindElementByAccessibilityId("SomeAccessibilityID"); @@ -80,7 +74,6 @@ element.Clear(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1780) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:clear) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWebElement.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/actions/clear.yml) diff --git a/docs/en/commands/element/actions/click.md b/docs/en/commands/element/actions/click.md index 1490cc5db0c..d31c12844c0 100644 --- a/docs/en/commands/element/actions/click.md +++ b/docs/en/commands/element/actions/click.md @@ -40,12 +40,6 @@ find_element(:accessibility_id, 'SomeId').click ``` -```php -# PHP -$driver->byAccessibilityId('SomeId')->click(); - -``` - ```csharp // C# MobileElement el = driver.FindElement(MobileByAccessibilityID("Some ID"); @@ -91,7 +85,6 @@ Not all drivers automatically scroll the element into view and may need to be sc |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1672) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#click-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/actions/click.yml) diff --git a/docs/en/commands/element/actions/send-keys.md b/docs/en/commands/element/actions/send-keys.md index ceb49f83a95..26238fb0c00 100644 --- a/docs/en/commands/element/actions/send-keys.md +++ b/docs/en/commands/element/actions/send-keys.md @@ -39,13 +39,6 @@ find_element(:accessibility_id, "SomeAccessibilityID").send_keys("Hello World!") ``` -```php -# PHP -$el = $this->byAccessibilityId('SomeAccessibilityID'); -$el->setText('Hello world!'); - -``` - ```csharp // C# MobileElement el = driver.FindElement(MobileByAccessibilityID("Some ID"); @@ -91,7 +84,6 @@ Any UTF-8 character may be specified, however, if the server does not support na |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1700) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#send_keys-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/actions/send-keys.yml) diff --git a/docs/en/commands/element/attributes/attribute.md b/docs/en/commands/element/attributes/attribute.md index e6bf827effa..31f5c5026c3 100644 --- a/docs/en/commands/element/attributes/attribute.md +++ b/docs/en/commands/element/attributes/attribute.md @@ -39,13 +39,6 @@ find_element(:accessibility_id, 'SomeAccessibilityID').attribute("content-desc") ``` -```php -# PHP -$el = $this->byAccessibilityId('SomeAccessibilityID'); -$name = $el->attribute('name'); - -``` - ```csharp // C# var element = driver.FindElementByAccessibilityId("SomeAccessibilityID"); @@ -81,7 +74,6 @@ string tagName = element.GetAttribute("content-desc"); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1350) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FElement:attribute) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumWebElement.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/attributes/attribute.yml) diff --git a/docs/en/commands/element/attributes/css-property.md b/docs/en/commands/element/attributes/css-property.md index 13a6c910778..0157def2127 100644 --- a/docs/en/commands/element/attributes/css-property.md +++ b/docs/en/commands/element/attributes/css-property.md @@ -39,12 +39,6 @@ find_element(:id, 'SomeId').css_value ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# var element = driver.FindElementById("SomeId"); @@ -87,7 +81,6 @@ This command only applies to webview contexts |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1447) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:css_value) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumWebElement.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/attributes/css-property.yml) diff --git a/docs/en/commands/element/attributes/displayed.md b/docs/en/commands/element/attributes/displayed.md index 581aef2dc1f..4f607bf27e0 100644 --- a/docs/en/commands/element/attributes/displayed.md +++ b/docs/en/commands/element/attributes/displayed.md @@ -39,13 +39,6 @@ find_element(:accessibility_id, "SomeAccessibilityID").displayed? ``` -```php -# PHP -$el = $this->byAccessibilityId('SomeAccessibilityID'); -$isDisplayed = $el->displayed(); - -``` - ```csharp // C# var element = driver.FindElementByAccessibilityId("SomeAccessibilityID"); @@ -81,7 +74,6 @@ bool isDisplayed = element.Displayed; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1370) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FElement:displayed%3F) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumWebElement.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/attributes/displayed.yml) diff --git a/docs/en/commands/element/attributes/enabled.md b/docs/en/commands/element/attributes/enabled.md index f073a1fbee2..5d60114d0a3 100644 --- a/docs/en/commands/element/attributes/enabled.md +++ b/docs/en/commands/element/attributes/enabled.md @@ -39,12 +39,6 @@ find_element(:accessibility_id, "SomeAccessibilityID").enabled? ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# var element = driver.FindElementByAccessibilityId("SomeAccessibilityID"); @@ -80,7 +74,6 @@ bool isEnabled = element.Enabled; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1386) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#enabled%3F-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumWebElement.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/attributes/enabled.yml) diff --git a/docs/en/commands/element/attributes/location-in-view.md b/docs/en/commands/element/attributes/location-in-view.md index d1df686cbf2..f1867775488 100644 --- a/docs/en/commands/element/attributes/location-in-view.md +++ b/docs/en/commands/element/attributes/location-in-view.md @@ -33,10 +33,6 @@ let location = await element.getLocationInView(); # Not supported ``` -```php -// Not supported -``` - ```csharp // Not supported ``` @@ -69,7 +65,6 @@ let location = await element.getLocationInView(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2189) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/attributes/location-in-view.yml) diff --git a/docs/en/commands/element/attributes/location.md b/docs/en/commands/element/attributes/location.md index cc97189b03e..e1d079173c1 100644 --- a/docs/en/commands/element/attributes/location.md +++ b/docs/en/commands/element/attributes/location.md @@ -39,13 +39,6 @@ find_element(:accessibility_id, 'SomeAccessibilityID').location ``` -```php -# PHP -$el = $this->byAccessibilityId('SomeAccessibilityID'); -$location = $el->location(); - -``` - ```csharp // C# var element = driver.FindElementByAccessibilityId("SomeAccessibilityID"); @@ -85,7 +78,6 @@ The point (0, 0) refers to the upper-left corner of the page. The element's coor |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2175) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:location) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumWebElement.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/attributes/location.yml) diff --git a/docs/en/commands/element/attributes/name.md b/docs/en/commands/element/attributes/name.md index dd3bc4ed2bb..d14f9fdc3d9 100644 --- a/docs/en/commands/element/attributes/name.md +++ b/docs/en/commands/element/attributes/name.md @@ -39,12 +39,6 @@ find_element(:accessibility_id, 'SomeAccessibilityID').tag_name ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# var element = driver.FindElementByAccessibilityId("SomeAccessibilityID"); @@ -80,7 +74,6 @@ string tagName = element.TagName; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1336) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#tag_name-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumWebElement.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/attributes/name.yml) diff --git a/docs/en/commands/element/attributes/page-index.md b/docs/en/commands/element/attributes/page-index.md index 68e1ee57a7e..ab321e941aa 100644 --- a/docs/en/commands/element/attributes/page-index.md +++ b/docs/en/commands/element/attributes/page-index.md @@ -35,12 +35,6 @@ driver.getPageIndex() # Not supported ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# // TODO C# sample @@ -75,7 +69,6 @@ driver.getPageIndex() |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1336) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#tag_name-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/attributes/page-index.yml) @@ -107,4 +100,4 @@ The tag name of the element (`string`) [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/attributes/page-index.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L338) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L349) diff --git a/docs/en/commands/element/attributes/rect.md b/docs/en/commands/element/attributes/rect.md index 82959ec2cd5..3c636a5f94e 100644 --- a/docs/en/commands/element/attributes/rect.md +++ b/docs/en/commands/element/attributes/rect.md @@ -43,12 +43,6 @@ element.rect ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# var element = driver.FindElementByAccessibilityId("SomeAccessibilityID"); @@ -84,7 +78,6 @@ Rectangle rect = element.Rect; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#rect-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumWebElement.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/attributes/rect.yml) diff --git a/docs/en/commands/element/attributes/replace-value.md b/docs/en/commands/element/attributes/replace-value.md index 694b5417e44..1835938ae74 100644 --- a/docs/en/commands/element/attributes/replace-value.md +++ b/docs/en/commands/element/attributes/replace-value.md @@ -40,12 +40,6 @@ element = @driver.find_element :accessibility_id, "SomeAccessibilityID" ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# // TODO C# sample @@ -85,7 +79,6 @@ Replace the value to element directly. |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1832) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#replace_value-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/attributes/replace-value.yml) @@ -120,4 +113,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/attributes/replace-value.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L576) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L587) diff --git a/docs/en/commands/element/attributes/selected.md b/docs/en/commands/element/attributes/selected.md index c5904ba7b33..bc4ded6d150 100644 --- a/docs/en/commands/element/attributes/selected.md +++ b/docs/en/commands/element/attributes/selected.md @@ -39,12 +39,6 @@ find_element(:accessibility_id, "SomeAccessibilityID").selected? ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# var element = driver.FindElementByAccessibilityId("SomeAccessibilityID"); @@ -80,7 +74,6 @@ bool isSelected = element.Selected; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1402) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#selected%3F-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumWebElement.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/attributes/selected.yml) diff --git a/docs/en/commands/element/attributes/size.md b/docs/en/commands/element/attributes/size.md index b71d5a543a8..2a30f980a82 100644 --- a/docs/en/commands/element/attributes/size.md +++ b/docs/en/commands/element/attributes/size.md @@ -39,13 +39,6 @@ find_element(:accessibility_id, 'SomeAccessibilityID').size ``` -```php -# PHP -$el = $this->byAccessibilityId('SomeAccessibilityID'); -$size = $el->size(); - -``` - ```csharp // C# var element = driver.FindElementByAccessibilityId("SomeAccessibilityID"); @@ -85,7 +78,6 @@ The size will be returned as an object with width and height properties. |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2203) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:size) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumWebElement.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/attributes/size.yml) diff --git a/docs/en/commands/element/attributes/text.md b/docs/en/commands/element/attributes/text.md index ab1dd6883fb..3f1163989df 100644 --- a/docs/en/commands/element/attributes/text.md +++ b/docs/en/commands/element/attributes/text.md @@ -42,13 +42,6 @@ element.text ``` -```php -# PHP -$el = $this->byAccessibilityId('SomeAccessibilityID'); -$text = $el->text(); - -``` - ```csharp // C# var element = driver.FindElementByClassName("SomeClassName"); @@ -89,7 +82,6 @@ Returns the visible text for the element. |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1832) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element#text-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumWebElement.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/attributes/text.yml) diff --git a/docs/en/commands/element/find-element.md b/docs/en/commands/element/find-element.md index 01583791ddc..403bedeb16b 100644 --- a/docs/en/commands/element/find-element.md +++ b/docs/en/commands/element/find-element.md @@ -39,12 +39,6 @@ find_element(:accessibility_id, 'SomeAccessibilityID') ``` -```php -# PHP -$el = $this->byAccessibilityId('SomeAccessibilityID'); - -``` - ```csharp // C# AndroidElement elementOne = driver.FindElementByAccessibilityID("Some ID"); @@ -85,7 +79,6 @@ Get the first element that matches a [locator strategy](/docs/en/commands/elemen |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L745) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/SearchContext:find_element) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/find-element.yml) diff --git a/docs/en/commands/element/find-elements.md b/docs/en/commands/element/find-elements.md index 0d6175a77a4..ff4f1cadb68 100644 --- a/docs/en/commands/element/find-elements.md +++ b/docs/en/commands/element/find-elements.md @@ -14,7 +14,7 @@ List elementsTwo = (List) driver.findElementsByCla ```python # Python -el = self.driver.find_elements_by_accessibility_id('SomeAccessibilityID') +el = driver.find_element(AppiumBy.ACCESSIBILITY_ID,'SomeAccessibilityID') ``` @@ -39,12 +39,6 @@ find_elements(:accessibility_id, "~SomeAccessibilityID") ``` -```php -# PHP -$els = $this->elements($this->using('accessibility id')->value('SomeAccessibilityID')); - -``` - ```csharp // C# IEnumerable elementsOne = driver.FindElementsByAccessibilityId("SomeAccessibilityID"); @@ -99,7 +93,6 @@ Get a list of elements that match the [locator selector](/docs/en/writing-runnin |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L798) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/SearchContext:find_elements) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumWebElement.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/find-elements.yml) diff --git a/docs/en/commands/element/other/active.md b/docs/en/commands/element/other/active.md index 14087b46d9e..ce40983f750 100644 --- a/docs/en/commands/element/other/active.md +++ b/docs/en/commands/element/other/active.md @@ -37,12 +37,6 @@ switch_to.active_element ``` -```php -# PHP -// TODO PHP example - -``` - ```csharp // C# IWebElement currentElement = driver.SwitchTo().ActiveElement(); @@ -77,7 +71,6 @@ IWebElement currentElement = driver.SwitchTo().ActiveElement(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1934) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/0.0.28/Selenium/WebDriver/TargetLocator#active_element-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteTargetLocator.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/other/active.yml) @@ -86,7 +79,7 @@ IWebElement currentElement = driver.SwitchTo().ActiveElement(); [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/other/active.yml) ### Endpoint -`POST /session/:session_id/element/active` +`'GET'(W3C), 'POST'(JSONWP) /session/:session_id/element/active` [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/other/active.yml) ### URL Parameters diff --git a/docs/en/commands/element/other/equals-element.md b/docs/en/commands/element/other/equals-element.md index 2b55df18573..d92a55beb59 100644 --- a/docs/en/commands/element/other/equals-element.md +++ b/docs/en/commands/element/other/equals-element.md @@ -48,12 +48,6 @@ element1 == element2 ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# var elementOne = driver.FindElementByClassName("SomeClassName"); @@ -90,7 +84,6 @@ bool isEqual = elementOne.Equals(elementTwo); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1463) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/0.0.28/Selenium/WebDriver/Element#==-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWebElement.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/other/equals-element.yml) diff --git a/docs/en/commands/element/other/submit.md b/docs/en/commands/element/other/submit.md index 311fbca9688..42538809955 100644 --- a/docs/en/commands/element/other/submit.md +++ b/docs/en/commands/element/other/submit.md @@ -43,12 +43,6 @@ element.submit element ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# var element = driver.FindElementByClassName("SomeClassName"); @@ -89,7 +83,6 @@ The submit command may also be applied to any element that is a descendant of a |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1741) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/0.0.28/Selenium/WebDriver/Element#submit-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWebElement.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/element/other/submit.yml) diff --git a/docs/en/commands/example.md b/docs/en/commands/example.md index e62a4dc50fb..12831c2c278 100644 --- a/docs/en/commands/example.md +++ b/docs/en/commands/example.md @@ -39,12 +39,6 @@ await driver.status(); ``` -```php -# PHP -// PHP Code here - -``` - ```csharp // C# driver.FindElementById("elementId").Click(); @@ -82,7 +76,6 @@ An indepth description of what this command does |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| None | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| None | [github.com](https://github.com/admc/wd/releases) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [github.com](https://github.com/appium/ruby_lib/releases/latest) | -|[PHP](https://github.com/appium/php-client/releases/latest)| None | [github.com](https://github.com/appium/php-client/releases/latest) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | [github.com](https://github.com/appium/appium) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/example.yml) diff --git a/docs/en/commands/interactions/actions.md b/docs/en/commands/interactions/actions.md index 5891876cedd..7331a333e7a 100644 --- a/docs/en/commands/interactions/actions.md +++ b/docs/en/commands/interactions/actions.md @@ -101,14 +101,14 @@ action.click(el).pause(keyboard).pause(keyboard).pause(keyboard).send_keys('keys # Build multiple action chains # Example: expressing a 1-second pinch-and-zoom # with a 500ms wait after the fingers first touch: -f1 = action.add_pointer_input(:touch, 'finger1') +f1 = ::Selenium::WebDriver::Interactions.pointer(:touch, name: 'finger1') f1.create_pointer_move(duration: 1, x: 200, y: 500, origin: ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT) f1.create_pointer_down(:left) f1.create_pause(0.5) f1.create_pointer_move(duration: 1, x: 200, y: 200, origin: ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT) f1.create_pointer_up(:left) -f2 = action.add_pointer_input(:touch, 'finger2') +f2 = ::Selenium::WebDriver::Interactions.pointer(:touch, name: 'finger2') f2.create_pointer_move(duration: 1, x: 200, y: 500, origin: ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT) f2.create_pointer_down(:left) f2.create_pause(0.5) @@ -128,14 +128,14 @@ el = @driver.find_element(id: "some_id") # Build multiple action chains # Example: expressing a 1-second pinch-and-zoom # with a 500ms wait after the fingers first touch: -f1 = @driver.action.add_pointer_input(:touch, 'finger1') +f1 = ::Selenium::WebDriver::Interactions.pointer(:touch, name: 'finger1') f1.create_pointer_move(duration: 1, x: 200, y: 500, origin: ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT) f1.create_pointer_down(:left) f1.create_pause(0.5) f1.create_pointer_move(duration: 1, x: 200, y: 200, origin: ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT) f1.create_pointer_up(:left) -f2 = @driver.action.add_pointer_input(:touch, 'finger2') +f2 = ::Selenium::WebDriver::Interactions.pointer(:touch, name: 'finger2') f2.create_pointer_move(duration: 1, x: 200, y: 500, origin: ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT) f2.create_pointer_down(:left) f2.create_pause(0.5) @@ -146,12 +146,6 @@ f2.create_pointer_up(:left) ``` -```php -# PHP -// TODO - -``` - ```csharp // C# var inputDevice = new PointerInputDevice(PointerKind.Touch); @@ -204,7 +198,6 @@ is the 0-indexed action, the second 'tick' is the 1-indexed action, etc.... All |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/W3CActionBuilder) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/jupeter/selenium-php-webdriver/blob/master/Webdriver/Common/ActionChains.php) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/actions.yml) diff --git a/docs/en/commands/interactions/mouse/button-down.md b/docs/en/commands/interactions/mouse/button-down.md index e364ceeb396..a1eb84c2cbf 100644 --- a/docs/en/commands/interactions/mouse/button-down.md +++ b/docs/en/commands/interactions/mouse/button-down.md @@ -45,12 +45,6 @@ action.move_to(element).click_and_hold.perform ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# Actions action = new Actions(driver); @@ -93,7 +87,6 @@ Note that the next mouse-related command that should follow is buttonup . Any ot |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1625) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/ActionBuilder:click_and_hold) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Interactions/Actions.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/mouse/button-down.yml) diff --git a/docs/en/commands/interactions/mouse/button-up.md b/docs/en/commands/interactions/mouse/button-up.md index 1ddddebccf2..0f6d603199a 100644 --- a/docs/en/commands/interactions/mouse/button-up.md +++ b/docs/en/commands/interactions/mouse/button-up.md @@ -53,12 +53,6 @@ action.click_and_hold(el).move_to(el, 10, 10).release.perform ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# Actions action = new Actions(driver); @@ -103,7 +97,6 @@ Must be called once for every buttondown command issued. See the note in click a |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1645) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/ActionBuilder:release) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Interactions/Actions.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/mouse/button-up.yml) diff --git a/docs/en/commands/interactions/mouse/click.md b/docs/en/commands/interactions/mouse/click.md index 31e7212ae6b..233e23c68be 100644 --- a/docs/en/commands/interactions/mouse/click.md +++ b/docs/en/commands/interactions/mouse/click.md @@ -44,12 +44,6 @@ action.move_to(element).click.perform ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# Actions action = new Actions(driver); @@ -87,7 +81,6 @@ action.Perform(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1665) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Mouse:click) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/mouse/click.yml) diff --git a/docs/en/commands/interactions/mouse/doubleclick.md b/docs/en/commands/interactions/mouse/doubleclick.md index d670eb62132..2e96f4814af 100644 --- a/docs/en/commands/interactions/mouse/doubleclick.md +++ b/docs/en/commands/interactions/mouse/doubleclick.md @@ -44,12 +44,6 @@ action.move_to(element).double_click.perform ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# Actions action = new Actions(driver); @@ -87,7 +81,6 @@ action.Perform(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1686) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/ActionBuilder:double_click) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Interactions/Actions.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/mouse/doubleclick.yml) diff --git a/docs/en/commands/interactions/mouse/moveto.md b/docs/en/commands/interactions/mouse/moveto.md index e6e2932e565..46fe552e708 100644 --- a/docs/en/commands/interactions/mouse/moveto.md +++ b/docs/en/commands/interactions/mouse/moveto.md @@ -43,12 +43,6 @@ mouse.move_to(element, 5, 5) ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# Actions action = new Actions(driver); @@ -90,7 +84,6 @@ If no element is specified, the move is relative to the current mouse cursor. If |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1600) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Mouse:move_to) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/mouse/moveto.yml) diff --git a/docs/en/commands/interactions/touch/double-tap.md b/docs/en/commands/interactions/touch/double-tap.md index 48dd8f12ca2..c61aede1d3e 100644 --- a/docs/en/commands/interactions/touch/double-tap.md +++ b/docs/en/commands/interactions/touch/double-tap.md @@ -48,12 +48,6 @@ touch_action.double_tap(element).perform ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# TouchActions action = new TouchActions(driver); @@ -85,12 +79,11 @@ action.Perform(); |Language|Support|Documentation| |--------|-------|-------------| -|[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#doubleTap-org.openqa.selenium.WebElement-) | -|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.double_tap) | +|[Java](https://github.com/appium/java-client/releases/latest)| All | [www.selenium.dev](https://www.selenium.dev/selenium/docs/api/java/overview-summary.html) | +|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html?highlight=tap_and_hold#selenium.webdriver.common.touch_actions.TouchActions.double_tap) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L425) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:double_tap) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Interactions/TouchActions.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/touch/double-tap.yml) diff --git a/docs/en/commands/interactions/touch/flick.md b/docs/en/commands/interactions/touch/flick.md index 624b786dc2b..a555385fc51 100644 --- a/docs/en/commands/interactions/touch/flick.md +++ b/docs/en/commands/interactions/touch/flick.md @@ -43,12 +43,6 @@ touch_action.flick(element, 1, 10, 10).perform ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# TouchActions action = new TouchActions(driver); @@ -81,11 +75,10 @@ action.Perform(); |Language|Support|Documentation| |--------|-------|-------------| |[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#flick-org.openqa.selenium.WebElement-int-int-int-) | -|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.flick_element) | +|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.flick_element) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1513) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:flick) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Interactions/TouchActions.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/touch/flick.yml) diff --git a/docs/en/commands/interactions/touch/long-press.md b/docs/en/commands/interactions/touch/long-press.md index 908a2c8396c..786c691b5b6 100644 --- a/docs/en/commands/interactions/touch/long-press.md +++ b/docs/en/commands/interactions/touch/long-press.md @@ -51,12 +51,6 @@ touch_action.long_press(element).perform ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# var touchAction = new TouchAction(Driver); @@ -88,11 +82,10 @@ touchAction.LongPress(element).Perform(); |Language|Support|Documentation| |--------|-------|-------------| |[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#longPress-org.openqa.selenium.WebElement-) | -|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.long_press) | +|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.long_press) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1531) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:long_press) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/touch/long-press.yml) diff --git a/docs/en/commands/interactions/touch/move.md b/docs/en/commands/interactions/touch/move.md index 2bac0303cf2..c7795e10485 100644 --- a/docs/en/commands/interactions/touch/move.md +++ b/docs/en/commands/interactions/touch/move.md @@ -54,12 +54,6 @@ touch_action.down(element).move_to().perform ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# TouchActions action = new TouchActions(driver); @@ -98,11 +92,10 @@ As of Appium 1.8.0 all move actions take coordinates that are absolute. |Language|Support|Documentation| |--------|-------|-------------| |[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#down-int-int-) | -|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.move) | +|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.touch_actions) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1531) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:move) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Interactions/TouchActions.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/touch/move.yml) diff --git a/docs/en/commands/interactions/touch/multi-touch-perform.md b/docs/en/commands/interactions/touch/multi-touch-perform.md index 530c515faf7..2b065d1136f 100644 --- a/docs/en/commands/interactions/touch/multi-touch-perform.md +++ b/docs/en/commands/interactions/touch/multi-touch-perform.md @@ -71,18 +71,17 @@ multi_touch.down(element).move_to(10, 100).up(50, 50).perform ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# // TODO C# sample ``` +[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/touch/multi-touch-perform.yml) +## Description + +Deprecated. Please consider using [W3C Actions](/docs/en/commands/interactions/actions.md) + [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/touch/multi-touch-perform.yml) ## Support @@ -111,7 +110,6 @@ multi_touch.down(element).move_to(10, 100).up(50, 50).perform |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1546) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib/Appium/MultiTouch) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/touch/multi-touch-perform.yml) @@ -149,4 +147,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/touch/multi-touch-perform.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L348) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L359) diff --git a/docs/en/commands/interactions/touch/scroll.md b/docs/en/commands/interactions/touch/scroll.md index f48015ec40d..61f3ebd38d9 100644 --- a/docs/en/commands/interactions/touch/scroll.md +++ b/docs/en/commands/interactions/touch/scroll.md @@ -44,12 +44,6 @@ touch_actions.scroll(element, 10, 100).perform ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# TouchActions action = new TouchActions(driver); @@ -82,11 +76,10 @@ action.Perform(); |Language|Support|Documentation| |--------|-------|-------------| |[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#scroll-int-int-) | -|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.scroll) | +|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.scroll) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L425) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:scroll) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Interactions/TouchActions.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/touch/scroll.yml) diff --git a/docs/en/commands/interactions/touch/tap.md b/docs/en/commands/interactions/touch/tap.md index d7683c55f25..e4f1862fbca 100644 --- a/docs/en/commands/interactions/touch/tap.md +++ b/docs/en/commands/interactions/touch/tap.md @@ -53,12 +53,6 @@ touch_action.single_tap(element).perform ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# TouchAction touchAction = new TouchAction(driver); @@ -94,7 +88,6 @@ touchAction.Tap(element).Perform(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1531) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:single_tap) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/touch/tap.yml) diff --git a/docs/en/commands/interactions/touch/touch-down.md b/docs/en/commands/interactions/touch/touch-down.md index 51942b328cb..858c7e7696e 100644 --- a/docs/en/commands/interactions/touch/touch-down.md +++ b/docs/en/commands/interactions/touch/touch-down.md @@ -52,12 +52,6 @@ touch_action.down(element).move().perform ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# TouchActions action = new TouchActions(driver); @@ -91,11 +85,10 @@ action.Perform(); |Language|Support|Documentation| |--------|-------|-------------| |[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#down-int-int-) | -|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.tap_and_hold) | +|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html?highlight=tap_and_hold#selenium.webdriver.common.touch_actions.TouchActions.tap_and_hold) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1546) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/TouchActionBuilder#down-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Interactions/TouchActions.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/touch/touch-down.yml) diff --git a/docs/en/commands/interactions/touch/touch-perform.md b/docs/en/commands/interactions/touch/touch-perform.md index a8e346edab4..8baa1ffb178 100644 --- a/docs/en/commands/interactions/touch/touch-perform.md +++ b/docs/en/commands/interactions/touch/touch-perform.md @@ -32,6 +32,7 @@ actions.perform() // webdriver.io example driver.touchPerform([ { action: 'press', options: { x: 100, y: 250 }}, + { action: 'wait', options: { ms: 100 }}, { action: 'moveTo', options: { x: 300, y: 100 }}, { action: 'release' } ]); @@ -55,12 +56,6 @@ touch_action.down(element).move_to(10, 100).up(50, 50).perform ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# TouchAction action = new TouchAction(driver); @@ -74,7 +69,9 @@ action.Perform(); [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/touch/touch-perform.yml) ## Description -This functionality is only available from within a native context +Deprecated. Please consider using [W3C Actions](/docs/en/commands/interactions/actions.md). + +This functionality is only available from within a native context. 'Touch Perform' works similarly to the other singular touch interactions, except that this allows you to chain together more than one touch action as one command. This is useful because Appium commands are sent over the network and there's latency between commands. This latency can make certain touch @@ -109,7 +106,6 @@ y coordinate, and then releasing. For it to work, there can't be a delay between |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1546) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib/Appium/TouchAction) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/MultiAction/TouchAction.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/touch/touch-perform.yml) @@ -147,4 +143,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/touch/touch-perform.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L345) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L356) diff --git a/docs/en/commands/interactions/touch/touch-up.md b/docs/en/commands/interactions/touch/touch-up.md index 3a3f9e77068..68d05bf3b52 100644 --- a/docs/en/commands/interactions/touch/touch-up.md +++ b/docs/en/commands/interactions/touch/touch-up.md @@ -52,12 +52,6 @@ touch_action.down(element).up(50, 50).perform ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# TouchActions action = new TouchActions(driver); @@ -91,11 +85,10 @@ action.Perform(); |Language|Support|Documentation| |--------|-------|-------------| |[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#up-int-int-) | -|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.release) | +|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.release) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1546) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:up) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Interactions/TouchActions.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/interactions/touch/touch-up.yml) diff --git a/docs/en/commands/mobile-command.md b/docs/en/commands/mobile-command.md index 10cd358669d..8b8374cf20f 100644 --- a/docs/en/commands/mobile-command.md +++ b/docs/en/commands/mobile-command.md @@ -37,12 +37,6 @@ execute_script("mobile: scroll", { "direction" => "down"}) ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.ExecuteScript("mobile:scroll", new Dictionary { { "direction", "down" } }); @@ -58,124 +52,19 @@ Syntax is `execute("mobile: ", )` (see [Execute Script](/docs/en/commands/web/execute.md) for more details on syntax). -List of available commands: - -### IOS -| Command | Description | Argument | Argument Example | -| ------- | ----------- | -------- | ---------------- | -| mobile:viewportScreenshot | Like [screenshot](/docs/en/commands/session/screenshot.md) but only includes contents of viewport | | | - -### IOS (XCUITest Only) -| Command | Description | Argument | Argument Example | -| ------- | ----------- | -------- | ---------------- | -| mobile:startPerfRecord | Starts performance profiling for the device under test | | | -| mobile:stopPerfRecord | Stops performance profiling for the device under test | | | -| mobile:startLogsBroadcast | Starts iOS system logs broadcast websocket on the same host and port where Appium server is running at `/ws/session/:sessionId:/appium/device/syslog` endpoint. | | | -| mobile:stopLogsBroadcast | Stops the iOS system logs broadcasting websocket server started by `mobile:startLogsBroadcast` | | | -| mobile:swipe | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-swipe) | | | -| mobile:scroll | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-scroll) | | | -| mobile:pinch | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-pinch) | | | -| mobile:doubleTap | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-doubleTap) | | | -| mobile:touchAndHold | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-touchAndHold) | | | -| mobile:twoFingerTap | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-twoFingerTap) | | | -| mobile:tapWithNumberOfTaps | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-tapWithNumberOfTaps) | | | -| mobile:tap | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-tap) | | | -| mobile:dragFromToForDuration | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-dragFromToForDuration) | | | -| mobile:selectPickerWheelValue | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-selectPickerWheelValue) | | | -| mobile:alert | refer to [Automating Mobile Gestures For iOS With WebDriverAgent/XCTest Backend](/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md#mobile-alert) | | | -| mobile:installApp | refer to [XCUITest Mobile App Managemenet](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-installapp) | | | -| mobile:removeApp | refer to [XCUITest Mobile App Managemenet](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-removeapp) | | | -| mobile:isAppInstalled | refer to [XCUITest Mobile App Managemenet](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-isappinstalled) | | | -| mobile:launchApp | refer to [XCUITest Mobile App Managemenet](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-launchapp) | | | -| mobile:terminateApp | refer to [XCUITest Mobile App Managemenet](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-terminateapp) | | | -| mobile:activateApp | refer to [XCUITest Mobile App Managemenet](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-activateapp) | | | -| mobile:queryAppState | refer to [XCUITest Mobile App Managemenet](/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md#mobile-queryappstate) | | | -| mobile:setPasteboard | refer to [IOS Pasteboard Guide](/docs/en/writing-running-appium/ios/ios-xctest-pasteboard.md#mobile-setpasteboard) | | | -| mobile:getPasteboard | refer to [IOS Pasteboard Guide](/docs/en/writing-running-appium/ios/ios-xctest-pasteboard.md#mobile-getpasteboard) | | | -| mobile:installCertificate | refer to [IOS Pasteboard Guide](/docs/en/writing-running-appium/ios/ios-xctest-install-certificate.md) | | | -| mobile:getContexts | Retrieve available contexts, along with the url and title associated with each webview (see [get contexts](/docs/en/commands/context/get-contexts.md)). If `waitForWebviewMs` is provided, Appium will wait for available WebViews up to the number since Appium 1.17.0. | `{waitForWebviewMs}` | `{waitForWebviewMs: 5000}` | -| mobile:batteryInfo | Reads the battery information from the device under test | | | -| mobile:pressButton | Press a physical button. The available button options are: _home_, _volumeup_ and _volumedown_. Real devices support all three buttons whereas simulator only supports _home_. | `{name}` | `{name: "home"}` | -| mobile:enrollBiometric | Enroll (or unenroll) an iOS Simulator to use [biometrics](https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/authentication/#face-id-and-touch-id) | `{isEnabled}` | `{isEnabled: true}` | -| mobile:sendBiometricMatch | Send a matching or non-matching biometric input to an iOS Simulator. 'type' must be `touchId` or `faceId`. Match is a boolean indicating if it's a matching or non-matching input | `{type, match}` | `{type: "touchId", match: true}` | -| mobile:isBiometricEnrolled | Check if an iOS Simulator is enrolled or not. Returns `true` if enrolled, `false` if not enrolled. ||| -| mobile:clearKeychains | Clear the keychains for an iOS Simulator ||| -| mobile:siriCommand| Sends a command to Siri | `{text}` | `{text: "What time is it?"}` | -| mobile:source | This endpoint allows to retrieve the current native page source from WDA as a string (also being in a web context). Possible output formats are: `xml` (same output as for `getPageSource` command, the default value), `json` (the same tree structure as for the `xml` format, but represented as JSON) and `description` (native `debugDescription` output generated by XCTest). An optional `excludedAttributes` array allows to provide attributes names, which are going to be excluded from the resulting xml tree. This might significantly improve the performance of page source retrieval, especially if the `visible` attribute gets excluded. | `{format, excludedAttributes}` | `{format: 'description'}` `{format: 'xml', excludedAttributes: ['visible']}` | -| mobile:activeAppInfo | Gets current active application's information such as bundleId and process arguments | | | -| mobile:deviceInfo | Gets device information like locale and timezone. The timezone is TZ database format like `America/New_York` by default, fallback to Apple name like `US/New_York` | | | -| mobile:rotateElement | Sends a rotation gesture with two touches to the given element. See [rotate:withVelocity:](https://developer.apple.com/documentation/xctest/xcuielement/1618665-rotate) for more details. | `{element, rotation, velocity}` | `{element: 2, rotation: π/2, velocity: 1.5}` | -| mobile:deleteFile | Delete a file on the device under test. The remote path value should comply to [Pushing/Pulling Files](/docs/en/writing-running-appium/ios/ios-xctest-file-movement.md) tutorial. | `{remotePath}` | `{remotePath: 'path/to/file'}` | -| mobile:deleteFolder | Delete a folder on the device under test. The remote path value should comply to [Pushing/Pulling Files](/docs/en/writing-running-appium/ios/ios-xctest-file-movement.md) tutorial. | `{remotePath}` | `{remotePath: '@io.appium.example:documents/path/to/folder'}` | -| mobile:getPermission | Gets application permission state on a simulator. It requires https://github.com/wix/AppleSimulatorUtils ||| -| mobile:setPermission | Set a permission for the given bundleId via `xcrun simctl privacy` which is available since Xcode 11.4. `key` is 'service' in the list of `xcrun simctl privacy`. `value` is `yes`(grant), `no`(revoke) or `unset`(reset). It works on simulator. | `{bundleId, {key: value}}`| `{bundleId: 'io.appium.example', {'location-always': 'yes', calendar: 'no'}` | -| mobile:getAppearance | Get the device's UI appearance style via `xcrun simctl ui`. It returns `light`, `dark`, `unknown` or `unsupported` (below iOS 12). ||| -| mobile:setAppearance | Set the device's UI appearance style via `xcrun simctl ui` or Siri command. | `{style}` | `{style: 'dark'}` | -| mobile:getDeviceTime | Get time of the device under test. https://momentjs.com/docs/ is the full list of supported datetime format specifiers. Defaults to `YYYY-MM-DDTHH:mm:ssZ` which is ISO-8601. | `{format}` | `{format: 'YYYY-MM'}` | -| mobile:startAudioRecording | Start recording audio stream. Read [Audio Capture From iOS Simulators and Real Devices](/docs/en/writing-running-appium/ios/audio-capture.md) for more details | | | -| mobile:stopAudioRecording | Stop and store the recording audio stream. Read [Audio Capture From iOS Simulators and Real Devices](/docs/en/writing-running-appium/ios/audio-capture.md) for more details | | | - -### Android -| Command | Description | Argument | Argument Example | -| ------- | ----------- | -------- | ---------------- | -| mobile:shell | Execute [ADB shell](https://developer.android.com/studio/command-line/adb#shellcommands) commands (requires [insecure feature](/docs/en/writing-running-appium/security.md) `adb_shell` to be enabled) | Read [this page](/docs/en/writing-running-appium/android/android-shell.md) | `{'command': 'echo', 'args': ['arg1', 'arg2']}` | -| mobile:startLogsBroadcast | Starts Android logcat broadcast websocket on the same host and port where Appium is running at `/ws/session/:sessionId:/appium/device/logcat` endpoint | | | -| mobile:stopLogsBroadcast | Stops the logcat broadcasting websocket server started by `mobile:startLogsBroadcast` | | | -| mobile:performEditorAction | Performs the given editor action on the focused input field. The following action names are supported: `normal, unspecified, none, go, search, send, next, done, previous`. | `{action}` | `{action: "previous"}`| -| mobile:getPermissions | Gets a list of permissions which are `denied`, `granted` or `requested`. | `{type, appPackage}` | `{type: "granted", appPackage: "io.appium.android.apis"}`| -| mobile:changePermissions | Grants or revokes permissions. | `{action, appPackage, permissions}` | `{action: "grant", appPackage: "io.appium.android.apis", permissions: "android.permission.READ_CONTACTS"}`, `{action: "revoke", appPackage: "io.appium.android.apis", permissions: ["android.permission.READ_CONTACTS", "android.permission.CAMERA"]}` | -| mobile:getNotifications | Get the list of items as JSON format in the status bar notifications. Please turn 'Notification access' on via _Settings > App & notifications > Special app access_ (the actual path depends on the device model). Please read [Appium Pro](https://appiumpro.com/editions/106-retrieving-status-bar-notifications-for-android-devices) for more details. | | | -| mobile: listSms | Get the list of SMS messages as [JSON format](https://github.com/appium/io.appium.settings#sms). | | | -| mobile:type | Send Unicode text to a focused element. | `{text}` | `{text: "happy testing"}` | -| mobile:getDeviceTime | Get time of the device under test. https://momentjs.com/docs/ is the full list of supported datetime format. Defaults to `YYYY-MM-DDTHH:mm:ssZ` which is ISO-8601. | `{format}` | `{format: 'YYYY-MM'}` | -| mobile:deleteFile | Delete a file on the device under test. The remote path value should be the full path or a file inside an application bundle. | `{remotePath}` | `{remotePath: '@io.appium.example/path/in/bundle'}`, `{remotePath: '/tmp/data/file'}` | -| mobile:startService | Starts the given service by calling `am start-service` or `am start-foreground-service` under the hood since Appium 1.18.0. The `intent` argument is mandatory. `user` is the ID of the user the service should be started for (the current user ID is used by default). If `foreground` is set to `true` then the service will be started in foreground. | `{intent, user, foreground}` | `{intent: 'my.app/my.activity', foreground: true}` | -| mobile:stopService | Stops the given service by calling `am stop-service` under the hood since Appium 1.18.0. The `intent` argument is mandatory. `user` is the ID of the user the service should be stopped for (the current user ID is used by default). | `{intent, user}` | `{intent: 'my.app/my.activity'}` | -| mobile:getContexts | Retrieve available contexts, along with details associated with each webview (see [get contexts](/docs/en/commands/context/get-contexts.md)) in JSON structure. The details of each webview includes such as android package name and its window handles details (see [get handles](/docs/en/commands/web/window/get-handles.md)). The details of each window handle (which donated as `pages` in the JSON) contains such as url, title and id. The id is part of a window handle name. Therefore, by concatenating a string like "CDwindow-" + id, you can use the string for switching to window (see [set window](/docs/en/commands/web/window/set-window.md).) | | | - -### Android (UiAutomator2 only) -| Command | Description | Argument | Argument Example | -| ------- | ----------- | -------- | ---------------- | -| mobile:batteryInfo | Reads the battery information from the device under test | | | -| mobile:acceptAlert | Accepts an on-screen alert | Optional button label to click on | | -| mobile:dismissAlert | Dismisses an on-screen alert | Optional button label to click on | | -| mobile:scrollBackTo | Scroll from one element to another | `{elementId, elementToId}` | `{elementId: 2, elementToId: 1}` | -| mobile:scroll | Scroll the given scrollable element until the element identifier by `strategy` and `selector` becomes visible since Appium 1.18.0. An optional `maxSwipes` property can limit the number of scroll actions. It accepts an optional `element` property which should be the element identifier and scrollable. Without this property, Appium will select the first currently available scrollable container. Please read `mobileScroll` section in [appium-uiautomator2-driver](https://github.com/appium/appium-uiautomator2-driver/blob/master/lib/commands/general.js) for more details. | `{element, strategy, selector, maxSwipes}` | `{strategy: 'accessibility id', selector: 'target content description'}` | -| mobile:viewportScreenshot | Like [screenshot](/commands/session/screenshot/) but only includes contents of viewport | | | -| mobile:viewportRect | Returns the coordinates and size of the viewports since Appium 1.18.0. The return type is Rectangle defined in [general.js](https://github.com/appium/appium-uiautomator2-driver/blob/master/lib/commands/general.js).| | | -| mobile:deepLink | Opens a deep-link URL for testing [Instant Apps](https://support.google.com/googleplay/answer/7240211?hl=en) | `{url, package}` | `{url: "https://www.site.com/", package: "com.site.SomeAndroidPackage"}` | -| mobile:deviceInfo | Gets device information like manufacturer, model, timezone and locale. Read [GetDeviceInfo](https://github.com/appium/appium-uiautomator2-server/blob/master/app/src/main/java/io/appium/uiautomator2/handler/GetDeviceInfo.java) for more details. | | | -| mobile:type | Types the given Unicode string into focused field. The combination of `unicodeKeyboard` capability and the [send keys](https://appium.io/docs/en/commands/element/actions/send-keys/) works as _replacing_ the text field content. The send key in W3C action works only for ASCII. This command helps such cases to append unicode text content against the focused field. | `{text}` | `{text: 'happy testing'}` | -| mobile:longClickGesture | Refer to [Automating Mobile Gestures With UiAutomator2 Backend](/docs/en/writing-running-appium/android/android-mobile-gestures.md##mobile-longclickgesture) since Appium 1.19.0 | | | -| mobile:dragGesture | Refer to [Automating Mobile Gestures With UiAutomator2 Backend](/docs/en/writing-running-appium/android/android-mobile-gestures.md##mobile-draggesture) since Appium 1.19.0 | | | -| mobile:flingGesture | Refer to [Automating Mobile Gestures With UiAutomator2 Backend](/docs/en/writing-running-appium/android/android-mobile-gestures.md##mobile-flinggesture) since Appium 1.19.0 | | | -| mobile:pinchOpenGesture | Refer to [Automating Mobile Gestures With UiAutomator2 Backend](/docs/en/writing-running-appium/android/android-mobile-gestures.md##mobile-pinchopengesture) since Appium 1.19.0 | | | -| mobile:pinchCloseGesture | Refer to [Automating Mobile Gestures With UiAutomator2 Backend](/docs/en/writing-running-appium/android/android-mobile-gestures.md##mobile-pinchclosegesture) since Appium 1.19.0 | | | -| mobile:swipeGesture | Refer to [Automating Mobile Gestures With UiAutomator2 Backend](/docs/en/writing-running-appium/android/android-mobile-gestures.md##mobile-swipegesture) since Appium 1.19.0 | | | -| mobile:scrollGesture | Refer to [Automating Mobile Gestures With UiAutomator2 Backend](/docs/en/writing-running-appium/android/android-mobile-gestures.md##mobile-scrollgesture) since Appium 1.19.0 | | | - -### Android (Espresso only) -| Command | Description | Argument | Argument Example | -| ------- | ----------- | -------- | ---------------- | -| mobile:swipe | Perform the ["swipe" view action](https://developer.android.com/reference/android/support/test/espresso/action/ViewActions.html#swipeDown()) | `{element, direction}` | `{element: 2, direction: "down|up|left|right"}` | -| mobile:swipe | Perform ["GeneralSwipeAction"](https://developer.android.com/reference/androidx/test/espresso/action/GeneralSwipeAction) | `{element, swiper, startCoordinates, endCoordinates, precisionDescriber}` | `{element: 3, swiper: "FAST|SLOW", startCoordinates: 'BOTTOM_RIGHT', endCoordinates: 'TOP_RIGHT', precisionDescriber: 'FINGER'}` | -| mobile:clickAction | Perform ["ClickAction"](https://developer.android.com/reference/androidx/test/espresso/action/GeneralClickAction) | `{element, tapper, coordinatesProvider, precisionDescriber, inputDevice, buttonState}` | `{element: 2, tapper: 'Long', coordinatesProvider: 'BOTTOM_RIGHT', precisionDescriber: 'Thumb', inputDevice: 0, buttonState: 0}` | -| mobile:isToastVisible | Check whether a toast message is visible. `text` is the mandatory argument. `isRegexp` is optional. `text` will be parsed as a regular expression pattern if `isRegexp` is `true`. `isRegexp` is `false` by default. It returns `true` if the `text` exists, or `false` otherwise. | `{text, isRegexp}` | `{ text: 'A toast' }`, `{ text: '^regex$', isRegexp: true } `| -| mobile:openDrawer | Open drawer by [DrawerAction](https://developer.android.com/reference/android/support/test/espresso/contrib/DrawerActions) with [gravity](https://developer.android.com/reference/android/view/Gravity). `gravity` is option. The default is [GravityCompat.START](https://developer.android.com/reference/android/support/v4/view/GravityCompat.html#START). This method blocks until the drawer is fully open. No operation if the drawer is already open. | `{element, gravity}` | `{ element: element_id }`, `{ element: element_id, gravity: 3 }` | -| mobile:closeDrawer | Close drawer by [DrawerAction](https://developer.android.com/reference/android/support/test/espresso/contrib/DrawerActions) with [gravity](https://developer.android.com/reference/android/view/Gravity). `gravity` is option. The default is [GravityCompat.START](https://developer.android.com/reference/android/support/v4/view/GravityCompat.html#START). This method blocks until the drawer is fully closed. No operation if the drawer is already closed. | `{element, gravity}` | `{ element: element_id }`, `{ element: elementId, gravity: 3 }` | -| mobile:setDate | Set date by [PickerActions#setDate](https://developer.android.com/reference/android/support/test/espresso/contrib/PickerActions.html#setDate(int,%20int,%20int)) for [DataPicker](https://developer.android.com/reference/android/widget/DatePicker). | `{element, year, monthOfYear, dayOfMonth}` | `{element: elementId, year: 2018, monthOfYear: 12, dayOfMonth: 1}` | -| mobile:setTime | Set time by [PickerActions#setTime](https://developer.android.com/reference/android/support/test/espresso/contrib/PickerActions.html#setTime(int,%20int)) for [TimePicker](https://developer.android.com/reference/android/widget/TimePicker). | `{element, hours, minutes}` | `{element: elementId, hours: 12, minutes: 10}` | -| mobile:navigateTo | Action to [NavigationView](https://developer.android.com/reference/android/support/design/widget/NavigationView) by [NavigationViewActions#navigateTo](https://developer.android.com/reference/android/support/test/espresso/contrib/NavigationViewActions.html#navigateTo(int)). The view must be a child of a DrawerLayout, of type NavigationView, visible on screen and displayed on screen. `com.google.android.material:material` as `additionalAndroidTestDependencies` capability is necessary. | `{element, menuItemId}` | `{element: elementId, menuItemId: 1}` | -| mobile:scrollToPage | Action to [ViewPager](https://developer.android.com/reference/android/support/v4/view/ViewPager) by [ViewPagerActions](https://developer.android.com/reference/android/support/test/espresso/contrib/ViewPagerActions). `scrollTo` must be one of `first`, `last`, `left`, `right`. `scrollTo` is used by default if `scrollTo` and `scrollToPage` are provided. | `{scrollTo, scrollToPage, smoothScroll}` | `{element: elementId, scrollTo: 'left', smoothScroll: true}`, `{element: elementId, scrollToPage: 2}`| -| mobile:backdoor | Invoke arbitrary methods defined in Android app. The methods must be `public` in Java and must be `open` in Kotlin. `target` is `activity`, `application` or `element`. `methods` are methods you would like to invoke. `element` is mandatory if `target` is `element`. Read docstring of _mobileBackdoor_ method [here](https://github.com/appium/appium-espresso-driver/blob/master/lib/commands/general.js) for more details | `{target, methods, element}` | `{target: 'activity', methods: [{name: 'method1'}, {name: 'method2', args: [{value: 'hello appium', type: 'java.lang.String'}] }] }`, `{target: 'element', element: elementId, [{name: 'getTypeface'}, {name: 'isItalic'}]}` | -| mobile:flashElement | Flashes an element on the screen to visually confirm you are operating on the correct element. Can optionally set `durationMillis` (in ms) and `repeatCount` of animation| `{element, durationMillis, repeatCount}` | `{element: "1234-abcd-5678", durationMillis: 1000, repeatCount: 10}` | -| mobile:uiautomator | Drive areas which are not part of App Under Test, using uiautomator2 APIs. `strategy` can be one of: "clazz", "res", "text", "textContains", "textEndsWith", "textStartsWith","desc", "descContains", "descEndsWith", "descStartsWith" and "pkg", taken from uiautomator [By class](https://developer.android.com/reference/androidx/test/uiautomator/By). `action` can be one of: "click", "longClick", "getText", "getContentDescription", "getClassName","getResourceName", "getVisibleBounds", "getVisibleCenter", "getApplicationPackage","getChildCount", "clear", "isCheckable", "isChecked", "isClickable", "isEnabled","isFocusable", "isFocused", "isLongClickable", "isScrollable" and "isSelected", taken from uiautomator [UiObject2](https://developer.android.com/reference/androidx/test/uiautomator/UiObject2). `index` is optional, if not given, will return all matching results | `{strategy, locator, index, action}` | `{strategy: 'clazz', locator: 'android.widget.TextView', index: 2, action: "getText"}` | -| mobile:webAtoms | Runs a chain of [webatoms](https://developer.android.com/training/testing/espresso/web). `withElement` and `perform` are basic chain items. Please refer [issue](https://github.com/appium/appium-espresso-driver/pull/380) and [Sample test code](https://github.com/appium/ruby_lib_core/blob/c9062c4b744263d790c7de17263cbd4645cdefc6/test/functional/android/android/mobile_commands_test.rb#L196-L239) as references. | `{webviewElement, forceJavascriptEnabled, methodChain}` | (webdriverio) `{ webviewElement: webviewEl.value, forceJavascriptEnabled: true, methodChain: [...]}` | -| mobile:dismissAutofill | Disable autofill dialog in Android O+ | `{element}` | `{element: elementId}` | -| mobile:deviceInfo | Gets device information like manufacturer, model, timezone and locale. Read [GetDeviceInfo](https://github.com/appium/appium-espresso-driver/blob/master/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetDeviceInfo.kt) for more details. | | | -| mobile:registerIdlingResources | Registers one or more idling resources. Read [idling-resources.js](https://github.com/appium/appium-espresso-driver/blob/master/lib/commands/idling-resources.js) for more details. | `{classNames}` | `{classNames: 'com.package.MyIdlingResource1, com.package.MyIdlingResource2'}` | -| mobile:unregisterIdlingResources | Unregisters one or more idling resources. Read [idling-resources.js](https://github.com/appium/appium-espresso-driver/blob/master/lib/commands/idling-resources.js) for more details. | `{classNames}` | `{classNames: 'com.package.MyIdlingResource1, com.package.MyIdlingResource2'}` | -| mobile:listIdlingResources | Returns the list of canonical class names of currently registered idling resources. Read [idling-resources.js](https://github.com/appium/appium-espresso-driver/blob/master/lib/commands/idling-resources.js) for more details. | | | +## Android +### UiAutomator2 + +Please refer to [mobile commands](https://github.com/appium/appium-uiautomator2-driver#platform-specific-extensions) section in UiAutomator2 driver repository. + +### Espresso + +Please refer to [mobile commands](https://github.com/appium/appium-espresso-driver#platform-specific-extensions) section in Espresso driver repository. + +## IOS +### XCUITest + +Please refer to [mobile commands](https://github.com/appium/appium-xcuitest-driver#platform-specific-extensions) section in XCUITest driver repository. [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/mobile-command.yml) @@ -205,7 +94,6 @@ List of available commands: |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L102) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:execute_script) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/mobile-command.yml) diff --git a/docs/en/commands/session/back.md b/docs/en/commands/session/back.md index adebd726e24..a4894668a75 100644 --- a/docs/en/commands/session/back.md +++ b/docs/en/commands/session/back.md @@ -37,12 +37,6 @@ back ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.Navigate().Back(); @@ -77,7 +71,6 @@ driver.Navigate().Back(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L640) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Navigation:back) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/INavigation.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/back.yml) diff --git a/docs/en/commands/session/create.md b/docs/en/commands/session/create.md index 08ec3c87564..978aaa7479c 100644 --- a/docs/en/commands/session/create.md +++ b/docs/en/commands/session/create.md @@ -81,12 +81,6 @@ Appium::Driver.new(desired_caps).start_driver ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# AppiumOptions capabilities = new AppiumOptions(); @@ -133,12 +127,11 @@ Please do not forget to call [delete command](/docs/en/commands/session/delete.m |Language|Support|Documentation| |--------|-------|-------------| -|[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/server/DefaultSession.html#createSession-org.openqa.selenium.remote.server.DriverFactory-org.openqa.selenium.remote.server.Clock-org.openqa.selenium.remote.SessionId-org.openqa.selenium.Capabilities-) | +|[Java](https://github.com/appium/java-client/releases/latest)| All | [www.selenium.dev](https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/WebDriver.html) | |[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webelement.WebElement.clear) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1780) | -|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:clear) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | +|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/create.yml) diff --git a/docs/en/commands/session/delete.md b/docs/en/commands/session/delete.md index 5b67b7451f1..c85146f6371 100644 --- a/docs/en/commands/session/delete.md +++ b/docs/en/commands/session/delete.md @@ -37,12 +37,6 @@ quit ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.Quit(); @@ -77,7 +71,6 @@ driver.Quit(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L470) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:quit) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/delete.yml) diff --git a/docs/en/commands/session/events/get-events.md b/docs/en/commands/session/events/get-events.md index b52ba05e3c9..227beeac984 100644 --- a/docs/en/commands/session/events/get-events.md +++ b/docs/en/commands/session/events/get-events.md @@ -42,12 +42,6 @@ driver.log_events(['event1', 'event2']) ``` -```php -# PHP -// PHP Code here - -``` - ```csharp // C# // csharp code here @@ -82,7 +76,6 @@ driver.log_events(['event1', 'event2']) |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| None | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| None | [github.com](https://github.com/admc/wd/releases) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/appium_lib/Appium/Driver#log_event-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| None | [github.com](https://github.com/appium/php-client/releases/latest) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | [github.com](https://github.com/appium/appium) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/events/get-events.yml) @@ -113,5 +106,5 @@ A JSON hash of events like `{'commands' => [{'cmd' => 123455, ....}], 'startTime [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/events/get-events.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L597) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L608) * [add ability to retrieve log events as a new api route](https://github.com/appium/appium-base-driver/pull/365) diff --git a/docs/en/commands/session/events/log-event.md b/docs/en/commands/session/events/log-event.md index f51f4ffbb9d..1761011dda1 100644 --- a/docs/en/commands/session/events/log-event.md +++ b/docs/en/commands/session/events/log-event.md @@ -41,12 +41,6 @@ driver.log_event vendor: 'appium', event: 'funEvent' ``` -```php -# PHP -// PHP Code here - -``` - ```csharp // C# // csharp Code here @@ -89,7 +83,6 @@ This custom event feature allow users to store a custom event as the feature. |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| None | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| None | [github.com](https://github.com/admc/wd/releases) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/appium_lib/Appium/Driver#log_event-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| None | [github.com](https://github.com/appium/php-client/releases/latest) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | [github.com](https://github.com/appium/appium) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/events/log-event.yml) @@ -121,5 +114,5 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/events/log-event.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L600) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L611) * [add new route to allow logging of custom events](https://github.com/appium/appium-base-driver/pull/364) diff --git a/docs/en/commands/session/execute-driver.md b/docs/en/commands/session/execute-driver.md index d30c1635fb9..a81b55200fc 100644 --- a/docs/en/commands/session/execute-driver.md +++ b/docs/en/commands/session/execute-driver.md @@ -60,12 +60,6 @@ SCRIPT ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# // TODO C# sample @@ -135,7 +129,6 @@ The advantage of this approach of using WebdriverIO code is that you have access |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| None | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| None | | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| None | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib/master/Appium/Driver#execute_driver-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| None | | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/execute-driver.yml) diff --git a/docs/en/commands/session/geolocation/get-geolocation.md b/docs/en/commands/session/geolocation/get-geolocation.md index f8fa0e6aff6..7f51c96e434 100644 --- a/docs/en/commands/session/geolocation/get-geolocation.md +++ b/docs/en/commands/session/geolocation/get-geolocation.md @@ -37,12 +37,6 @@ location ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# Location location = driver.Location; @@ -77,7 +71,6 @@ Location location = driver.Location; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L393) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/DriverExtensions/HasLocation#set_location-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/geolocation/get-geolocation.yml) diff --git a/docs/en/commands/session/geolocation/set-geolocation.md b/docs/en/commands/session/geolocation/set-geolocation.md index 587724408ae..690d79230e8 100644 --- a/docs/en/commands/session/geolocation/set-geolocation.md +++ b/docs/en/commands/session/geolocation/set-geolocation.md @@ -37,12 +37,6 @@ set_location(121.21, 11.56, 94.23) ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.Location.Altitude = 94.23; @@ -79,7 +73,6 @@ driver.Location.Longitude = 11.56; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L407) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FDriverExtensions%2FHasLocation:set_location) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/geolocation/set-geolocation.yml) diff --git a/docs/en/commands/session/get.md b/docs/en/commands/session/get.md index 7bfd24ed36a..f175188a05b 100644 --- a/docs/en/commands/session/get.md +++ b/docs/en/commands/session/get.md @@ -37,12 +37,6 @@ session_capabilities ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# ICapabilities caps = driver.Capabilities; @@ -72,12 +66,11 @@ ICapabilities caps = driver.Capabilities; |Language|Support|Documentation| |--------|-------|-------------| -|[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/server/ActiveSessions.html#get-org.openqa.selenium.remote.SessionId-) | +|[Java](https://github.com/appium/java-client/releases/latest)| All | [www.selenium.dev](https://www.selenium.dev/selenium/docs/api/java/overview-summary.html) | |[Python](https://github.com/appium/python-client/releases/latest)| All | [appium.github.io](https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.session.Session.session) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L227) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FRemote%2FOSS%2FBridge:session_capabilities) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/get.yml) diff --git a/docs/en/commands/session/logs/get-log-types.md b/docs/en/commands/session/logs/get-log-types.md index 6f73b7ea202..8d49c37b1a9 100644 --- a/docs/en/commands/session/logs/get-log-types.md +++ b/docs/en/commands/session/logs/get-log-types.md @@ -1,7 +1,7 @@ [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/logs/get-log-types.yml) # Get available log types -Get the log for a given log type. Log buffer is reset after each request +Get available log types as a list of strings [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/logs/get-log-types.yml) ## Example Usage @@ -37,12 +37,6 @@ get_available_log_types ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# IReadOnlyCollection logTypes = driver.Manage().Logs.AvailableLogTypes; @@ -77,7 +71,6 @@ IReadOnlyCollection logTypes = driver.Manage().Logs.AvailableLogTypes; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L441) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib/Appium/Common#get_available_log_types-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/logs/get-log-types.yml) diff --git a/docs/en/commands/session/logs/get-log.md b/docs/en/commands/session/logs/get-log.md index 45b76a5bbe3..ea6663172ac 100644 --- a/docs/en/commands/session/logs/get-log.md +++ b/docs/en/commands/session/logs/get-log.md @@ -13,7 +13,7 @@ LogEntries logEntries = driver.manage().logs().get("driver"); ```python # Python -logs = driver.get_log('driver'); +logs = driver.get_log('driver') ``` @@ -37,12 +37,6 @@ get_log('driver') ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# ILogs logs = driver.Manage().Logs; @@ -77,7 +71,6 @@ ILogs logs = driver.Manage().Logs; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L455) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib/Appium/Common#get_log-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/logs/get-log.yml) diff --git a/docs/en/commands/session/orientation/get-orientation.md b/docs/en/commands/session/orientation/get-orientation.md index ac45af4af49..c31aee088c3 100644 --- a/docs/en/commands/session/orientation/get-orientation.md +++ b/docs/en/commands/session/orientation/get-orientation.md @@ -37,12 +37,6 @@ orientation ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# ScreenOrientation orientation = driver.Orientation; @@ -77,7 +71,6 @@ ScreenOrientation orientation = driver.Orientation; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2021) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/DriverExtensions/Rotatable:orientation) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/orientation/get-orientation.yml) diff --git a/docs/en/commands/session/orientation/set-orientation.md b/docs/en/commands/session/orientation/set-orientation.md index 6758b4cabe6..e5b07e766d1 100644 --- a/docs/en/commands/session/orientation/set-orientation.md +++ b/docs/en/commands/session/orientation/set-orientation.md @@ -37,12 +37,6 @@ rotation = :landscape ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.Orientation = ScreenOrientation.Landscape; @@ -77,7 +71,6 @@ driver.Orientation = ScreenOrientation.Landscape; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2042) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/DriverExtensions/Rotatable:orientation) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/AppiumDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/orientation/set-orientation.yml) diff --git a/docs/en/commands/session/screenshot.md b/docs/en/commands/session/screenshot.md index ed5de19bfe1..8e508579c1a 100644 --- a/docs/en/commands/session/screenshot.md +++ b/docs/en/commands/session/screenshot.md @@ -37,12 +37,6 @@ driver.screenshot_as(:base64) # via core_lib ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# Screenshot screenshot = driver.GetScreenshot(); @@ -85,7 +79,6 @@ the [Android FLAG_SECURE layout parameter](https://developer.android.com/referen |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1089) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Base/TakeScreenshot#screenshot_as-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/screenshot.yml) diff --git a/docs/en/commands/session/settings/get-settings.md b/docs/en/commands/session/settings/get-settings.md index da8c7dea135..8d46f297fff 100644 --- a/docs/en/commands/session/settings/get-settings.md +++ b/docs/en/commands/session/settings/get-settings.md @@ -13,7 +13,7 @@ Map settings = driver.getSettings(); ```python # Python -self.driver.get_settings +self.driver.get_settings() ``` @@ -34,15 +34,14 @@ get_settings # ruby_lib_core example @driver.get_settings +@driver.settings.get ``` -```php -// Not supported -``` - ```csharp -// Not supported +// C# +driver.Settings + ``` @@ -73,8 +72,7 @@ get_settings |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L3018) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| None | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#get_settings-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| None | | -|[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | | +|[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Android/Interfaces/IHasSettings.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/settings/get-settings.yml) ## HTTP API Specifications @@ -104,4 +102,4 @@ a JSON hash of all the currently specified settings, see [Settings API](/docs/en [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/settings/get-settings.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L587) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L598) diff --git a/docs/en/commands/session/settings/update-settings.md b/docs/en/commands/session/settings/update-settings.md index d381fa63201..50d1b850a27 100644 --- a/docs/en/commands/session/settings/update-settings.md +++ b/docs/en/commands/session/settings/update-settings.md @@ -30,19 +30,22 @@ await driver.updateSettings({nativeWebTap: true}); ```ruby # Ruby # ruby_lib example -update_settings(sample: 'value') +update_settings({'nativeWebTap' => true, 'allowInvisibleElements' => true}) # ruby_lib_core example -@driver.update_settings(sample: 'value') +@driver.update_settings({'nativeWebTap' => true, 'allowInvisibleElements' => true}) +@driver.settings.update({'nativeWebTap' => true, 'allowInvisibleElements' => true}) +@driver.settings = {'nativeWebTap' => true, 'allowInvisibleElements' => true} ``` -```php -// Not supported -``` - ```csharp -// Not supported +// C# +driver.Settings = new Dictionary() { + [AutomatorSetting.KeyInjectionDelay] = 1500, + ["nativeWebTap"] = true +}; + ``` @@ -69,12 +72,11 @@ update_settings(sample: 'value') |Language|Support|Documentation| |--------|-------|-------------| |[Java](https://github.com/appium/java-client/releases/latest)| All | [appium.github.io](https://appium.github.io/java-client/io/appium/java_client/HasSettings.html#setSetting-io.appium.java_client.Setting-java.lang.Object-) | -|[Python](https://github.com/appium/python-client/releases/latest)| None | [appium.github.io](https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.settings.Settings.update_settings) | +|[Python](https://github.com/appium/python-client/releases/latest)| All | [appium.github.io](https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.settings.Settings.update_settings) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L3032) | -|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| None | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#update_settings-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| None | | -|[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | | +|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device#update_settings-instance_method) | +|[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/blob/master/src/Appium.Net/Appium/Android/Interfaces/IHasSettings.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/settings/update-settings.yml) ## HTTP API Specifications @@ -106,4 +108,4 @@ null [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/settings/update-settings.yml) ## See Also -* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L587) +* [JSONWP Specification](https://github.com/appium/appium-base-driver/blob/master/lib/protocol/routes.js#L598) diff --git a/docs/en/commands/session/source.md b/docs/en/commands/session/source.md index f590a9a4f7d..1e833de80c7 100644 --- a/docs/en/commands/session/source.md +++ b/docs/en/commands/session/source.md @@ -37,12 +37,6 @@ page_source ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# string pageSource = driver.PageSource; @@ -87,7 +81,6 @@ and creates an XML document. Thus, getting the source can often be an expensive |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1808) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:page_source) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/source.yml) diff --git a/docs/en/commands/session/timeouts/async-script.md b/docs/en/commands/session/timeouts/async-script.md index ed6907e8b18..dcc2fa18f4e 100644 --- a/docs/en/commands/session/timeouts/async-script.md +++ b/docs/en/commands/session/timeouts/async-script.md @@ -1,7 +1,7 @@ [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/timeouts/async-script.yml) # Set Script Timeout -Set the amount of time, in milliseconds, that asynchronous scripts executed by [execute async](/docs/en/commands/session/timeouts/async-script.md) are permitted to run before they are aborted (Web context only) +Set the amount of time, in milliseconds, that asynchronous scripts executed by [execute async](/docs/en/commands/web/execute-async.md) are permitted to run before they are aborted (Web context only) [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/timeouts/async-script.yml) ## Example Usage @@ -37,12 +37,6 @@ script_timeout(5) # Ruby translates it to seconds ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# // TODO C# sample @@ -77,7 +71,6 @@ script_timeout(5) # Ruby translates it to seconds |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L699) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Timeouts#script_timeout=) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/timeouts/async-script.yml) diff --git a/docs/en/commands/session/timeouts/implicit-wait.md b/docs/en/commands/session/timeouts/implicit-wait.md index 1c7ff6a104b..ebe5e1798bb 100644 --- a/docs/en/commands/session/timeouts/implicit-wait.md +++ b/docs/en/commands/session/timeouts/implicit-wait.md @@ -37,12 +37,6 @@ manage.timeouts.implicit_wait = 5 # Ruby translates it to seconds ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30); @@ -87,7 +81,6 @@ If this command is never sent, the driver should default to an implicit wait of |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L681) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Timeouts:implicit_wait=) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/ITimeouts.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/timeouts/implicit-wait.yml) diff --git a/docs/en/commands/session/timeouts/timeouts.md b/docs/en/commands/session/timeouts/timeouts.md index a647c24c5a9..7418211e14c 100644 --- a/docs/en/commands/session/timeouts/timeouts.md +++ b/docs/en/commands/session/timeouts/timeouts.md @@ -37,12 +37,6 @@ timeout('pageLoad', 5) # Ruby translates it to seconds ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(30); @@ -82,7 +76,6 @@ The types of timeouts are 'page load', ['script'](/docs/en/commands/session/time |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L714) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/OSS/Bridge#timeout-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/ITimeouts.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/session/timeouts/timeouts.yml) diff --git a/docs/en/commands/status.md b/docs/en/commands/status.md index 42cec38a7fa..34b10f85d93 100644 --- a/docs/en/commands/status.md +++ b/docs/en/commands/status.md @@ -37,12 +37,6 @@ remote_status ``` -```php -# PHP -// TODO - -``` - ```csharp // C# // TODO @@ -86,7 +80,6 @@ Implementations may optionally include additional meta information as part of th |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L44) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/DriverExtensions/HasRemoteStatus#remote_status-instance_method) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/status.yml) diff --git a/docs/en/commands/web/execute-async.md b/docs/en/commands/web/execute-async.md index 7cf5338d431..f0ada78343e 100644 --- a/docs/en/commands/web/execute-async.md +++ b/docs/en/commands/web/execute-async.md @@ -46,12 +46,6 @@ execute_async_script("document.title") ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# // TODO C# sample @@ -65,7 +59,7 @@ The executed script is assumed to be asynchronous and must signal that is done b Asynchronous script commands may not span page loads. If an unload event is fired while waiting for a script result, an error should be returned to the client. -The script argument defines the script to execute in teh form of a function body. The function will be invoked with the provided args array and the values may be accessed via the arguments object in the order specified. The final argument will always be a callback function that must be invoked to signal that the script has finished. +The script argument defines the script to execute in the form of a function body. The function will be invoked with the provided args array and the values may be accessed via the arguments object in the order specified. The final argument will always be a callback function that must be invoked to signal that the script has finished. Arguments may be any JSON-primitive, array, or JSON object. JSON objects that define a WebElement reference will be converted to the corresponding DOM element. Likewise, any WebElements in the script result will be returned to the client as WebElement JSON objects. @@ -97,7 +91,6 @@ Arguments may be any JSON-primitive, array, or JSON object. JSON objects that de |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| None | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| None | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L182) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| None | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:execute_async_script) | -|[PHP](https://github.com/appium/php-client/releases/latest)| None | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute-async.yml) diff --git a/docs/en/commands/web/execute.md b/docs/en/commands/web/execute.md index e3fca49c23d..8b3a60293c3 100644 --- a/docs/en/commands/web/execute.md +++ b/docs/en/commands/web/execute.md @@ -43,12 +43,6 @@ execute_script("document.title") ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# // TODO C# sample @@ -94,7 +88,6 @@ For `execute` in the native context, see [Mobile Commands](/docs/en/commands/mob |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L102) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:execute_script) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute.yml) diff --git a/docs/en/commands/web/frame/parent.md b/docs/en/commands/web/frame/parent.md index 7c0769a04c6..73c58dbe0c5 100644 --- a/docs/en/commands/web/frame/parent.md +++ b/docs/en/commands/web/frame/parent.md @@ -35,12 +35,6 @@ parent_frame ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.SwitchTo().ParentFrame(); @@ -80,7 +74,6 @@ If the current context is the top level browsing context, the context remains un |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/TargetLocator:parent_frame) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteTargetLocator.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/frame/parent.yml) diff --git a/docs/en/commands/web/frame/switch.md b/docs/en/commands/web/frame/switch.md index bf005c1c64d..0cdeac7b78c 100644 --- a/docs/en/commands/web/frame/switch.md +++ b/docs/en/commands/web/frame/switch.md @@ -37,12 +37,6 @@ switch_to.frame(3) ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.SwitchTo().Frame(3); @@ -82,7 +76,6 @@ If the frame id is null, the server should switch to the page's default content |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L332) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/W3C/Bridge:switch_to_frame) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteTargetLocator.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/frame/switch.yml) diff --git a/docs/en/commands/web/navigation/back.md b/docs/en/commands/web/navigation/back.md index 4b0ff44ce84..aa3698c567b 100644 --- a/docs/en/commands/web/navigation/back.md +++ b/docs/en/commands/web/navigation/back.md @@ -37,12 +37,6 @@ back ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.Navigate().Back(); @@ -77,7 +71,6 @@ driver.Navigate().Back(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L640) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Navigation:back) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/INavigation.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/navigation/back.yml) diff --git a/docs/en/commands/web/navigation/forward.md b/docs/en/commands/web/navigation/forward.md index 5b6f6051b25..6b38eab729d 100644 --- a/docs/en/commands/web/navigation/forward.md +++ b/docs/en/commands/web/navigation/forward.md @@ -37,12 +37,6 @@ forward ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.Navigate().Forward(); @@ -77,7 +71,6 @@ driver.Navigate().Forward(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L626) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Navigation:forward) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteNavigator.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/navigation/forward.yml) diff --git a/docs/en/commands/web/navigation/go-to-url.md b/docs/en/commands/web/navigation/go-to-url.md index dc4efcd2dac..1e855474200 100644 --- a/docs/en/commands/web/navigation/go-to-url.md +++ b/docs/en/commands/web/navigation/go-to-url.md @@ -37,12 +37,6 @@ get("http://appium.io") ``` -```php -# PHP -$this->driver->get("http://appium.io"); - -``` - ```csharp // C# driver.Navigate().GoToUrl("http://appium.io"); @@ -77,7 +71,6 @@ driver.Navigate().GoToUrl("http://appium.io"); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L486) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:get) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteNavigator.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/navigation/go-to-url.yml) diff --git a/docs/en/commands/web/navigation/refresh.md b/docs/en/commands/web/navigation/refresh.md index 17ec1dcee1c..8cc4a6048c4 100644 --- a/docs/en/commands/web/navigation/refresh.md +++ b/docs/en/commands/web/navigation/refresh.md @@ -37,12 +37,6 @@ navigate.refresh ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.Navigate().Refresh(); @@ -77,7 +71,6 @@ driver.Navigate().Refresh(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L503) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Navigation:refresh) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteNavigator.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/navigation/refresh.yml) diff --git a/docs/en/commands/web/navigation/url.md b/docs/en/commands/web/navigation/url.md index f9fa21506fa..0ff6e0609a8 100644 --- a/docs/en/commands/web/navigation/url.md +++ b/docs/en/commands/web/navigation/url.md @@ -37,12 +37,6 @@ current_url ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# string url = driver.Url; @@ -77,7 +71,6 @@ string url = driver.Url; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1943) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:current_url) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWebDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/navigation/url.yml) diff --git a/docs/en/commands/web/storage/delete-all-cookies.md b/docs/en/commands/web/storage/delete-all-cookies.md index 2bc420b9a26..b5503800091 100644 --- a/docs/en/commands/web/storage/delete-all-cookies.md +++ b/docs/en/commands/web/storage/delete-all-cookies.md @@ -37,12 +37,6 @@ manage.delete_all_cookies ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.Manage().Cookies.DeleteAllCookies(); @@ -76,8 +70,7 @@ driver.Manage().Cookies.DeleteAllCookies(); |[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webdriver.WebDriver.delete_all_cookies) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1993) | -|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.selenium.dev](https://www.selenium.dev/documentation/en/support_packages/working_with_cookies/#delete-all-cookies) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | +|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Manager#delete_all_cookies-instance_method) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteCookieJar.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/storage/delete-all-cookies.yml) diff --git a/docs/en/commands/web/storage/delete-cookie.md b/docs/en/commands/web/storage/delete-cookie.md index 8543be2e1e0..c3d790cee07 100644 --- a/docs/en/commands/web/storage/delete-cookie.md +++ b/docs/en/commands/web/storage/delete-cookie.md @@ -37,12 +37,6 @@ delete_cookie("cookie_name") ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.Manage().Cookies.DeleteCookieNamed("cookie_name"); @@ -76,8 +70,7 @@ driver.Manage().Cookies.DeleteCookieNamed("cookie_name"); |[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webdriver.WebDriver.delete_cookie) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L2007) | -|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.selenium.dev](https://www.selenium.dev/documentation/en/support_packages/working_with_cookies/#delete-cookie) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | +|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Manager#delete_cookie-instance_method) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteCookieJar.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/storage/delete-cookie.yml) diff --git a/docs/en/commands/web/storage/get-all-cookies.md b/docs/en/commands/web/storage/get-all-cookies.md index 3ad870cb1ec..fcd31e15d92 100644 --- a/docs/en/commands/web/storage/get-all-cookies.md +++ b/docs/en/commands/web/storage/get-all-cookies.md @@ -37,12 +37,6 @@ manage.all_cookies ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# IEnumerable allCookies = driver.Manage().Cookies.AllCookies; @@ -76,8 +70,7 @@ IEnumerable allCookies = driver.Manage().Cookies.AllCookies; |[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webdriver.WebDriver.get_cookies) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1957) | -|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.selenium.dev](https://www.selenium.dev/documentation/en/support_packages/working_with_cookies/#get-all-cookies) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | +|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Manager#all_cookies-instance_method) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteCookieJar.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/storage/get-all-cookies.yml) diff --git a/docs/en/commands/web/storage/set-cookie.md b/docs/en/commands/web/storage/set-cookie.md index baa94b7369d..6e2a0ac4837 100644 --- a/docs/en/commands/web/storage/set-cookie.md +++ b/docs/en/commands/web/storage/set-cookie.md @@ -40,12 +40,6 @@ manage.add_cookie(:name => 'foo', :value => 'bar') ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.Manage().Cookies.AddCookie(new Cookie("foo", "bar")); @@ -79,8 +73,7 @@ driver.Manage().Cookies.AddCookie(new Cookie("foo", "bar")); |[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webdriver.WebDriver.add_cookie) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1971) | -|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.selenium.dev](https://www.selenium.dev/documentation/en/support_packages/working_with_cookies/#add-cookie) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | +|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Manager#add_cookie-instance_method) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteCookieJar.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/storage/set-cookie.yml) diff --git a/docs/en/commands/web/window/close-window.md b/docs/en/commands/web/window/close-window.md index c01cb7759e7..e92cdf43e45 100644 --- a/docs/en/commands/web/window/close-window.md +++ b/docs/en/commands/web/window/close-window.md @@ -37,12 +37,6 @@ close ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.Close(); @@ -77,7 +71,6 @@ driver.Close(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L260) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:close) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWebDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/window/close-window.yml) diff --git a/docs/en/commands/web/window/get-handle.md b/docs/en/commands/web/window/get-handle.md index 6b863229cc8..d0614fe480b 100644 --- a/docs/en/commands/web/window/get-handle.md +++ b/docs/en/commands/web/window/get-handle.md @@ -37,12 +37,6 @@ window_handle ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# string windowHandle = driver.CurrentWindowHandle; @@ -77,7 +71,6 @@ string windowHandle = driver.CurrentWindowHandle; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L365) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:window_handle) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWebDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/window/get-handle.yml) diff --git a/docs/en/commands/web/window/get-handles.md b/docs/en/commands/web/window/get-handles.md index 46c16a36b60..1df1a81b009 100644 --- a/docs/en/commands/web/window/get-handles.md +++ b/docs/en/commands/web/window/get-handles.md @@ -37,12 +37,6 @@ window_handles ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# IEnumerable windowHandles = driver.WindowHandles; @@ -77,7 +71,6 @@ IEnumerable windowHandles = driver.WindowHandles; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L379) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:window_handles) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWebDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/window/get-handles.yml) diff --git a/docs/en/commands/web/window/get-window-position.md b/docs/en/commands/web/window/get-window-position.md index 55b947d26b7..6767dfa3622 100644 --- a/docs/en/commands/web/window/get-window-position.md +++ b/docs/en/commands/web/window/get-window-position.md @@ -41,12 +41,6 @@ window_position("handleName") ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# Point windowPosition = driver.Manage().Window.Position; @@ -81,7 +75,6 @@ Point windowPosition = driver.Manage().Window.Position; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L586) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/W3C/Bridge:window_position) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWindow.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/window/get-window-position.yml) diff --git a/docs/en/commands/web/window/get-window-size.md b/docs/en/commands/web/window/get-window-size.md index 9dd6d83e108..01b4cc66bfe 100644 --- a/docs/en/commands/web/window/get-window-size.md +++ b/docs/en/commands/web/window/get-window-size.md @@ -41,12 +41,6 @@ window_size("handleName") ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# Size windowSize = driver.Manage().Window.Size; @@ -81,7 +75,6 @@ Size windowSize = driver.Manage().Window.Size; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L546) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/W3C/Bridge:window_size) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWindow.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/window/get-window-size.yml) diff --git a/docs/en/commands/web/window/maximize-window.md b/docs/en/commands/web/window/maximize-window.md index 7344157921b..1a9ccb9a7fa 100644 --- a/docs/en/commands/web/window/maximize-window.md +++ b/docs/en/commands/web/window/maximize-window.md @@ -38,12 +38,6 @@ maximize_window ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.Manage().Window.Maximize(); @@ -78,7 +72,6 @@ driver.Manage().Window.Maximize(); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L517) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Window:maximize) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWindow.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/window/maximize-window.yml) diff --git a/docs/en/commands/web/window/set-window-position.md b/docs/en/commands/web/window/set-window-position.md index c0afe0237a3..5550bd53e50 100644 --- a/docs/en/commands/web/window/set-window-position.md +++ b/docs/en/commands/web/window/set-window-position.md @@ -38,12 +38,6 @@ reposition_window(10, 10) ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.Manage().Window.Position = new Point(10, 10); @@ -78,7 +72,6 @@ driver.Manage().Window.Position = new Point(10, 10); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L604) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/W3C/Bridge:reposition_window) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWindow.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/window/set-window-position.yml) diff --git a/docs/en/commands/web/window/set-window-size.md b/docs/en/commands/web/window/set-window-size.md index e784473c6f4..6c0f23c2e62 100644 --- a/docs/en/commands/web/window/set-window-size.md +++ b/docs/en/commands/web/window/set-window-size.md @@ -38,12 +38,6 @@ resize_to(10, 10) ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.Manage().Window.Size = new Size(10, 10); @@ -78,7 +72,6 @@ driver.Manage().Window.Size = new Size(10, 10); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L564) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/W3C/Bridge:maximize_window) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWindow.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/window/set-window-size.yml) diff --git a/docs/en/commands/web/window/set-window.md b/docs/en/commands/web/window/set-window.md index 055e27a6503..c755627fc8c 100644 --- a/docs/en/commands/web/window/set-window.md +++ b/docs/en/commands/web/window/set-window.md @@ -37,12 +37,6 @@ switch_to.window("handle") ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# driver.SwitchTo().Window("handle"); @@ -77,7 +71,6 @@ driver.SwitchTo().Window("handle"); |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L317) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Remote/W3C/Bridge:switch_to_window) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteTargetLocator.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/window/set-window.yml) diff --git a/docs/en/commands/web/window/title.md b/docs/en/commands/web/window/title.md index 23dedc60fa5..8be7642f01f 100644 --- a/docs/en/commands/web/window/title.md +++ b/docs/en/commands/web/window/title.md @@ -37,12 +37,6 @@ title ``` -```php -# PHP -// TODO PHP sample - -``` - ```csharp // C# string title = driver.Title; @@ -77,7 +71,6 @@ string title = driver.Title; |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1794) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:title) | -|[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWebDriver.cs) | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/window/title.yml) diff --git a/docs/en/contributing-to-appium/appium-from-source.md b/docs/en/contributing-to-appium/appium-from-source.md index 51d98befc1a..b7973d5689d 100644 --- a/docs/en/contributing-to-appium/appium-from-source.md +++ b/docs/en/contributing-to-appium/appium-from-source.md @@ -11,7 +11,7 @@ request; for more information on how to run tests, keep reading! Appium is written in JavaScript, and run with the [Node.js](https://nodejs.org/) engine. Currently version 6+ is supported. While Node.js can be installed globally on the system, a version manager is _highly_ recommended. -* NVM - [https://github.com/creationix/nvm](https://github.com/creationix/nvm) +* NVM - [https://github.com/nvm-sh/nvm](https://github.com/nvm-sh/nvm) * N - [https://github.com/tj/n](https://github.com/tj/n) Your Node.js installation will include the [NPM](https://www.npmjs.com/) package manager, which Appium @@ -64,29 +64,6 @@ node . See [the server documentation](/docs/en/writing-running-appium/server-args.md) for a full list of command line arguments that can be used. -#### Hacking with Appium for iOS - -To avoid a security dialog that may appear when launching your iOS apps you'll -have to modify your `/etc/authorization` file in one of two ways: - -1. Manually modify the element following `` under `system.privilege.taskport` - in your `/etc/authorization` file to ``. - -2. Run the following command which automatically modifies your - `/etc/authorization` file for you: - - ``` - sudo npm run authorize-ios - ``` - -At this point, run: - -``` -rm -rf node_modules && rm -rf package-lock.json && npm install -``` - -Now your Appium instance is ready to go. Run `node .` to kick up the Appium server. - #### Hacking with Appium for Android To work on Android, make sure you have `ant`, `maven`, and `adb` installed diff --git a/docs/en/contributing-to-appium/appium-packages.md b/docs/en/contributing-to-appium/appium-packages.md index fcd2e744575..6c5affae8bd 100644 --- a/docs/en/contributing-to-appium/appium-packages.md +++ b/docs/en/contributing-to-appium/appium-packages.md @@ -202,7 +202,7 @@ - node binary check ## appium-gulp-plugins -- dev package with custom plugins used accross appium modules (for Appium development only) +- dev package with custom plugins used across appium modules (for Appium development only) - contains task for - e2e and unit tests (with coverage reporting) - transpiling ES2016 into ES5 diff --git a/docs/en/contributing-to-appium/developers-overview.md b/docs/en/contributing-to-appium/developers-overview.md index 5527cb21de8..18176bfeec0 100644 --- a/docs/en/contributing-to-appium/developers-overview.md +++ b/docs/en/contributing-to-appium/developers-overview.md @@ -139,7 +139,7 @@ for e2e test files to end in `-e2e-specs.js`. The release process for any Appium module other than the main Appium package is pretty straightforward (note that you will need to be an NPM owner for the package if you want to publish it. Ownership is managed by the Appium -committers; talk to @jlipps or @imurchie if you believe you should be an owner +committers; talk to @jlipps, @kazucocoa, @dang, @mykola-mokhnach if you believe you should be an owner and are not): 1. `rm -rf node_modules && rm -rf package-lock.json && npm install` and run tests to make sure a clean install works. @@ -149,7 +149,7 @@ and are not): 1. Push the appropriate branch to GitHub, and don't forget to include the `--tags` flag to include the tag just created by `npm version`. 1. Run `npm publish` (with `--tag beta` if this isn't an official release). -For the main Appium packages, all the above steps must be taken, but with +For the main Appium package, all the above steps must be taken, but with several changes. One reason is that for the main package we use NPM shrinkwrap to ensure dependencies don't change between installations. Another reason is that we develop on master and release on various branches. The way it works is @@ -177,18 +177,4 @@ checked in to GitHub along with changes to `package.json`. With npm 5+ there is also a `package-lock.json` file produced. During the shrinkwrap process this is converted into the `npm-shrinkwrap.json` file. -1. Remove the NPM shrinkwrap and package-lock JSON files if they exists. -1. `rm -rf node_modules && npm install` and run tests to make sure a clean install works. -1. Determine whether we have a `patch` (bugfix), `minor` (feature), or `major` (breaking) release according to the principles of SemVer. -1. Update `package.json` with the appropriate new version. -1. Update the CHANGELOG/README with appropriate changes and submit for review as a PR, along with shrinkwrap and `package.json` changes. Wait for it to be merged, then pull it into the release branch. -1. Run `npm shrinkwrap` to generate the `npm-shrinkwrap.json` -1. Create a tag of the form `v` on the release branch (usually a minor branch like `1.5` or `1.4`), with: `git tag -a v`, e.g., `git tag -a v1.5.0`, `git tag -a v1.5.0-rc.1`. This is not necessary for beta versions. -1. Push the tag to upstream: `git push --tags ` -1. Run `npm publish` (with `--tag rc` if this isn't a GA release). -1. Remove the NPM shrinkwrap JSON file from Git and push the changes -1. Update the site docs by going to https://github.com/appium/appium.io/pulls and merging the latest pull request that was opened by the Triager bot. Close any other pull requests opened by Triager bot. -1. Create a new release on GitHub: go to `https://github.com/appium/appium/releases/tag/v` and hit "Edit Tag". Make the release name `` (e.g., `2.0.5`), then paste in the changelog (but not the changelog header for this version). If it's a beta release, mark as pre-release. -1. Create a new post on discuss.appium.io announcing the release. Post it in the "News" category. Paste in the changelog and any choice comments. Pin it and unpin the previous release post. -1. Begin process of releasing `appium-desktop`. -1. Notify @jlipps to so he can tweet a link to the discuss post. +Follow directions in [Release Appium Doc](/docs/en/contributing-to-appium/release-appium.md) diff --git a/docs/en/contributing-to-appium/release-appium.md b/docs/en/contributing-to-appium/release-appium.md new file mode 100644 index 00000000000..f51aaa136f5 --- /dev/null +++ b/docs/en/contributing-to-appium/release-appium.md @@ -0,0 +1,46 @@ +# Releasing Appium +Appium follows the GitLab flow approach. Releases are made on release branches that have the format `releases/x.y` where `x` is a major version and `y` is a minor version. The main Appium repository doesn't strictly follow semver (unlike the dependencies of Appium). A minor release (e.g.: `1.20.0`) means that we're creating a new release that has a newly created set of dependencies that are shrinkwrapped to the latest. A patch release (e.g.: `1.20.4`) isn't strictly a "patch", but just means that we're making an intermediary release that brings in small changes. For example, suppose I have a new version of `appium-xcuitest-driver` that I want to publish and it can't wait until the next minor release. To bring in that change, I would checkout the release branch (e.g.: `git checkout releases/1.20`); install the dependency (`npm install appium-xcuitest-driver@version && git commit -a -m 'bump appium-xcuitest-driver to version $version`); release a "release candidate" (see below) and then when it's ready, graduate the "release candidate" to general availability + +## Create a release branch +1. `bash ./scripts/release-branch.sh x.y` where `x` is the major version and `y` is the minor version (example: `bash ./scripts/release-branch.sh 1.20`) + * This will create: + * A release branch `releases/1.20` + * A git tag `v1.20.0-rc.0` + * Publish a NPM package `1.20.0-rc.0` as a release candidate +1. Create a changelog pull request + +## Create a release candidate +1. Checkout the release branch (e.g.: `git checkout releases/1.21 && git pull origin releases/1.21`) +1. `bash ./scripts/release.sh rc` + +## Publish to GA +1. Checkout the release branch (e.g.: `git checkout releases/1.21 && git pull origin releases/1.21`) +1. `bash ./scripts/release-latest.sh 1.21.0` + - The `1.21.0` must be proper version name +1. Update the site docs by going to https://github.com/appium/appium.io/pulls and merging the latest pull request that was opened by the Triager bot. Close any other pull requests opened by Triager bot. +1. Create a new release on GitHub: go to `https://github.com/appium/appium/releases/tag/v` and hit "Edit Tag". Make the release name `` (e.g., `2.0.5`), then paste in the changelog (but not the changelog header for this version). If it's a beta release, mark as pre-release. + - Please check _Create a discussion for this release_ and select _Release_ category +1. Create a new post on discuss.appium.io announcing the release. Post it in the "News" category. Paste in the changelog and any choice comments. Pin it and unpin the previous release post. +1. Begin process of releasing `appium-desktop`. +1. Notify @jlipps to so he can tweet a link to the discuss post. +1. Create the next beta + 1. Bump the `version` name in `package.json` for the next beta on the main branch. e.g. `1.22.0-beta.0` + 2. Commit the change without a tag, + 3. Push the version as `npm publish --tag beta`. + +# Troubleshooting + +## When you publish a version to a wrong channel + +For example, you accidentally pusbed `rc` version into the `latest` channel. +Then, you could add the `deprecated` label to this version , and re-tag the previous stable version in order to keep the stable one via `npm install`. +`dist-tag` command helps to achieve that. + +``` +$ npm deprecate appium@1.21.0-rc.0 "this release should be in rc channel" --tag=latest +$ npm dist-tag add appium@1.20.2 latest +``` + +You can confirm if the above step works by calling `npm install -g appium`. +Once you can install `appium@1.20.2`, the above step worked. +(You may need to wait for a few minutes because of npm caching.) diff --git a/docs/en/drivers/android-espresso.md b/docs/en/drivers/android-espresso.md index 5ce6fe8c28a..209ee7c853a 100644 --- a/docs/en/drivers/android-espresso.md +++ b/docs/en/drivers/android-espresso.md @@ -20,6 +20,7 @@ In addition to Appium's general requirements: * Java 8 installed and configured correctly for your platform * Mac, Windows, or Linux OS with the ability to run the Android SDK + * The minimum required Android SDK Build Tools version is 24 ### Usage diff --git a/docs/en/drivers/android-uiautomator2.md b/docs/en/drivers/android-uiautomator2.md index fbf349ee0b7..f70877c8b6d 100644 --- a/docs/en/drivers/android-uiautomator2.md +++ b/docs/en/drivers/android-uiautomator2.md @@ -19,6 +19,7 @@ In addition to Appium's general requirements: * Java 8 installed and configured correctly for your platform * Mac, Windows, or Linux OS with the ability to run the Android SDK + * The minimum required Android SDK Build Tools version is 24 Further, the UiAutomator2 driver does not support Android versions below 5.0 (Lollipop, API level 21). If you are automating such versions, consider using diff --git a/docs/en/drivers/ios-uiautomation.md b/docs/en/drivers/ios-uiautomation.md index 1f33fbd6d6a..00255d37c4b 100644 --- a/docs/en/drivers/ios-uiautomation.md +++ b/docs/en/drivers/ios-uiautomation.md @@ -55,32 +55,6 @@ Reference](#TODO). simulator may be open, and automated, at any given time. For multiple simulator support, you will need to upgrade to the [XCUITest driver](ios-xcuitest.md)). -1. To allow the iOS simulator to be automated by Instruments, you need to - modify the authorization database for the system. Appium provides an easy - way to do this by installing and running an authorization script: - - ``` - sudo authorize-ios - ``` - -1. By default, Instruments-based automation is limited by the inclusion of - a 1-second hard-coded delay between commands, implemented for obscure - reasons by Apple's engineers. There is a way around this limitation called - [instruments-without-delay](https://github.com/facebookarchive/instruments-without-delay) - (IWD). IWD ships with Appium for Xcode versions < 7. For 7.x and up, IWD - must be installed manually by the user in advance of using Appium. The way - to do this is as follows: - - * Clone the [appium-ios-driver](https://github.com/appium/appium-ios-driver) - repository. - * Inside the repo, run the `xcode-iwd.sh` script included in the `bin` dir, - passing it several arguments: (1) the path to the Xcode app you are - using. (2) The path to the appium-instruments directory. For example: - - ``` - sh ./bin/xcode-iwd.sh /Applications/Xcode.app /Users/me/appium-instruments/ - ``` - 1. For best results, launch each simulator you wish to use and ensure the following: * The soft keyboard is enabled (Command+K in the Simulator app) @@ -163,8 +137,7 @@ $HOME/Library/Logs/CoreSimulator/* ### Running iOS tests using Jenkins First download the `jenkins-cli.jar` and verify that the Mac successfully -connects to Jenkins master. Ensure you've run the `authorize-ios` command -mentioned above. +connects to Jenkins master. ``` wget https://jenkins.ci.cloudbees.com/jnlpJars/jenkins-cli.jar diff --git a/docs/en/drivers/ios-xcuitest-real-devices.md b/docs/en/drivers/ios-xcuitest-real-devices.md index 7d8ab312e3a..c25a2eca732 100644 --- a/docs/en/drivers/ios-xcuitest-real-devices.md +++ b/docs/en/drivers/ios-xcuitest-real-devices.md @@ -130,10 +130,12 @@ installed, and is _not_ recommended): ``` * Given this installation location, `/path/where/installed/bin/appium`, `WebDriverAgent` project will be found in `/path/where/installed/lib/node_modules/appium/node_modules/appium-webdriveragent`. - Open a terminal and go to that location, then run the following in order to - set the project up: + Open a terminal and go to the location, then run the next script. ``` mkdir -p Resources/WebDriverAgent.bundle +``` +* (Only for Appium versions below 1.20) Run the next script on the same terminal. +``` ./Scripts/bootstrap.sh -d ``` * Open `WebDriverAgent.xcodeproj` in Xcode. For **both** the `WebDriverAgentLib` @@ -173,6 +175,10 @@ If this was successful, the output should end with something like: t = 0.00s Start Test at 2017-01-23 15:49:12.588 t = 0.00s Set Up ``` +If the command fails, try passing the `-allowProvisioningUpdates` flag like this (see [#16212](https://github.com/appium/appium/issues/16212)): +``` + xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=' -allowProvisioningUpdates test +``` * To completely verify, you can try accessing the WebDriverAgent server status (**note:** you _must_ be on the same network as the device, and know its IP address, from Settings => Wi-Fi => Current Network): @@ -226,7 +232,7 @@ information about this in the [Apple documentation](https://developer.apple.com/ * A Mac with [Xcode](https://developer.apple.com/xcode/) and the Xcode Command Line Developer Tools. -Appium handles installing the application to the device, using +(Only for Appium versions below 1.15.0) Appium handles installing the application to the device, using `ideviceinstaller` (which is installed as part of `libimobiledevice`), but it is sometimes easier to pre-install your app using Xcode to ensure there are no problems (see again the [Apple @@ -243,7 +249,15 @@ for this). 1. Settings -> Safari -> Advanced -> **Web Inspector** and **Remote Automation** 1. Please read [Automating mobile web apps](/writing-running-appium/web/mobile-web) for more details about WebView 1. Consider generating a provisioning profile with `.xctrunner` identifier if you do not want to generate a wildcard one for manual configuration. The `.xctrunner` config support has been added since Xcode 11. [A reference](https://github.com/appium/appium/issues/13610) -1. Make sure the device under test is not a jaibroken one - - `com.apple.mobile.installation_proxy` service to manage Apps on the device [does not work](https://github.com/appium/appium-desktop/issues/1447) 1. Make sure the provisioning profile has [_iOS Distribution_ certificate](https://developer.apple.com/support/certificates/) - An active Xcode/xcodebuild connection/session is necessary to interact with WebDriverAgentRunner because of Apple's security design. The certificate affects the limitation ([issue](https://github.com/appium/appium/issues/14577#issuecomment-660997827)) +1. Make sure the keyboard preference in the device under test is Apple official one and the input language is set to English to send texts to `XCUIElementTypeSecureTextField` + - Non-official or non-English keyboards may not be able to send keys to `XCUIElementTypeSecureTextField`. e.g. [issues#15647](https://github.com/appium/appium/issues/15647) + +### Notice + +Appium team does not test xcuitest driver against jailbroken devices, so we cannot guaranteer it is going to work as expected as same as non-jailbroken devices. + +e.g., [`com.apple.mobile.installation_proxy` service error to manage Apps on the device](https://github.com/appium/appium-desktop/issues/1447) + +Please use it at your own risk. diff --git a/docs/en/drivers/ios-xcuitest.md b/docs/en/drivers/ios-xcuitest.md index 091f83844e3..e63137c265b 100644 --- a/docs/en/drivers/ios-xcuitest.md +++ b/docs/en/drivers/ios-xcuitest.md @@ -95,12 +95,6 @@ dependencies)_ 1. Ensure that you have Appium's general dependencies (e.g., Node & NPM) installed and configured. -2. Install the [Carthage](https://github.com/Carthage/Carthage) dependency - manager: - - ```bash - brew install carthage - ``` If you don't need to automate real devices, you're done! To automate an app on the simulator, the `app` capability should be set to an absolute path or url @@ -144,9 +138,18 @@ $HOME/Library/Developer/Xcode/DerivedData/* ``` ### Configure keyboards -Over Appium 1.14.0, Appium configures keyboard preferences by default to make test running more stable. You can change sone of them via settings API. +Over Appium 1.14.0, Appium configures keyboard preferences by default to make test running more stable. You can change some of them via settings API. - Turn `Auto-Correction` in _Keyboards_ off - Turn `Predictive` in _Keyboards_ off - Mark keyboard tutorial as complete - (Only for Simulator) Toggle software keyboard on + +### Accessibility preferences fine-tuning + +In some cases, enabling of the below preferences helps to make some view elements accessible. +Appium does not modify these settings automatically, since they could affect the way your application under test performs. +Please change them manually if needed. + +- Turn `Spoken Content` in _Settings > Accessibility_ on +- Turn `Speak Selection` in _Settings > Accessibility_ on diff --git a/docs/en/drivers/mac2.md b/docs/en/drivers/mac2.md new file mode 100644 index 00000000000..176eb5f5d0d --- /dev/null +++ b/docs/en/drivers/mac2.md @@ -0,0 +1,36 @@ +## The Mac2Driver + +Mac2Driver has been added to Appium since version 1.20. +This driver is for automating macOS applications using Apple's [XCTest](https://developer.apple.com/documentation/xctest) framework. +It provides more flexibility and features in comparison to the legacy +[MacDriver](mac.md) and is better compatible with operating system internals. +The driver operates in scope of [W3C WebDriver protocol](https://www.w3.org/TR/webdriver/) with several custom extensions to cover operating-system specific scenarios. +The original idea and parts of the source code are borrowed from the Facebook's [WebDriverAgent](https://github.com/facebookarchive/WebDriverAgent) project. + +Development of the Mac2Driver happens at the +[appium-mac2-driver](https://github.com/appium/appium-mac2-driver) repo. + + +### Requirements and Support + +In addition to Appium's general requirements: + +- macOS 10.15 or later +- Xcode 12 or later should be installed +- Xcode Helper app should be enabled for Accessibility access. The app itself could be usually found at `/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Agents/Xcode Helper.app`. In order to enable Accessibility access for it simply open the parent folder in Finder: `open /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Agents/` and drag & drop the `Xcode Helper` app to `Security & Privacy -> Privacy -> Accessibility` list of your `System Preferences`. This action must only be done once. + + +### Usage + +The way to start a session using the Mac2Driver is to include the +`automationName` capability in your new session request, with +the value `Mac2`. Of course, you must also include appropriate +`platformName` (only `Mac` is supported). Read +[Mac2Driver documentation](https://github.com/appium/appium-mac2-driver/blob/master/README.md) +for more details. + + +### Capabilities + +The list of available driver capabilities could be found in +the driver [README](https://github.com/appium/appium-mac2-driver/blob/master/README.md) file. diff --git a/docs/en/drivers/windows.md b/docs/en/drivers/windows.md index f4fe11adb43..ee08ad24823 100644 --- a/docs/en/drivers/windows.md +++ b/docs/en/drivers/windows.md @@ -114,7 +114,7 @@ capabilities entry. Below is an example of creating a test session for Windows DesiredCapabilities appCapabilities = new DesiredCapabilities(); appCapabilities.SetCapability("app", @"C:\Windows\System32\notepad.exe"); NotepadSession = new WindowsDriver(new Uri("http://127.0.0.1:4723"), appCapabilities); -// Control the AlarmClock app +// Control the Notepad app NotepadSession.FindElementByClassName("Edit").SendKeys("This is some text"); ``` diff --git a/docs/en/writing-running-appium/android/activity-startup.md b/docs/en/writing-running-appium/android/activity-startup.md index fe30b2b0421..614300c6ebb 100644 --- a/docs/en/writing-running-appium/android/activity-startup.md +++ b/docs/en/writing-running-appium/android/activity-startup.md @@ -13,6 +13,7 @@ Appium needs to know package and activity names in order to properly initialize - `appWaitActivity`: The name of the application activity to wait for/which starts the first - `appWaitPackage`: The id of the application package to wait for/which starts the first - `appWaitDuration`: The maximum duration to wait until the `appWaitActivity` is focused in milliseconds (20000 by default) +- `appWaitForLaunch`: Whether to wait until Activity Manager returns the control to the calling process. By default the driver always waits until `appWaitDuration` is expired. Setting this capability to `false` effectively cancels this wait and unblocks the server loop as soon as `am` successfully triggers the command to start the activity. All these capabilities are optional. If they are not set explicitly then Appium tries to auto detect them by reading their values from the APK manifest. Although, if the application under test is supposed to be already installed on the device (`noReset=true`) then at least `appActivity` and `appPackage` options are required to be set, since no package manifest is available in such case. If you don't set `appWaitPackage` and `appWaitActivity` explicitly then these are getting assigned to `appPackage`/`appActivity` values automatically. For more details check on the implementation of `packageAndLaunchActivityFromManifest` method in the [appium-adb](https://github.com/appium/appium-adb/blob/master/lib/tools/android-manifest.js) package. @@ -32,4 +33,8 @@ The full error description usually looks like `'java.lang.SecurityException: Per Thus exception usually indicates, that the first application activity is not the same package/activity, as it is set (or auto detected) by `appWaitPackage`/`appWaitActivity`. Such error normally happens in applications having multiple activities. In order to resolve the problem one should check with application developer regarding which activity/package is the very first one that appears on application startup. The currently focused activity name might be verified using the `adb shell dumpsys window windows` command mentioned above. Also, Appium allows to use wildcards while setting `appWaitActivity` value. This might be particularly useful if the activity name is generated dynamically or it is not the same all the time. For example `com.mycomany.*` will match any of `com.mycomany.foo`, `com.mycomany.bar`. +#### Command '…' timed out after X ms + If you've double checked that activity names are correct, but the startup still times out, then try to increase the value of `appWaitDuration` capability. Normally, the default 20 seconds is enough for the most of applications, however, some bigger apps might require more time to start and show the first activity. Please, don't create such apps. + +There might be also situations where an activity does not return the control to the calling process at all, so `am start` call blocks forever independently of the value of `appWaitDuration`, thus causing the timeout. In such case setting `appWaitForLaunch` to `false` might help to resolve the issue. Although, by choosing this option, the driver cannot make sure the activity has fully started, so then it is up to the client code to verify the initial UI state is the one that is expected. diff --git a/docs/en/writing-running-appium/android/android-appbundle.md b/docs/en/writing-running-appium/android/android-appbundle.md index a9be32e8327..dfbaf0a24e1 100644 --- a/docs/en/writing-running-appium/android/android-appbundle.md +++ b/docs/en/writing-running-appium/android/android-appbundle.md @@ -9,6 +9,7 @@ We can get distributed apk files from the `.aab` file via the CLI. Using the gen 1. Export `bundletool.jar` in your path - Appium looks for `bundletool.jar` in your local environemnt. Make sure you can find the path with `which 'bundletool.jar'`. If you can't find it, please set the path correctly. + - Please make sure the bundletool version is above 1.6.0 2. Generate the `.apks` file from the `.aab` file - The `.aab` is available over Android Studio 3.2 - You must sign correctly when you generate `.apks` from `.aab`. This step requires data signing. diff --git a/docs/en/writing-running-appium/android/android-mobile-gestures.md b/docs/en/writing-running-appium/android/android-mobile-gestures.md index 38e0aeb5b07..50ff957468c 100644 --- a/docs/en/writing-running-appium/android/android-mobile-gestures.md +++ b/docs/en/writing-running-appium/android/android-mobile-gestures.md @@ -37,6 +37,69 @@ driver.execute_script('mobile: longClickGesture', {'x': 100, 'y': 100, 'duration ``` +### mobile: doubleClickGesture + +This gesture performs double click action on the given element/coordinates. +Available since Appium v1.21 + +#### Supported arguments + + * _elementId_: The id of the element to be clicked. + If the element is missing then both click offset coordinates must be provided. + If both the element id and offset are provided then the coordinates + are parsed as relative offsets from the top left corner of the element. + * _x_: The x-offset coordinate + * _y_: The y-offset coordinate + +#### Usage examples + +```java +// Java +((JavascriptExecutor) driver).executeScript("mobile: doubleClickGesture", ImmutableMap.of( + "elementId", ((RemoteWebElement) element).getId() +)); +``` + +```python +# Python +driver.execute_script('mobile: doubleClickGesture', {'x': 100, 'y': 100}) +``` + + +### mobile: clickGesture + +This gesture performs click action on the given element/coordinates. +Available since Appium UiAutomator2 driver 1.71.0. Usage of this gesture is recommended +as a possible workaround for cases where the "native" tap call fails, +even though tap coordinates seem correct. This issue is related to the fact +these calls use the legacy UIAutomator-based calls while this extension +is based on the same foundation as W3C does. + + +#### Supported arguments + + * _elementId_: The id of the element to be clicked. + If the element is missing then both click offset coordinates must be provided. + If both the element id and offset are provided then the coordinates + are parsed as relative offsets from the top left corner of the element. + * _x_: The x-offset coordinate + * _y_: The y-offset coordinate + +#### Usage examples + +```java +// Java +driver.executeScript("mobile: clickGesture", ImmutableMap.of( + "elementId", ((RemoteWebElement) element).getId() +)); +``` + +```python +# Python +driver.execute_script('mobile: clickGesture', {'x': 100, 'y': 100}) +``` + + ### mobile: dragGesture This gesture performs drag action from the given element/coordinates to the given point. diff --git a/docs/en/writing-running-appium/android/android-shell.md b/docs/en/writing-running-appium/android/android-shell.md index 6052ceec3e5..c31c8d40a1b 100644 --- a/docs/en/writing-running-appium/android/android-shell.md +++ b/docs/en/writing-running-appium/android/android-shell.md @@ -34,4 +34,12 @@ result = driver.execute_script('mobile: shell', { 'timeout': 5000 }) assert result['stdout'] == 'arg1 arg2' -``` \ No newline at end of file +``` + +```javascript +// Javascript +const output = driver.executeScript('mobile: shell', [{ + command: 'ls', + args: ['/sdcard'], + }]); +``` diff --git a/docs/en/writing-running-appium/android/espresso-datamatcher-selector.md b/docs/en/writing-running-appium/android/espresso-datamatcher-selector.md index 3fca87d5233..00f72e441a4 100644 --- a/docs/en/writing-running-appium/android/espresso-datamatcher-selector.md +++ b/docs/en/writing-running-appium/android/espresso-datamatcher-selector.md @@ -6,7 +6,7 @@ By delegating to Espresso's [Data Matcher](https://developer.android.com/referen Android apps have special types of Views called [AdapterViews](https://developer.android.com/reference/android/widget/AdapterView) (e.g.: `ScrollView`, `ListView`, `GridView`) which have child views, but only render that child views that are on-screen. The AdapterView has "adapter" object which stores all the data for that view's children, including the views that aren't being rendered. -When using Espresso's Data Matcher, you can target views that are off-screen by writing a [Hamcrest matcher](http://hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/Matchers.html) that selects an item from an adapter. If the item is not in the view hierarchy, Espresso automatically scrolls it into view. +When using Espresso's Data Matcher, you can target views that are off-screen by writing a [Hamcrest matcher](https://junit.org/junit4/javadoc/latest/org/hamcrest/class-use/Matcher.html) that selects an item from an adapter. If the item is not in the view hierarchy, Espresso automatically scrolls it into view. ### Example diff --git a/docs/en/writing-running-appium/caps.md b/docs/en/writing-running-appium/caps.md index 89cb86985cd..37f83c80d73 100644 --- a/docs/en/writing-running-appium/caps.md +++ b/docs/en/writing-running-appium/caps.md @@ -41,7 +41,7 @@ These Capabilities span multiple drivers. |`automationName`|Which automation engine to use|`Appium` (default), or `UiAutomator2`, `Espresso`, or `UiAutomator1` for Android, or `XCUITest` or `Instruments` for iOS, or `YouiEngine` for application built with You.i Engine| |`platformName`|Which mobile OS platform to use|`iOS`, `Android`, or `FirefoxOS`| |`platformVersion`|Mobile OS version|e.g., `7.1`, `4.4`| -|`deviceName`|The kind of mobile device or emulator to use|`iPhone Simulator`, `iPad Simulator`, `iPhone Retina 4-inch`, `Android Emulator`, `Galaxy S4`, etc.... On iOS, this should be one of the valid devices returned by instruments with `instruments -s devices`. On Android this capability is currently ignored, though it remains required.| +|`deviceName`|The kind of mobile device or emulator to use|`iPhone Simulator`, `iPad Simulator`, `iPhone Retina 4-inch`, `Android Emulator`, `Galaxy S4`, etc.... On iOS, this should be one of the valid devices returned by instruments with `instruments -s devices` or xctrace with `xcrun xctrace list devices` (since Xcode 12). On Android this capability is currently ignored, though it remains required.| |`app`|The absolute local path _or_ remote http URL to a `.ipa` file (IOS), `.app` folder (IOS Simulator), `.apk` file (Android) or `.apks` file (Android App Bundle), or a `.zip` file containing one of these. Appium will attempt to install this app binary on the appropriate device first. Note that this capability is not required for Android if you specify `appPackage` and `appActivity` capabilities (see below). `UiAutomator2` and `XCUITest` allow to start the session without `app` or `appPackage`. Incompatible with `browserName`. See [here](/docs/en/writing-running-appium/android/android-appbundle.md) about `.apks` file.|`/abs/path/to/my.apk` or `http://myapp.com/app.ipa`| |`otherApps`|App or list of apps (as a JSON array) to install prior to running tests. Note that it will not work with `automationName` of `Espresso` and iOS real devices|e.g., `"/path/to/app.apk"`, `https://www.example.com/url/to/app.apk`, `["http://appium.github.io/appium/assets/TestApp9.4.app.zip", "/path/to/app-b.app"]`| |`browserName`|Name of mobile web browser to automate. Should be an empty string if automating an app instead.|'Safari' for iOS and 'Chrome', 'Chromium', or 'Browser' for Android| @@ -58,16 +58,17 @@ These Capabilities span multiple drivers. |`printPageSourceOnFindFailure`| When a find operation fails, print the current page source. Defaults to `false`.|e.g., `true`| |`clearSystemFiles`| Delete any generated files at the end of a session. Default to `false`. | `true`, `false`| -- [Update settings](#update-settings) +#### Update settings |Capability|Description|Values| |----|-----------|-------| |`settings[settingsKey]`| Update [Appium Settings](https://github.com/appium/appium/blob/master/docs/en/advanced-concepts/settings.md) on session creation. |e.g., `'settings[mjpegScalingFactor]': 10`, `'settings[shouldUseCompactResponses]': true`| -### Android Only +### Android -These Capabilities are available only on Android-based drivers (like -[UiAutomator2](/docs/en/drivers/android-uiautomator2.md) for example). +#### UIAutomator1 + +These Capabilities are available for UiAutomator1 driver. The driver is for Android 5 and lower. |Capability|Description|Values| |----|-----------|-------| @@ -139,93 +140,20 @@ These Capabilities are available only on Android-based drivers (like | `ignoreHiddenApiPolicyError` | Ignores `Security exception: Permission denial` alert and allows to continue the session creation process since Appium 1.18.0+. The error happens when Appium tries to relax [hidden API policy](https://developer.android.com/distribute/best-practices/develop/restrictions-non-sdk-interfaces#how_can_i_enable_access_to_non-sdk_interfaces), although some devices with a customized firmware deny such requests. Defaults to `false`. | `true`, `false` | | `mockLocationApp` | Sets the package identifier of the app, which is used as a system mock location provider since Appium 1.18.0+. This capability has no effect on emulators. If the value is set to `null` or an empty string, then Appium will skip the mocked location provider setup procedure. Defaults to Appium Setting package identifier (`io.appium.settings`). | e.g., `null`, `io.appium.settings`, `example.your.app` | | logcatFormat | Set the output format for logcat messages since Appium 1.18.0. Supported formats are listed in [here](https://github.com/appium/appium-adb/blob/master/lib/logcat.js). Please read [logcat#outputFormat](https://developer.android.com/studio/command-line/logcat#outputFormat) for more details about each format. Defaults to `threadtime`. | e.g., `process`| -| logcatFilterSpecs | Set the output filter rule for logcat messages since Appium 1.18.0. Please read [logcat#filteringOutput](https://developer.android.com/studio/command-line/logcat#filteringOutput) for more details about the rule. [Write and View Logs with Logcat](https://developer.android.com/studio/debug/am-logcat) is also helpful. | e.g., `['*:W', 'MyActivity:D']` (`MyActivity` is a tag)| -| allowDelayAdb | Whether enable `-delay-adb` on emulator startup. Defaults to `true` | `true`, `false` | - -#### UIAutomator (1 & 2) - -These Capabilities are available on UIA 1 and 2 - -|Capability|Description|Values| -|----|-----------|-------| +| `logcatFilterSpecs` | Set the output filter rule for logcat messages since Appium 1.18.0. Please read [logcat#filteringOutput](https://developer.android.com/studio/command-line/logcat#filteringOutput) for more details about the rule. [Write and View Logs with Logcat](https://developer.android.com/studio/debug/am-logcat) is also helpful. | e.g., `['*:W', 'MyActivity:D']` (`MyActivity` is a tag)| +| `allowDelayAdb` | Whether enable `-delay-adb` on emulator startup. Defaults to `true` | `true`, `false` | |`intentAction`| Intent action which will be used to start activity (default `android.intent.action.MAIN`)| e.g.`android.intent.action.MAIN`, `android.intent.action.VIEW`| |`intentCategory`| Intent category which will be used to start activity (default `android.intent.category.LAUNCHER`)| e.g. `android.intent.category.LAUNCHER`, `android.intent.category.APP_CONTACTS` |`intentFlags`| Flags that will be used to start activity (default `0x10200000`)| e.g. `0x10200000` |`optionalIntentArguments`| Additional intent arguments that will be used to start activity. See [Intent arguments](http://developer.android.com/reference/android/content/Intent.html) | e.g. `--esn `, `--ez `, etc. -#### UIAutomator2 Only - -These Capabilities are available only on the [UiAutomator2 Driver](/docs/en/drivers/android-uiautomator2.md) - -|Capability|Description|Values| -|----|-----------|-------| -|`appWaitForLaunch`| Tries to launch the app under test without [-W](https://developer.android.com/studio/command-line/adb#am) option in session creation. It might help when the session creation does not proceed since `shell am start` does not respond. Defaults to `true`. | `false` or `true` | -|`disableSuppressAccessibilityService`| Set [FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES](https://developer.android.com/reference/android/app/UiAutomation#FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES) to allow existing accessibility service continue to run, and a new one may start for Appium. It helps to test the app under test which has accessibility feature such as TalkBack. Appium will not specify the flag if nothing is provided. The flag requires Android API Level 24+. | `false` or `true` | -|`mjpegServerPort`| If specified this is the local port that will be bound to the `appium-uiautomator2-server`'s MJPEG screenshot stream. This can be used in conjunction with `mjpegScreenshotUrl`. It should be a valid integer in range _1025..65535_. Defaults to `null`. e.g. `mjpegScreenshotUrl = 'http://localhost:9200', mjpegServerPort = 9200`| any `Integer`, recommended: `9200..9299` for consistency w/ `serverPort` range | -|`skipServerInstallation`| Skip uiAutomator2 server installation and use uiAutomator2 server from the device. Can be used to improve startup performance when an uiAutomator2 server in proper version is already installed on the device. Defaults to `false`. | `false` or `true` | -|`uiautomator2ServerInstallTimeout`| Timeout in milliseconds used to wait for an uiAutomator2 server to be installed. Defaults to `20000` |e.g., `20000`| -|`uiautomator2ServerLaunchTimeout`| Timeout in milliseconds used to wait for an uiAutomator2 server to launch. Defaults to `20000` |e.g., `20000`| -|`userProfile`| Enforce user profile as the given parameter if the value was provided. It should be an integer. | e.g., `11` | - -#### Espresso Only - -These Capabilities are available only on the [Espresso Driver](/docs/en/drivers/android-espresso.md) +#### UIAutomator2 -|Capability|Description|Values| -|----|-----------|-------| -|`espressoServerLaunchTimeout`|Timeout in milliseconds used to wait for the Espresso server to launch. Defaults to `30000` |e.g., `50000`| -|`espressoBuildConfig`|Path to the Espresso server build configuration JSON (see below) or a stringified JSON itself (only supported since server version 1.19)|e.g., `/projects/myapp-tests/buildconfig.json`| -|`showGradleLog`|Whether to pipe Gradle build log for the Espresso server to the Appium log. Defaults to `false`|e.g., `true`| -|`skipServerInstallation`|Skip Espresso server build and apk installation. This option could break proper Espresso server setup for the particular Appium version, but it can improve startup performance when the proper Espresso server and the proper app under test are already installed on the device. Please, make sure not to enable this option if the Espresso server or the application under test needs an update. Defaults to `false` | `true` or `false`| -|`intentOptions`|Intent options which will be used to start the application under test. It can set intent options such as `action`, `categories` and `component` as JSON format. Please read [#538](https://github.com/appium/appium-espresso-driver/issues/538) as an example usage. | e.g. `{"action": "android.intent.action.MAIN", "categories": "android.intent.category.LAUNCHER", "component": "com.appium/.launcher.MainActivity"` | -|`disableSuppressAccessibilityService`| Set [FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES](https://developer.android.com/reference/android/app/UiAutomation#FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES) to allow existing accessibility service continue to run, and a new one may start for Appium. It helps to test the app under test which has accessibility feature such as TalkBack. Appium will not specify the flag if nothing is provided. The flag requires Android API Level 24+. | `true`, `false` | -|`appLocale`| Set [Locale](https://developer.android.com/reference/java/util/Locale) for [the target context](https://developer.android.com/reference/androidx/test/core/app/ApplicationProvider#getApplicationContext()) since Appium 1.18.0. `language`, `country` and `variant` are available as same as the Locale class. `language` is mandatory. Please check the [locale page](https://developer.android.com/reference/java/util/Locale) for more details. Setting `appLocale` only affects the locale of the application under test and does not influence other system views, such as the status bar. Consider setting `language`, `locale` and/or `localeScript` capabilities if you would like to change the locale for the entire the system. | e.g., `{"language": "ja", "country": "JP"}` | +Please refer to the documentation on the UIAutomator2 driver [repository](https://github.com/appium/appium-uiautomator2-driver#capabilities) about its available capabilities. +#### Espresso -##### Espresso server build configuration JSON -Passing this configuration file using `espressoBuildConfig` desired capability allows to fine-tune the build process of the Espresso server. It is mostly useful in cases where the default Espresso server settings are not compatible with your application under test. - One example of such a case is tests crashing due to `Resource is not a Drawable` error (see https://github.com/appium/appium-espresso-driver/issues/449 for discussion). - -Configuration example: -```json -{ - "toolsVersions": { - "gradle": "5.1.1", - "androidGradlePlugin": "3.4.2", - "compileSdk": 28, - "buildTools": "28.0.3", - "minSdk": 18, - "targetSdk": 28, - "kotlin": "1.3.31" - }, - "additionalAppDependencies": [ - "com.google.android.material:material:1.0.0" - ] -} -``` - -***Version settings*** - -`toolsVersion` specifies versions of various tools and SDKs used during the building process of the Espresso server. Default versions are the versions used to build the Espresso driver without build configuration JSON. - -The module versions enumerated under `toolsVersion` are only used to build the server APK. They don't affect the manifest of your application under test or the Espresso server manifest (that is still generated from the manifest of your application under test). - -|Setting|Description|Values| -|----|-----------|-------| -|`gradle`|Gradle version|e.g.,`5.1.1`| -|`androidGradlePlugin`|Android Gradle Plugin version|e.g., `3.4.2`| -|`buildTools`|Version of the Android SDK build tools that should be used to compile the Espresso server (corresponds to `buildToolsVersion` in Gradle build files)|e.g., `28.0.3`| -|`compileSdk`|Android API level that should be used to compile the Espresso server (corresponds to `compileSdkVersion` in Gradle build files)|e.g., `28`| -|`minSdk`|Minimum Android API level required to run the application under tests, affects compatibility libraries used to build the Espresso server (corresponds to `minSdk` in Gradle build files)|e.g., `18`| -|`targetSdk`|Android API level used to test the app (corresponds to `targetSdk` in Gradle build files)|e.g., `28`| -|`kotlin`|Version of Kotlin compiler and official libraries|e.g., `1.3.311`| - -***Application dependencies*** - -`additionalAppDependencies` and `additionalAndroidTestDependencies` array specify additional dependencies of the application under test that build tools should know about when building the Espresso server. -For example: `"additionalAndroidTestDependencies": [ "com.google.android.material:material:1.0.0" ]`. - -Items belonging to `additionalAppDependencies` array are translated to `implementation` lines in Gradle build files of the Espresso server. `additionalAndroidTestDependencies` are translated to `androidTestImplementation`. +Please refer to the documentation on the Espresso driver [repository](https://github.com/appium/appium-espresso-driver#capabilities) about its available capabilities. ### iOS Only @@ -237,7 +165,6 @@ Driver](/docs/en/drivers/ios-uiautomation.md). |----|-----------|-------| |`calendarFormat`| (Sim-only) Calendar format to set for the iOS Simulator|e.g. `gregorian`| |`bundleId`| Bundle ID of the app under test. Useful for starting an app on a real device or for using other caps which require the bundle ID during test startup. To run a test on a real device using the bundle ID, you may omit the 'app' capability, but you must provide 'udid'.|e.g. `io.appium.TestApp`| -|`udid`| Unique device identifier of the connected physical device|e.g. `1ae203187fc012g`| |`launchTimeout`| Amount of time in ms to wait for instruments before assuming it hung and failing the session|e.g. `20000`| |`locationServicesEnabled`| (Sim-only) Force location services to be either on or off. Default is to keep current sim setting.|`true` or `false`| |`locationServicesAuthorized`| (Sim-only) Set location services to be authorized or not authorized for app via plist, so that location services alert doesn't pop up. Default is to keep current sim setting. Note that if you use this setting you MUST also use the `bundleId` capability to send in your app's bundle ID.|`true` or `false`| @@ -269,19 +196,32 @@ Driver](/docs/en/drivers/ios-uiautomation.md). #### iOS Only, using XCUITest -(For XCUITest-specific capabilities, please refer to the documentation on the [XCUITest Driver repo](https://github.com/appium/appium-xcuitest-driver#desired-capabilities) itself.) +Please refer to the documentation on the XCUITest driver [repository](https://github.com/appium/appium-xcuitest-driver#desired-capabilities) about its available capabilities. + +### Safaridriver Only + +Please refer to the documentation on the safaridriver [repository](https://github.com/appium/appium-safari-driver) about its available capabilities. + +### Geckodriver Only +Please refer to the documentation on the geckodriver [repository](https://github.com/appium/appium-geckodriver) about its available capabilities. ### MacDriver Only -(For MacDriver capabilities, please refer to the documentation on the [Appium Mac Driver repo](https://github.com/appium/appium-mac-driver#desired-capabilities) itself.) +Please refer to the documentation on the MacDriver [repository](https://github.com/appium/appium-mac-driver#desired-capabilities) about its available capabilities. + +### Mac2Driver Only + +Please refer to the documentation on the Mac2Driver [repository](https://github.com/appium/appium-mac2-driver#capabilities) about its available capabilities. ### You.i Engine Only -(For You.i Engine-specific capabilities, please refer to the documentation on the [You.i Engine driver](https://github.com/YOU-i-Labs/appium-youiengine-driver#desired-capabilities) itself.) +Please refer to the documentation on the You.i Engine driver [repository](https://github.com/YOU-i-Labs/appium-youiengine-driver#desired-capabilities) about its available capabilities. ### WinAppDriver Only -(For WinAppDriver specific capabilities, please refer to the documentation on the [Appium Windows Driver repo](https://github.com/appium/appium-windows-driver#windowsdriver-specific-capabilities) itself.) + +Please refer to the documentation on the Appium Windows Driver [repository](https://github.com/appium/appium-windows-driver#windowsdriver-specific-capabilities) about its available capabilities. ### Flutter driver only -(For FlutterDriver specific capabilities, examples please refer to the documentation on the [Flutter Driver repo](https://github.com/truongsinh/appium-flutter-driver#desired-capabilities-for-flutter-driver-only) itself.) + +Please refer to the documentation on the Flutter Driver [repository](https://github.com/truongsinh/appium-flutter-driver#desired-capabilities-for-flutter-driver-only) about its available capabilities. diff --git a/docs/en/writing-running-appium/ios/audio-capture.md b/docs/en/writing-running-appium/ios/audio-capture.md index 2b67e7fd7e6..b7da6505a7a 100644 --- a/docs/en/writing-running-appium/ios/audio-capture.md +++ b/docs/en/writing-running-appium/ios/audio-capture.md @@ -9,55 +9,8 @@ Apple does not provide any API to directly retrieve the audio stream from a Simulator or a real device, but it is possible to redirect that stream to the host machine, where it could be captured. -#### mobile: startAudioRecording - -Starts audio recording process on the given host audio input with the given -audio compression parameters. - -#### Supported arguments - - * _audioInput_: The name of the corresponding audio input device to use for the capture, for example `:1`. The full list of capture devices could be shown using `ffmpeg -f avfoundation -list_devices true -i ""` Terminal command. This argument is mandatory. - * _audioCodec_: The name of the audio codec. `aac` is used by default. - * _audioBitrate_: The bitrate of the resulting audio stream. `128k` by default. - * _audioChannels_: The count of audio channels in the resulting stream. Setting it to `1` will create a single channel (mono) audio stream. `2` by default. - * _audioRate_: The sampling rate of the resulting audio stream. `44100` by default. - * _timeLimit_: The maximum recording time, in seconds. The default value is `180`, the maximum value is `43200` (12 hours) - * _forceRestart_: Whether to restart audio capture process forcefully when startRecordingAudio is called (`true`) or ignore the call until the current audio recording is completed (`false`, the default setting). - -#### mobile: stopAudioRecording - -Stops the audio recording process previously started by `startAudioRecording` call. The result of the method call is a base64-encoded .mp4 file containing the audio content recorded since `startAudioRecording` was called. Subsequent method calls will return the same result. -If `startAudioRecording` was not called before then an empty string is returned. - -#### Usage Examples - -```java -// Java -driver.executeScript("mobile: startAudioRecording", ImmutableMap.of("audioInput", ":1")); -Thread.sleep(10000); -byte[] mp4Data = Base64.getMimeDecoder() - .decode((String) driver.executeScript("mobile: stopAudioRecording")); -try (FileOutputStream fos = new FileOutputStream("out.mp4")) { - fos.write(mp4Data); -} -``` - -```ruby -# Ruby -@driver.execute_script 'mobile: startAudioRecording', audioInput: ':0' -sleep 10 -base64_str = @driver.execute_script 'mobile: stopAudioRecording' -File.write 'out.mp4', Base64.decode64(base64_str) -``` - -```python -# Python -driver.execute_script('mobile: startAudioRecording', {'audioInput': ':1'}) -time.sleep(10) -base64_str = driver.execute_script('mobile: stopAudioRecording') -with open('out.mp4', 'wb') as f: - f.write(base64.b64decode(base64_str)) -``` +- [mobile: startAudioRecording](https://github.com/appium/appium-xcuitest-driver#mobile-startaudiorecording) +- [mobile: stopAudioRecording](https://github.com/appium/appium-xcuitest-driver#mobile-stopaudiorecording) ### Server Requirements diff --git a/docs/en/writing-running-appium/ios/ios-xctest-file-movement.md b/docs/en/writing-running-appium/ios/ios-xctest-file-movement.md index 9609ba17022..4217b76fd07 100644 --- a/docs/en/writing-running-appium/ios/ios-xctest-file-movement.md +++ b/docs/en/writing-running-appium/ios/ios-xctest-file-movement.md @@ -20,8 +20,9 @@ The format of method argument should be the following: - `@` is the application bundle identifier - `optional_container_type` is the container type - `documents` is the only available option - - You may specify `documents` container type only for bundle ids returned by `ifuse -u --list-apps` - - e.g. Below _On My iPhone_ image has _Slack_ folder, but `com.tinyspeck.chatlyio` does not exist in the output of `--list-apps`. Thus, we cannot mount it as `com.tinyspeck.chatlyio@documents/` + - You may specify `documents` container type only for bundle ids that exists in the device + - Since appium-xcuitest-driver v3.55.0, [mobile: listApps](https://github.com/appium/appium-xcuitest-driver#mobile-listapps) provides a list of available applications. Applications which have `UIFileSharingEnabled` attribute as `true` can be specified. + - e.g. Below _On My iPhone_ image has _Slack_ folder, but `com.tinyspeck.chatlyio` does not exist in installed bundle ids. Then, we cannot mount it as `com.tinyspeck.chatlyio@documents/` - The others work as _format 2_ @@ -73,17 +74,24 @@ File.open('presentation.key', 'wb') { |f| f<< file } - Pull folder You can pull documents root of _On My iPhone/Keynote_ as `@driver.pull_folder '@com.apple.Keynote:documents/'`. +`@driver.pull_folder '@com.apple.Keynote:documents/Keynote'` is to get files in the Keynote folder. Then, _Keynote_ is the documentation root to get. ```javascript // webdriver.io let data = driver.pullFolder('@io.appium.example:documents/'); await fs.writeFile('documents.zip', Buffer.from(data, 'base64'), 'binary'); + +let data = driver.pullFolder('@io.appium.example:documents/Keynote'); +await fs.writeFile('keynote.zip', Buffer.from(data, 'base64'), 'binary'); ``` ```ruby # ruby_lib_core file = @driver.pull_folder '@com.apple.Keynote:documents/' File.open('documents.zip', 'wb') { |f| f<< file } + +file = @driver.pull_folder '@com.apple.Keynote:documents/Keynote' +File.open('keynote.zip', 'wb') { |f| f<< file } ``` - Push file diff --git a/docs/en/writing-running-appium/ios/ios-xctest-install-certificate.md b/docs/en/writing-running-appium/ios/ios-xctest-install-certificate.md index b24a2c2d399..75cc0b711d6 100644 --- a/docs/en/writing-running-appium/ios/ios-xctest-install-certificate.md +++ b/docs/en/writing-running-appium/ios/ios-xctest-install-certificate.md @@ -3,20 +3,4 @@ Unfortunately, Apple does not provide any command line options which can help to install self-signed certificate on a real device or Simulator. However, there is [over-the-air](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/iPhoneOTAConfiguration/Introduction/Introduction.html) enrollment technology, which allows the deployment of several entity types, including such certificates, by simply downloading specially prepared configuration files with the built-in web browser. After the configuration is downloaded it can be installed and trusted by going through several simple wizard steps. -### mobile: installCertificate - -This command receives the content of an existing certificate in PEM format, transforms the content to a special config format and deploys it on Appium's built-in HTTP server, so the config can be downloaded and accepted on the device under test. Thus the main requirement is that the hostname and port, where Appium server is running, are reachable on the device under test. After the certificate is installed the script is going to open System Preferences again and enable it inside Certificate Trust Settings if it is disabled. - -#### Supported arguments - - * _content_: The content of the certificate represented as base64-encoded string. The parameter is mandatory - -#### Usage examples - -```java -// Java -Map args = new HashMap<>(); -byte[] byteContent = Files.readAllBytes(new File("custom.cer").toPath()); -args.put("content", Base64.getEncoder().encodeToString(byteContent)); -driver.executeScript("mobile: installCertificate", args); -``` +- [mobile: installCertificate](https://github.com/appium/appium-xcuitest-driver#mobile-installcertificate) diff --git a/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md b/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md index e6e30b959a3..8c4d1689b10 100644 --- a/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md +++ b/docs/en/writing-running-appium/ios/ios-xctest-mobile-apps-management.md @@ -3,7 +3,7 @@ Since Xcode9 there is a possibility to manage multiple applications in scope of a single session. It makes it possible to open iOS preferences and change values there while the application under test is in background and then restore it back -to foreground or check scenarious, where the application under test is +to foreground or check scenarios, where the application under test is terminated and then started again. Appium for iOS has special set of `mobile:` subcommands, which provides user interface to such features. @@ -11,151 +11,10 @@ subcommands, which provides user interface to such features. application restarts, since they are going to be invalidated after each restart. -### mobile: installApp - -Installs given application to the device under test. If the same application is -already installed then it's going to be installed over the existing one, which -allows you to test upgrades. Be careful while reinstalling the main application -under test: make sure that `terminateApp` has been called first, otherwise -WebDriverAgent will detect the state as a potential crash of the application. - -#### Supported arguments - - * `app`: The path to an existing .ipa/.app file on the server file system, - zipped .app file or an URL pointing to a remote .ipa/.zip file. Mandatory argument. - -#### Usage examples - -```java -// Java -Map params = new HashMap<>(); -params.put("app", "http://example.com/myapp.ipa"); -js.executeScript("mobile: installApp", params); -``` - - -### mobile: removeApp - -Uninstalls an existing application from the device under test. This endpoint -does not verify whether the application is already installed or not before -uninstalling it. - -#### Supported arguments - - * `bundleId`: The bundle identifier of the application, which is going to be - uninstalled. Mandatory argument. - -#### Usage examples - -```python -# Python -driver.execute_script('mobile: removeApp', {'bundleId': 'com.myapp'}); -``` - - -### mobile: isAppInstalled - -Verifies whether the application with given bundle identifier is installed on -the device. Returns `true` or `false`. - -#### Supported arguments - - * `bundleId`: The bundle identifier of the application, which is going to be - verified. Mandatory argument. - -#### Usage examples - -```java -// Java -Map params = new HashMap<>(); -params.put("bundleId", "com.myapp"); -final boolean isInstalled = (Boolean)js.executeScript("mobile: isAppInstalled", params); -``` - - -### mobile: launchApp - -Executes an existing application on the device. If the application is already -running then it will be brought to the foreground. - -#### Supported arguments - - * `bundleId`: The bundle identifier of the application, which is going to be - executed. Mandatory argument. - * `arguments`: The list of command line arguments. Optional. - * `environment`: Environemnt variables mapping. Optional. - -#### Usage examples - -```python -# Python -driver.execute_script('mobile: launchApp', {'bundleId': 'com.myapp', - 'arguments': ('-foo', '--bar'), - 'environment': {'foo': 'bar'}}) -``` - - -### mobile: terminateApp - -Terminates an existing application on the device. If the application is not -running then the returned result will be `false`, otherwise `true`. - -#### Supported arguments - - * `bundleId`: The bundle identifier of the application, which is going to be - terminated. Mandatory argument. - -#### Usage examples - -```java -// Java -Map params = new HashMap<>(); -params.put("bundleId", "com.myapp"); -final boolean wasRunningBefore = (Boolean)js.executeScript("mobile: terminateApp", params); -``` - - -### mobile: activateApp - -Activates an existing application on the device under test and moves it to the -foreground. The application should be already running in order to activate it. -The call is ignored if the application is already in foreground. - -#### Supported arguments - - * `bundleId`: The bundle identifier of the application, which is going to be - brought to the foreground. Mandatory argument. - -#### Usage examples - -```python -# Python -driver.execute_script('mobile: activateApp', {'bundleId': 'com.myapp'}); -``` - - -### mobile: queryAppState - -Queries the state of an existing application on the device. There are five -possible application states (check [Apple's documentation](https://developer.apple.com/documentation/xctest/xcuiapplicationstate?language=objc) -for more details): - - * `0`: The current application state cannot be determined/is unknown - * `1`: The application is not running - * `2`: The application is running in the background and is suspended - * `3`: The application is running in the background and is not suspended - * `4`: The application is running in the foreground - -#### Supported arguments - - * `bundleId`: The bundle identifier of the application, which state is going to - be queried. Mandatory argument. - -#### Usage examples - -```java -// Java -Map params = new HashMap<>(); -params.put("bundleId", "com.myapp"); -final int state = (Integer)js.executeScript("mobile: queryAppState", params); -``` +- [mobile: installApp](https://github.com/appium/appium-xcuitest-driver#mobile-installapp) +- [mobile: removeApp](https://github.com/appium/appium-xcuitest-driver#mobile-removeapp) +- [mobile: isAppInstalled](https://github.com/appium/appium-xcuitest-driver#mobile-isappinstalled) +- [mobile: launchApp](https://github.com/appium/appium-xcuitest-driver#mobile-launchapp) +- [mobile: terminateApp](https://github.com/appium/appium-xcuitest-driver#mobile-terminateapp) +- [mobile: activateApp](https://github.com/appium/appium-xcuitest-driver#mobile-activateapp) +- [mobile: queryAppState](https://github.com/appium/appium-xcuitest-driver#mobile-queryappstate) diff --git a/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md b/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md index 2376ee4db56..32ff4187860 100644 --- a/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md +++ b/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md @@ -5,285 +5,21 @@ TouchAction interface implementation. Although, it provides rich set of gestures including these, that are unique for iOS platform. It is possible to directly invoke these gestures in Appium starting from version 1.6.4-beta. -It is important to rememeber that XCTest and WDA are being constantly changed. +It is important to remember that XCTest and WDA are being constantly changed. This means all "mobile: *" commands can be also subject of change in Appium without any preliminary notice. - -### mobile: swipe - -This gesture performs a simple "swipe" gesture on the particular screen element or -on the application element, which is usually the whole screen. This method does not -accept coordinates and simply emulates single swipe with one finger. It might be -useful for such cases like album pagination, switching views, etc. More advanced -cases may require to call "mobile: dragFromToForDuration", where one can supply -coordinates and duration. - -#### Supported arguments - - * _direction_: Either 'up', 'down', 'left' or 'right'. The argument is mandatory - * _velocity_: This argument is optional and is only supported since Appium server version 1.19 and Xcode SDK version 11.4+. - The value is measured in pixels per second and same values could behave differently on different devices depending on their display density. Higher values make - swipe gesture faster (which usually scrolls larger areas if we apply it to a list) and lower - values slow it down. Only values greater than zero have effect. - * _element_: The internal element identifier (as hexadecimal hash string) to swipe on. - Application element will be used instead if this argument is not provided - -#### Usage examples - -```java -// Java -JavascriptExecutor js = (JavascriptExecutor) driver; -Map params = new HashMap<>(); -params.put("direction", "down"); -params.put("velocity", 2500); -params.put("element", ((RemoteWebElement) element).getId()); -js.executeScript("mobile: swipe", params); -``` - - -### mobile: scroll - -Scrolls the element or the whole screen. Different scrolling strategies are supported. -Arguments define the choosen strategy: either 'name', 'direction', 'predicateString' or -'toVisible' in that order. All strategies are exclusive and only one strategy -can be applied at a single moment of time. Use "mobile: scroll" to emulate precise -scrolling in tables or collection views, where it is already known to which element -the scrolling should be performed. Although, there is one known limitation there: in case -it is necessary to perform too many scroll gestures on parent container to reach the -necessary child element (tens of them) then the method call may fail. - -#### Supported arguments - - * _element_: The internal element identifier (as hexadecimal hash string) to scroll on. - Application element will be used if this argument is not set - * _name_: the accessibility id of the child element, to which scrolling is performed. - The same result can be achieved by setting _predicateString_ argument to - 'name == accessibilityId'. Has no effect if _element_ is not a container - * _direction_: Either 'up', 'down', 'left' or 'right'. The main difference from - _swipe_ call with the same argument is that _scroll_ will try to move the current viewport - exactly to the next/previous page (the term "page" means the content, which fits into - a single device screen) - * _predicateString_: the NSPredicate locator of the child element, to which - the scrolling should be performed. Has no effect if _element_ is not a container - * _toVisible_: Boolean parameter. If set to _true_ then asks to scroll to - the first visible _element_ in the parent container. Has no effect if _element_ is - not set - -#### Usage examples - -```python -# Python -driver.execute_script('mobile: scroll', {'direction': 'down'}); -``` - - -### mobile: pinch - -Performs pinch gesture on the given element or on the application element. - -#### Supported arguments - - * _element_: The internal element identifier (as hexadecimal hash string) to pinch on. - Application element will be used instead if this parameter is not provided - * _scale_: Pinch scale of type float. Use a scale between 0 and 1 to "pinch close" or - zoom out and a scale greater than 1 to "pinch open" or zoom in. Mandatory parameter - * _velocity_: The velocity of the pinch in scale factor per second (float value). Mandatory parameter - -#### Usage examples - -```ruby -# Ruby -execute_script 'mobile: pinch', scale: 0.5, velocity: 1.1, element: element.ref -``` - - -### mobile: doubleTap - -Performs double tap gesture on the given element or on the screen. - -#### Supported arguments - - * _element_: The internal element identifier (as hexadecimal hash string) to double tap on - * _x_: Screen x tap coordinate of type float. Mandatory parameter only if _element_ is not set - * _y_: Screen y tap coordinate of type float. Mandatory parameter only if _element_ is not set - -#### Usage examples - -```javascript -// javascript -driver.execute('mobile: doubleTap', {element: element.value.ELEMENT}); -``` - - -### mobile: touchAndHold - -Performs long press gesture on the given element or on the screen. - -#### Supported arguments - - * _element_: The internal element identifier (as hexadecimal hash string) to long tap on - * _duration_: The float duration of press action in seconds. Mandatory patameter - * _x_: Screen x long tap coordinate of type float. Mandatory parameter only if _element_ is not set - * _y_: Screen y long tap coordinate of type float. Mandatory parameter only if _element_ is not set - -#### Usage examples - -```csharp -// c# -Dictionary tfLongTap = new Dictionary(); -tfLongTap.Add("element", element.Id); -tfLongTap.Add("duration", 2.0); -((IJavaScriptExecutor)driver).ExecuteScript("mobile: touchAndHold", tfLongTap); -``` - - -### mobile: twoFingerTap - -Performs two finger tap gesture on the given element or on the application element. - -#### Supported arguments - - * _element_: The internal element identifier (as hexadecimal hash string) to double tap on. - Application element will be used instead if this - parameter is not provided - -#### Usage examples - -```csharp -// c# -Dictionary tfTap = new Dictionary(); -tfTap.Add("element", element.Id); -((IJavaScriptExecutor)driver).ExecuteScript("mobile: twoFingerTap", tfTap); -``` - - -### mobile: tap - -Performs tap gesture by coordinates on the given element or on the screen. - -#### Supported arguments - - * _element_: The internal element identifier (as hexadecimal hash string) to long tap on. - _x_ and _y_ tap coordinates will be calulated relatively to the current element position on the - screen if this argument is provided. Otherwise they should be calculated - relatively to screen borders. - * _x_: x tap coordinate of type float. Mandatory parameter - * _y_: y tap coordinate of type float. Mandatory parameter - -#### Usage examples - -```php -// PHP -$params = array(array('x' => 100.0, 'y' => 50.0, 'element' => element.GetAttribute("id"))); -$driver->executeScript("mobile: tap", $params); -``` - - -### mobile: dragFromToForDuration - -Performs drag and drop gesture by coordinates. This can be done either on an element or -on the screen - -#### Supported arguments - - * _element_: The internal element identifier (as hexadecimal hash string) to perform drag on. - All the coordinates will be calculated relatively this this element position on the screen. - Absolute screen coordinates are expected if this argument is not set - * _duration_: Float number of seconds in range [0.5, 60]. How long the tap gesture at - starting drag point should be before to start dragging. Mandatory parameter - * _fromX_: The x coordinate of starting drag point (type float). Mandatory parameter - * _fromY_: The y coordinate of starting drag point (type float). Mandatory parameter - * _toX_: The x coordinate of ending drag point (type float). Mandatory parameter - * _toY_: The y coordinate of ending drag point (type float). Mandatory parameter - -#### Usage examples - -```java -// Java -JavascriptExecutor js = (JavascriptExecutor) driver; -Map params = new HashMap<>(); -params.put("duration", 1.0); -params.put("fromX", 100); -params.put("fromY", 100); -params.put("toX", 200); -params.put("toY", 200); -params.put("element", ((RemoteWebElement) element).getId()); -js.executeScript("mobile: dragFromToForDuration", params); -``` - - -### mobile: selectPickerWheelValue - -Performs selection of the next or previous picker wheel value. This might -be useful if these values are populated dynamically, so you don't know which -one to select or value selection does not work because of XCTest bug. - -#### Supported arguments - - * _element_: PickerWheel's internal element id (as hexadecimal hash string) to perform - value selection on. The element must be of type XCUIElementTypePickerWheel. Mandatory parameter - * _order_: Either _next_ to select the value next to the current one - from the target picker wheel or _previous_ to select the previous one. Mandatory parameter - * _offset_: The value in range [0.01, 0.5]. It defines how far from picker - wheel's center the click should happen. The actual distance is calculated by - multiplying this value to the actual picker wheel height. Too small offset value - may not change the picker wheel value and too high value may cause the wheel to switch - two or more values at once. Usually the optimal value is located in range [0.15, 0.3]. _0.2_ by default - -#### Usage examples - -```java -// Java -JavascriptExecutor js = (JavascriptExecutor) driver; -Map params = new HashMap<>(); -params.put("order", "next"); -params.put("offset", 0.15); -params.put("element", ((RemoteWebElement) element).getId()); -js.executeScript("mobile: selectPickerWheelValue", params); -``` - - -### mobile: alert - -Performs operations on NSAlert instance. - -#### Supported arguments - - * _action_: The following actions are supported: _accept_, _dismiss_ and _getButtons_. - Mandatory parameter - * _buttonLabel_: The label text of an existing alert button to click on. This is an - optional parameter and is only valid in combination with _accept_ and _dismiss_ - actions. - -#### Usage examples - -```python -# Python -driver.execute_script('mobile: alert', {'action': 'accept', 'buttonLabel': 'My Cool Alert Button'}); -``` - -### mobile: tapWithNumberOfTaps - -Sends one or more taps with one or more touch points since Appium 1.17.1. - -#### Supported arguments - -* _element_: The internal element identifier (as hexadecimal hash string) to perform one or more taps. -* _numberOfTaps_: The number of taps -* _numberOfTouches_: The number of touch points - -#### Usage examples - -```ruby -# Ruby -e = @driver.find_element :id, 'target element' -# Taps the element with a single touch point twice -@driver.execute_script 'mobile: tapWithNumberOfTaps', {element: e.ref, numberOfTaps: 2, numberOfTouches: 1} -``` - -#### Reference -[tapWithNumberOfTaps:numberOfTouches:](https://developer.apple.com/documentation/xctest/xcuielement/1618671-tapwithnumberoftaps) +- [mobile: swipe](https://github.com/appium/appium-xcuitest-driver#mobile-swipe) +- [mobile: scroll](https://github.com/appium/appium-xcuitest-driver#mobile-scroll) +- [mobile: pinch](https://github.com/appium/appium-xcuitest-driver#mobile-pinch) +- [mobile: doubleTap](https://github.com/appium/appium-xcuitest-driver#mobile-doubletap) +- [mobile: touchAndHold](https://github.com/appium/appium-xcuitest-driver#mobile-touchandhold) +- [mobile: twoFingerTap](https://github.com/appium/appium-xcuitest-driver#mobile-twofingertap) +- [mobile: tap](https://github.com/appium/appium-xcuitest-driver#mobile-tap) +- [mobile: dragFromToForDuration](https://github.com/appium/appium-xcuitest-driver#mobile-dragfromtoforduration) +- [mobile: selectPickerWheelValue](https://github.com/appium/appium-xcuitest-driver#mobile-selectpickerwheelvalue-1) +- [mobile: rotateElement](https://github.com/appium/appium-xcuitest-driver#mobile-rotateelement) +- [mobile: tapWithNumberOfTaps](https://github.com/appium/appium-xcuitest-driver#mobile-tapwithnumberoftaps) ### Advanced Topics diff --git a/docs/en/writing-running-appium/ios/ios-xctest-pasteboard.md b/docs/en/writing-running-appium/ios/ios-xctest-pasteboard.md index 4984f4be901..e56b1c7b5a7 100644 --- a/docs/en/writing-running-appium/ios/ios-xctest-pasteboard.md +++ b/docs/en/writing-running-appium/ios/ios-xctest-pasteboard.md @@ -5,42 +5,5 @@ and read the content from there if needed. Each Simulator maintains its own past This feature is only available since Xcode SDK 8.1. On real devices this functionaliry is available with several security limitations. Please check [Get Clipboard](/docs/en/commands/device/clipboard/get-clipboard.md)/[Set Clipboard](/docs/en/commands/device/clipboard/set-clipboard.md) for more details. -### mobile: setPasteboard - -This command sets the content of Simulator's pasteboard to the particular string -provided as an argument. Also, it is possible to customize the encoding of the given -string. - -#### Supported arguments - - * _content_: The content of the pasteboard. The previous content is going - to be overridden. The parameter is mandatory - * _encoding_: Encoding of the given content. UTF-8 by default. - -#### Usage examples - -```java -// Java -JavascriptExecutor js = (JavascriptExecutor) driver; -Map args = new HashMap<>(); -args.put("content", new String(Files.readAllBytes(new File("/etc/passwd").toPath()), Charset.forName("latin-1"))); -js.executeScript("mobile: setPasteboard", args); -``` - - -### mobile: getPasteboard - -This command is used to get the current content of Simulator's pasteboard as -a string. Also, it is possible to customize the encoding of the received -string. - -#### Supported arguments - - * _encoding_: Encoding of the received pasteboard content. UTF-8 by default. - -#### Usage examples - -```python -# Python -content = driver.execute_script('mobile: getPasteboard', {'encoding': 'shift-jis'}); -``` +- [mobile: setPasteboard](https://github.com/appium/appium-xcuitest-driver#mobile-setpasteboard) +- [mobile: getPasteboard](https://github.com/appium/appium-xcuitest-driver#mobile-getpasteboard) diff --git a/docs/en/writing-running-appium/ios/ios-xctest-performance.md b/docs/en/writing-running-appium/ios/ios-xctest-performance.md index ca4dad6a5c5..3e3f9f59197 100644 --- a/docs/en/writing-running-appium/ios/ios-xctest-performance.md +++ b/docs/en/writing-running-appium/ios/ios-xctest-performance.md @@ -1,53 +1,6 @@ ## Automating Performance Metrics Measurement -Apple provides the `instruments` tool with quite a rich set of features for desktop and mobile applications performance measurement. The collected data can be then visualized with `Instruments.app`, which is a part of Xcode DevTools. By default Xcode provides several measurement templates, like `Activity Monitor` or `Time Profiler`, but one can also create their own profiles and select a custom set of metrics to record and visualize. Read https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide to get a more detailed overwiew of available tool features. +Apple provides the `instruments` tool with quite a rich set of features for desktop and mobile applications performance measurement. The collected data can be then visualized with `Instruments.app`, which is a part of Xcode DevTools. By default Xcode provides several measurement templates, like `Activity Monitor` or `Time Profiler`, but one can also create their own profiles and select a custom set of metrics to record and visualize. Read https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide to get a more detailed overview of available tool features. - -### mobile: startPerfRecord - -This command starts the performance recorder for the given profile name (template) on the device under test. In case this command is called two or more times in a row then the previous recorder will be forcefully stopped and the new one will start. All the previous data will be lost. - -Important: It is expected that the appropriate [security flag](/docs/en/writing-running-appium/security.md) is set from the Appium server command line in order to measure Simulator performance, since the `instruments` tool records the data from all running processes on the host machine. - -#### Supported arguments - - * _timeout_: For how long the recorder should be running in milliseconds. 5 minutes by default. Try not to set too high a value to this argument, since .trace files generated by `instruments` are pretty big in size. - * _profileName_: The name of an existing performance template. `Activity Monitor` by default. - * _pid_: The ID of the process to meassure the performance for. Set it to `current` in order to meassure only the performance of the process, which belongs to the currently active application (this might not work for some profiles). All processes running on the device are meassured if process ID is unset (the default setting). Setting process ID while device under test is Simulator might require `instruments` to be launched with sudo privileges, which is not supported and will throw a timeout exception. - -#### Usage examples - -```java -// Java -Map args = new HashMap<>(); -args.put("timeout", 60 * 1000); -args.put("profileName", "Time Profiler"); -driver.executeScript("mobile: startPerfRecord", args); -``` - - -### mobile: stopPerfRecord - -This command stops performance recorder for the given profile name (template) on the device under test and returns the collected data in zipped format or uploads it to a remote server. An exception will be thrown if `startPerfRecord` command has not been invoked before. - -Important: It is expected that the appropriate [security flag](/docs/en/writing-running-appium/security.md) is set from the Appium server command line in order to measure Simulator performance, since the `instruments` tool records the data from all running processes on the host machine. - -#### Supported arguments - - * _profileName_: The name of an existing performance template, for which the monitoring has been running before. `Activity Monitor` by default. - * _remotePath_: The path to a remote location, where the resulting zipped .trace file 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 zipped, encoded as Base64 and passed as the return value. An exception will be thrown if the generated file is too big to fit into the available server process memory. - * _user_: The name of the user for the remote authentication. Only works if `remotePath` is provided. - * _pass_: The password for the remote authentication. Only works if `remotePath` is provided. - * _method_: The http multipart upload method name. Only works if `remotePath` is provided. Equals to `PUT` by default. - -#### Usage examples - -```python -# Python -driver.execute_script('mobile: stopPerfRecord', { - 'profileName': 'Time Profiler', - 'remotePath': 'ftp://myserver/upload/', - 'user': 'serveruser', - 'pass': 'secretpass' -}) -``` +- [mobile: startPerfRecord](https://github.com/appium/appium-xcuitest-driver#mobile-startperfrecord) +- [mobile: stopPerfRecord](https://github.com/appium/appium-xcuitest-driver#mobile-stopperfrecord) diff --git a/docs/en/writing-running-appium/other/appium-bindings.md b/docs/en/writing-running-appium/other/appium-bindings.md index 57e4ad7d035..77d74ef15b5 100644 --- a/docs/en/writing-running-appium/other/appium-bindings.md +++ b/docs/en/writing-running-appium/other/appium-bindings.md @@ -1,28 +1,6 @@ ## Appium Client Libraries -Appium has libraries for: - -| Language | Source | -|:---------|-------:| -| [Ruby][rubygems] | [GitHub](https://github.com/appium/ruby_lib) | -| [Python][pypi] | [GitHub](https://github.com/appium/python-client) | -| [Java][maven] | [GitHub](https://github.com/appium/java-client) | -| [JavaScript][npm] | [GitHub](https://github.com/admc/wd) | -| [PHP][php] | [GitHub](https://github.com/appium/php-client) | -| [C#][nuget] | [GitHub](https://github.com/appium/appium-dotnet-driver) | -| [Objective-C][cocoapods] | [GitHub](https://github.com/appium/selenium-objective-c) | - -[rubygems]: http://rubygems.org/gems/appium_lib -[pypi]: https://pypi.python.org/pypi/Appium-Python-Client -[maven]: https://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22io.appium%22%20AND%20a%3A%22java-client%22 -[npm]: https://www.npmjs.org/package/wd -[php]: https://github.com/appium/php-client -[nuget]: https://www.nuget.org/packages/Appium.WebDriver/ -[cocoapods]: https://github.com/appium/selenium-objective-c - -Note that some methods such as `endTestCoverage()` are -not generally useful. Proper coverage support will be added once [this issue](https://github.com/appium/appium/issues/2448) -is resolved. If you want to use them anyway, consult the documentation for the bindings on GitHub. +Please read [List of client libraries with Appium server support](/docs/en/about-appium/appium-clients.md) about clients. ### Lock @@ -48,21 +26,11 @@ driver.lockScreen(3); driver.lock(3) ``` -```php -// php -$this->lock(3); -``` - ```csharp // c# driver.LockDevice(3); ``` -```objectivec -// objective c -[driver lockDeviceScreen:3]; -``` - ### Background app Send the currently active app to the background, and either return after a certain amount of time, or leave the app deactivated. @@ -98,24 +66,12 @@ driver.backgroundApp(-1); // deactivate app driver.backgroundApp({timeout: null}); // deactivate app ``` -```php -// php -$this->backgroundApp(5); -$this->backgroundApp(-1); -``` - ```csharp // c# driver.BackgroundApp(5); driver.BackgroundApp(-1); ``` -```objectivec -// objective c -[driver runAppInBackground:3]; -[driver runAppInBackground:-1]; -``` - ### Hide Keyboard Hide the keyboard. *Note*: on iOS, this helper function is not guaranteed to @@ -147,22 +103,11 @@ driver.hideKeyboard(); driver.hideKeyboard() ``` -```php -// php -$this->hideKeyboard(); -$this->hideKeyboard(array('strategy' => 'pressKey', 'key' => 'Done')); -``` - ```csharp // c# driver.HideKeyboard("Done"); ``` -```objectivec -// objective c -[driver hideKeyboard]; -``` - ### Start Activity Open an activity in the current app or start a new app and open an activity *Android only* @@ -192,17 +137,6 @@ start_activity app_package: 'io.appium.android.apis', app_activity: '.accessibil driver.StartActivity("com.example.android.apis", ".Foo"); ``` -```php -// php -$this->startActivity(array("appPackage" => "com.example.android.apis", - "appActivity" => ".Foo")); -``` - -```objectivec -// objective c -[driver startActivity:@"com.example.android.apis" package:@".Foo"]; -``` - ### Open Notifications Open the notification shade *Android only* @@ -232,16 +166,6 @@ open_notifications driver.OpenNotifications(); ``` -```php -// php -$this->openNotifications(); -``` - -```objectivec -// objective c -[driver openNotifications]; -``` - ### Is installed Check if an app is installed @@ -267,21 +191,11 @@ driver.isAppInstalled("com.example.android.apis") .then(function (isAppInstalled) { /*...*/ }) ``` -```php -// php -$this->isAppInstalled('com.example.android.apis'); -``` - ```csharp // c# driver.IsAppInstalled("com.example.android.apis-"); ``` -```objectivec -// objective c -[driver isAppInstalled:@"com.example.android.apis-"]; -``` - ### Install App Install an app to the device. @@ -306,21 +220,11 @@ driver.installApp("path/to/my.apk") driver.installApp("path/to/my.apk") ``` -```php -// php -$this->installApp('path/to/my.apk'); -``` - ```csharp // c# driver.InstallApp("path/to/my.apk"); ``` -```objectivec -// objective c -[driver installAppAtPath:@"path/to/my.apk"]; -``` - ### Remove App Remove an app from the device. @@ -345,21 +249,11 @@ driver.removeApp("com.example.android.apis") driver.removeApp("com.example.android.apis") ``` -```php -// php -$this->removeApp('com.example.android.apis'); -``` - ```csharp // c# driver.RemoveApp("com.example.android.apis"); ``` -```objectivec -// objective c -[driver removeApp:@"com.example.android.apis"]; -``` - ### Shake Simulate the device shaking. @@ -384,21 +278,11 @@ driver.shake() driver.shake() ``` -```php -// php -$this->shake(); -``` - ```csharp // c# driver.ShakeDevice(); ``` -```objectivec -// objective c -[driver shakeDevice]; -``` - ### Close app Close the app @@ -423,21 +307,11 @@ driver.closeApp() driver.closeApp() ``` -```php -// php -$this->closeApp(); -``` - ```csharp // c# driver.CloseApp(); ``` -```objectivec -// objective c -[driver closeApp]; -``` - ### Launch Launch the session for the desired capabilities. Note that this is the @@ -466,21 +340,11 @@ driver.launchApp() driver.launchApp() ``` -```php -// php -$this->launchApp(); -``` - ```csharp // c# driver.LaunchApp(); ``` -```objectivec -// objective c -[driver launchApp]; -``` - ### Reset Reset the app. @@ -505,21 +369,11 @@ driver.resetApp() driver.resetApp() ``` -```php -// php -$this->reset(); -``` - ```csharp // c# driver.ResetApp(); ``` -```objectivec -// objective c -[driver resetApp]; -``` - ### Available Contexts List all available contexts @@ -544,21 +398,11 @@ driver.getContextHandles() driver.contexts().then(function (contexts) { /*...*/ }) ``` -```php -// php -$this->contexts(); -``` - ```csharp // c# driver.GetContexts() ``` -```objectivec -// objective c -NSArray *contexts = driver.allContexts; -``` - ### Current context List the current context @@ -584,21 +428,11 @@ driver.getContext() driver.currentContext().then(function (context) { /*...*/ }) ``` -```php -// php -$this->context(); -``` - ```csharp // c# driver.GetContext() ``` -```objectivec -// objective c -NSString *context = driver.context; -``` - ### Switch to default context Change the context to the default. @@ -623,21 +457,11 @@ driver.context(); driver.context() ``` -```php -// php -$this->context(NULL); -``` - ```csharp // c# driver.SetContext(); ``` -```objectivec -// objective c -[driver setContext:nil]; -``` - ### App Strings Get the app's strings. @@ -662,23 +486,11 @@ driver.getAppStrings(); driver.getAppStrings().then(function (appStrings) { /*...*/ }) ``` -```php -// php -$this->appStrings(); -$this->appStrings('ru'); -``` - ```csharp // c# driver.GetAppStrings(); ``` -```objectivec -// objective c -[driver appStrings]; -[driver appStringsForLanguage:"@ru"]; -``` - ### Key Event Send a key event to the device. @@ -703,22 +515,11 @@ driver.sendKeyEvent(AndroidKeyCode.HOME); driver.deviceKeyEvent(wd.SPECIAL_KEYS.Home) ``` -```php -// php -$this->keyEvent('176'); -``` - ```csharp // c# driver.KeyEvent("176"); ``` -```objectivec -// objective c -NSError *err; -[driver triggerKeyEvent:176 metastate:0 error:&err]; -``` - ### Current Activity Android only. Get the current activity. @@ -743,22 +544,11 @@ driver.currentActivity(); driver.getCurrentActivity().then(function (activity) { /*...*/ }) ``` -```php -// php -$this->currentActivity(); -``` - ```csharp // c# driver.GetCurrentActivity(); ``` -```objectivec -// objective c -NSError *err; -[driver currentActivity]; -``` - ### Current Package Android only. Get the current package. @@ -783,11 +573,6 @@ driver.getCurrentPackage(); driver.getCurrentPackage().then(function (package) { /*...*/ }) ``` -```php -// php -$this->currentPackage(); -``` - ```csharp // c# driver.GetCurrentPackage(); @@ -828,33 +613,6 @@ action return action.perform(); // returns a promise ``` -```php -// php -$action = $this->initiateTouchAction(); - ->press(array('element' => $el)) - ->release() - ->perform(); - -$action1 = $this->initiateTouchAction(); -$action1->press(array('element' => $els[0])) - ->moveTo(array('x' => 10, 'y' => 0)) - ->moveTo(array('x' => 10, 'y' => -75)) - ->moveTo(array('x' => 10, 'y' => -600)) - ->release(); - -$action2 = $this->initiateTouchAction(); -$action2->press(array('element' => $els[1])) - ->moveTo(array('x' => 10, 'y' => 10)) - ->moveTo(array('x' => 10, 'y' => -300)) - ->moveTo(array('x' => 10, 'y' => -600)) - ->release(); - -$multiAction = $this->initiateMultiAction(); -$multiAction->add($action1); -$multiAction->add($action2); -$multiAction->perform(); -``` - ```csharp // c# ITouchAction action = new TouchAction(driver); @@ -898,11 +656,6 @@ return driver.swipe({ startX: 75, startY: 500, endX: 75, endY: 0, duration: 800 }); ``` -```php -// php -$this->swipe(75, 500, 75, 0, 800); -``` - ```csharp // c# todo: c# @@ -959,10 +712,6 @@ return driver.pinch(el); return el.pinch(); ``` -```php -$this->pinch($el); -``` - ```csharp // c# driver.Pinch(25, 25) @@ -1019,11 +768,6 @@ return driver.zoom(el); return el.zoom(); ``` -```php -// php -$this->zoom($el); -``` - ```csharp // c# driver.Zoom(100, 200); @@ -1060,12 +804,6 @@ return driver.elementByAccessibilityId().then(function (el) { }); ``` -```php -// php -$els = $this->elements($this->using('class name')->value('android.widget.TextView')); -$this->scroll($els[count($els) - 1], $els[0]); -``` - ```csharp // c# Dictionary scrollObject = new Dictionary(); @@ -1099,11 +837,6 @@ driver.pullFile("Library/AddressBook/AddressBook.sqlitedb") .then(function (base64File) { /*...*/ }) ``` -```php -// php -$this->pullFile('Library/AddressBook/AddressBook.sqlitedb'); -``` - ```csharp // c# driver.PullFile("Library/AddressBook/AddressBook.sqlitedb"); @@ -1139,13 +872,6 @@ driver.pushFile(path, data) driver.pushFile(path, data) ``` -```php -// php -$path = 'data/local/tmp/test_push_file.txt'; -$data = 'This is the contents of the file to push to the device.'; -$this->pushFile($path, base64_encode($data)); -``` - ```csharp // c# driver.PushFile("/data/local/tmp/file.txt", "some data for the file"); @@ -1183,12 +909,6 @@ var settings = driver.settings(); browser.updateSettings({'someSetting': true}); ``` -```php -// php -$settings = $this->getSettings(); -$this->updateSettings(array('cyberdelia' => "open")); -``` - ```csharp // c# Dictionarysettings = driver.GetSettings(); diff --git a/docs/en/writing-running-appium/other/troubleshooting.md b/docs/en/writing-running-appium/other/troubleshooting.md index 6cd29399e37..f76ae404277 100644 --- a/docs/en/writing-running-appium/other/troubleshooting.md +++ b/docs/en/writing-running-appium/other/troubleshooting.md @@ -39,7 +39,7 @@ own items in the SDK manager. Make sure you install the build-tools and platform * Make sure you set ANDROID_HOME pointing to the Android SDK directory * After setting power state to `off` (e.g.: `driver.setPowerAC(PowerACState.OFF);`) you must create a new session. * When using `-wipe-data` in `avdArgs` the `noReset` capability will be ignored if set to true. -* Make sure proper developer options are enabled. Some devices have [custom options](https://github.com/appium/appium/issues/13802#issuecomment-587802222) to make the device testable. +* Make sure proper developer options are enabled. Some devices have [custom options](https://github.com/appium/appium/issues/13802#issuecomment-587802222) to make the device testable. [This page](https://airtest.doc.io.netease.com/en/IDEdocs/device_connection/2_android_faq/#2-some-manufacturers-have-special-problems-with-equipment) also has helpful steps to configure devices for automation. ### Android Espresso diff --git a/docs/en/writing-running-appium/running-tests.md b/docs/en/writing-running-appium/running-tests.md index c313d62fbbd..739d5a3117a 100644 --- a/docs/en/writing-running-appium/running-tests.md +++ b/docs/en/writing-running-appium/running-tests.md @@ -27,7 +27,7 @@ Nothing in particular needs to be done to run your test. The best way to see what to do currently is to look at the example tests: -[Node.js](https://github.com/appium/appium/tree/master/sample-code/javascript-webdriverio) | [Python](https://github.com/appium/appium/tree/master/sample-code/python) | [PHP](https://github.com/appium/appium/tree/master/sample-code/php) | [Ruby](https://github.com/appium/appium/tree/master/sample-code/ruby) | [Java](https://github.com/appium/appium/tree/master/sample-code/java) +[Node.js](https://github.com/appium/appium/tree/master/sample-code/javascript-webdriverio) | [Python](https://github.com/appium/appium/tree/master/sample-code/python) | [Ruby](https://github.com/appium/appium/tree/master/sample-code/ruby) | [Java](https://github.com/appium/appium/tree/master/sample-code/java) Basically, first make sure Appium is running: @@ -55,20 +55,6 @@ Then script your WebDriver test, sending in the following desired capabilities: } ``` -```php -// php -public static $browsers = array( - array( - 'desiredCapabilities' => array( - 'platformName' => 'iOS', - 'platformVersion' => '7.1', - 'deviceName' => 'iPhone Simulator', - 'app' => $myApp - ) - ) -); -``` - ```java // java DesiredCapabilities capabilities = new DesiredCapabilities(); @@ -159,20 +145,6 @@ Then script your WebDriver test, sending in the following desired capabilities: } ``` -```php -// php -public static $browsers = array( - array( - 'desiredCapabilities' => array( - 'platformName' => 'Android', - 'platformVersion' => '4.4', - 'deviceName' => 'Android Emulator', - 'app' => $myApp - ) - ) -); -``` - ```java // java DesiredCapabilities capabilities = new DesiredCapabilities(); diff --git a/docs/en/writing-running-appium/server-args.md b/docs/en/writing-running-appium/server-args.md index c356a209a15..fc686607ec2 100644 --- a/docs/en/writing-running-appium/server-args.md +++ b/docs/en/writing-running-appium/server-args.md @@ -1,4 +1,4 @@ -# Appium server arguments +# Appium server arguments and environment variables Since Appium 1.5, many server arguments have been deprecated in favor of the [--default-capabilities flag](/docs/en/writing-running-appium/default-capabilities-arg.md). @@ -7,8 +7,6 @@ Usage: `node . [flags]` ## Server flags All flags are optional, but some are required in conjunction with certain others. - - |Flag|Default|Description|Example| @@ -96,3 +94,10 @@ All flags are optional, but some are required in conjunction with certain others |`--allow-insecure`|[]|Allow a list of features which are considered insecure and must be turned on explicitly by system administrators. Feature names are documented by the relevant server/driver. Should be a comma-separated list, or a path to a filename containing one feature name per line. Features listed in --deny-insecure will override anything listed here. Does not make sense to use in conjunction with --relaxed-security. See also the [security doc](/docs/en/writing-running-appium/security.md)|`--allow-insecure=foo,bar`| |`--deny-insecure`|[]|Specify a list of features which will never be allowed to run, even if --relaxed-security is turned on, and even if feature names are listed with --allow-insecure. Should be a comma-separated list, or a path to a filename containing one feature name per line. See also the [security doc](/docs/en/writing-running-appium/security.md)|`--deny-insecure=foo,bar`| |`--log-filters`|null|Specify a full path to a JSON file containing one or more log filtering rules. This feature is useful for cases when it is necessary to obfuscate sensitive information, which may be present in server log records, like passwords or access tokens. The format of each rule is described in https://github.com/appium/appium-support/blob/master/lib/log-internal.js. An exception will be thrown on server startup if any of the rules has issues.|`--log-filters=/home/config.json`| + + +## Environment variables + +|Flag|Default|Description|Example| +|----|-------|-----------|-------| +|`APPIUM_PREFER_SYSTEM_UNZIP`|| Tell Appium to always prefer the built-in unzip implementation instead of trying to use the unzip executable bundled with the operationg system, whcih is usually more performance. Setting this environment variable to `0` or `false` could help to avoid issues similar to [appium#16050](https://github.com/appium/appium/issues/16050). This flag is available since Appium 1.22.1. | `0` `false` | diff --git a/docs/en/writing-running-appium/touch-actions.md b/docs/en/writing-running-appium/touch-actions.md index 326bbeeb715..a308f1fbf8e 100644 --- a/docs/en/writing-running-appium/touch-actions.md +++ b/docs/en/writing-running-appium/touch-actions.md @@ -141,11 +141,6 @@ scrollObject.Add("direction", "down"); ((IJavaScriptExecutor)driver).ExecuteScript("mobile: scroll", scrollObject)); ``` -```php -$params = array(array('direction' => 'down')); -$driver->executeScript("mobile: scroll", $params); -``` - Sample to scroll using direction and element. ```javascript @@ -180,11 +175,6 @@ scrollObject.Add("element", ); ((IJavaScriptExecutor)driver).ExecuteScript("mobile: scroll", scrollObject)); ``` -```php -$params = array(array('direction' => 'down', 'element' => element.GetAttribute("id"))); -$driver->executeScript("mobile: scroll", $params); -``` - **Swiping** This is an XCUITest driver specific method that is similar to scrolling (for reference, see diff --git a/docs/en/writing-running-appium/tutorial/swipe-tutorial.md b/docs/en/writing-running-appium/tutorial/swipe-tutorial.md index b77662db599..dfd1aacefe4 100644 --- a/docs/en/writing-running-appium/tutorial/swipe-tutorial.md +++ b/docs/en/writing-running-appium/tutorial/swipe-tutorial.md @@ -21,6 +21,10 @@ differences. 2. [Element swipe](swipe/simple-element.md) 3. [Partial Screen swipe](swipe/simple-partial-screen.md) +[W3C Actions](https://appium.io/docs/en/commands/interactions/actions/) +help to build advanced gestures. + + ### Android: 'UIScrollable' swipe 1. [Simple example](swipe/android-simple.md) @@ -42,4 +46,3 @@ differences. ### Swipe troubleshoot guide 1. [Swipe troubleshoot guide](swipe/swipe-troubleshoot-guide.md) - diff --git a/docs/en/writing-running-appium/web/hybrid.md b/docs/en/writing-running-appium/web/hybrid.md index 73c4967fd1f..1e88920848f 100644 --- a/docs/en/writing-running-appium/web/hybrid.md +++ b/docs/en/writing-running-appium/web/hybrid.md @@ -118,7 +118,7 @@ webview = driver.contexts.last driver.switch_to.context(webview) # do some webby stuff -driver.find_element(:css, ".green_button").click +driver.find_element(By.CSS, ".green_button").click # switch back to native view driver.switch_to.context(driver.contexts.first) @@ -128,34 +128,6 @@ driver.switch_to.context(driver.contexts.first) driver.quit() ``` -```php -// php -// assuming we have an initialized `driver` object in an AppiumTestCase - -public function testThings() -{ - $expected_contexts = array( - 0 => 'NATIVE_APP', - 1 => 'WEBVIEW_1' - ); - - $contexts = $this->contexts(); - $this->assertEquals($expected_contexts, $contexts); - - $this->context($contexts[1]); - $context = $this->context(); - $this->assertEquals('WEBVIEW_1', $context); - - // do webby stuff - - $this->context('NATIVE_APP'); - - // do mobile stuff -} -``` - - - ### Automating hybrid Android apps Appium comes with [built-in hybrid support via Chromedriver](/docs/en/writing-running-appium/web/chromedriver.md), diff --git a/docs/en/writing-running-appium/web/mobile-web.md b/docs/en/writing-running-appium/web/mobile-web.md index d8007827e62..bfeaa769150 100644 --- a/docs/en/writing-running-appium/web/mobile-web.md +++ b/docs/en/writing-running-appium/web/mobile-web.md @@ -39,21 +39,6 @@ Then, use desired capabilities like these to run your test in mobile Safari: } ``` -```php -// php -public static $browsers = array( - array( - 'desiredCapabilities' => array( - 'platformName' => 'iOS', - 'platformVersion' => '13.2', - 'automationName' => 'XCUITest', - 'browserName' => 'Safari', - 'deviceName' => 'iPhone 11' - ) - ) -); -``` - ```java // java DesiredCapabilities capabilities = new DesiredCapabilities(); @@ -160,35 +145,6 @@ driver.find_element_by_id('comments').send_keys('My comment') driver.quit() ``` -```php -// php -class ContextTests extends PHPUnit_Extensions_AppiumTestCase -{ - public static $browsers = array( - array( - 'desiredCapabilities' => array( - 'platformName' => 'iOS', - 'platformVersion' => '7.1', - 'automationName' => 'XCUITest', - 'browserName' => 'Safari', - 'deviceName' => 'iPhone 11' - ) - ) - ); - - public function testThings() - { - $this->get('http://saucelabs.com/test/guinea-pig'); - - $div = $this->byId('i_am_an_id'); - $this->assertEquals('I am a div', $div->text()); - - $this->byId('comments')->sendKeys('My comment'); - } -} -``` - - ### Android mobile web automation Appium supports automating the Chrome browser both real and emulated Android @@ -227,21 +183,6 @@ these to run your test in Chrome: } ``` -```php -// php -public static $browsers = array( - array( - 'desiredCapabilities' => array( - 'platformName' => 'Android', - 'platformVersion' => '9.0', - 'browserName' => 'Chrome', - 'automationName' => 'UIAutomator2', - 'deviceName' => 'Android Emulator' - ) - ) -); -``` - ```java // java DesiredCapabilities capabilities = new DesiredCapabilities(); diff --git a/docs/ja/about-appium/appium-clients.md b/docs/ja/about-appium/appium-clients.md new file mode 100644 index 00000000000..25854ffd1d5 --- /dev/null +++ b/docs/ja/about-appium/appium-clients.md @@ -0,0 +1,23 @@ +## Appium サーバーをサポートしているクライアントライブラリの一覧 + +これらのライブラリは、標準の Selenium クライアントライブラリをラップして、[JSON Wire プロトコル](https://w3c.github.io/webdriver/webdriver-spec.html) によって指定されたすべての通常の Selenium コマンドを提供し、**マルチタッチジェスチャー** や **画面の向き** などのモバイルデバイスの制御に関連した追加コマンドを追加します。 + +Appium クライアントライブラリは、[Mobile JSON Wire プロトコル](https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md) (標準プロトコルの公式ドラフト拡張) と、[W3C Webdriver 仕様](https://dvcs.w3.org/hg/webdriver/raw-file/default/webdriver-spec.html) (トランスポートに依存しない自動化仕様。ここでは MultiAction API が定義されています) の要素を実装しています。 + +Appium サーバー自体が公式プロトコルへのカスタム拡張を定義しており、Appium ユーザーに様々なデバイスの動作 (テストセッションの途中でアプリをインストール/アンインストールするなど) を実現する便利な入り口を提供します。これが、「素」な Selenium クライアントだけでなく、Appium 固有のクライアントが必要な理由です。もちろん、Appium クライアントライブラリは機能を**追加**するだけなので (実際には、標準の Selenium クライアントを拡張するだけです)、通常の Selenium セッションに使用できます。 + +言語/フレームワーク | Github のリポジトリとインストール手順 | +----- | ----- | +Ruby | [https://github.com/appium/ruby_lib](https://github.com/appium/ruby_lib), [https://github.com/appium/ruby_lib_core](https://github.com/appium/ruby_lib_core) +Python | [https://github.com/appium/python-client](https://github.com/appium/python-client) +Java | [https://github.com/appium/java-client](https://github.com/appium/java-client) +C# (.NET) | [https://github.com/appium/appium-dotnet-driver](https://github.com/appium/appium-dotnet-driver) + +### Community based + +言語/フレームワーク | Github のリポジトリとインストール手順 | +----- | ----- | +JavaScript (Node.js) | [https://github.com/admc/wd](https://github.com/admc/wd) +JavaScript (Node.js) | [https://github.com/webdriverio/webdriverio](https://github.com/webdriverio/webdriverio) +JavaScript (Browser) | [https://github.com/projectxyzio/web2driver](https://github.com/projectxyzio/web2driver) +RobotFramework | [https://github.com/serhatbolsu/robotframework-appiumlibrary](https://github.com/serhatbolsu/robotframework-appiumlibrary) diff --git a/docs/ja/about-appium/getting-started.md b/docs/ja/about-appium/getting-started.md new file mode 100644 index 00000000000..5c147a2aa56 --- /dev/null +++ b/docs/ja/about-appium/getting-started.md @@ -0,0 +1,274 @@ +## はじめに + +このドキュメントでは、簡単な Appium テストを実施して、 +Appium の基本的な考え方をご紹介します。 +Appium の概念をより包括的に紹介するためには、[概念的な紹介](/docs/ja/about-appium/intro.md)をご覧ください。 + +### Appium のインストール + +Appium は、[NPM](https://npmjs.com) 経由でインストールするか、 +Appium サーバーを起動するためのグラフィカルなデスクトップベースの方法である [Appium Desktop](https://github.com/appium/appium-desktop) をダウンロードする +2つの方法のいずれかでインストールすることができます。 + +#### NPM 経由でのインストール + +`npm install` で Appium を実行したり、Appium でハックしたり、Appium に貢献したりするには、 +[Node.js と NPM](http://nodejs.org) が必要です +(Node.js をインストールするには、 +[nvm](https://github.com/creationix/nvm)、[n](https://github.com/visionmedia/n)、`brew install node` を使用してください。 +`sudo` で Node や Appium をインストールしていないことを確認してください)。 +Appium は Node 10+ をサポートしていますが、 +最新の安定版を推奨します。 + +実際のインストールはこんな感じで簡単です。 + +``` +npm install -g appium +``` + +#### デスクトップアプリのダウンロードからのインストール + +[リリースページ](https://github.com/appium/appium-desktop/releases)から +Appium Desktop の最新版をダウンロードするだけです。 + +### ドライバー固有の設定 + +iOS や Android アプリケーションのように、 +特定のものを自動化するために Appium を使用したいと思うでしょう。 +特定のプラットフォームの自動化のサポートは、Appium の「ドライバ」によって提供されます。 +さまざまな種類の自動化技術へのアクセスを提供するこのようなドライバは多数あり、 +それぞれが各々のセットアップ要件を持っています。 +これらの要件のほとんどは、特定のプラットフォームでのアプリ開発と同じ要件です。 +例えば、Android ドライバを使用して Android アプリケーションを自動化するには、 +お使いのシステム上で設定された Android SDK が必要です。 + +ある時点で、自動化したいプラットフォームのドライバのドキュメントを確認して、 +システムが正しくセットアップされていることを確認してください。 + +- [XCUITest Driver](/docs/en/drivers/ios-xcuitest.md) (iOS と tvOS アプリ用) +- [Espresso ドライバー](/docs/en/drivers/android-espresso.md) (Android アプリ用) +- [UiAutomator2 ドライバー](/docs/en/drivers/android-uiautomator2.md) (Android アプリ用) +- [Windows ドライバー](/docs/en/drivers/windows.md) (Windows デスクトップアプリ用) +- [Mac ドライバー](/docs/en/drivers/mac.md) (Mac デスクトップアプリ用) + +### インストールの確認 + +Appium の依存関係がすべて満たされていることを確認するには、`appium-doctor` を使うことができます。 +`npm install -g appium-doctor` でインストールし、 +`appium-doctor` コマンドを実行して `--ios` または `--android` フラグを指定して、 +すべての依存関係が正しく設定されていることを確認します。 + +### Appium クライアント + +すべてが呼ばれた時、Appium はただの HTTP サーバーです。 +それはその状態でクライアントからの接続を待ち、 +クライアントはどのような種類のセッションを開始するか、セッションが開始されるとどのような自動化動作を実行するかを Appium に指示します。 +これは、Appium を単独では決して使用しないことを意味します。 +常に何らかの種類のクライアントライブラリ (または、冒険的な場合は cURL!) と一緒に使用する必要があります。 + +幸いなことに、Appium は WebDriver プロトコルと呼ばれる [Selenium](http://www.seleniumhq.org/) と同じプロトコルを話します。 +標準の Selenium クライアントの 1 つを使用するだけで、 +Appium で多くのことを行うことができます。 +あなたのシステムにはすでにこれらのクライアントがあるかもしれません。 +特にモバイルプラットフォーム上の Web ブラウザをテストする目的で Appium を使用している場合は、 +それだけで十分です。 + +しかし、モバイルデバイスが Web ブラウザではできないことを行えるように、 +Appium は Selenium ではできないことを行えます。 +そのため、私たちは様々なプログラミング言語の +Appium クライアントを用意しています。 +クライアントのリストとダウンロード手順へのリンクは +[Appium クライアントのリスト](/docs/en/about-appium/appium-clients.md)で見ることができます。 + +先に進む前に、お好きな言語でクライアントをダウンロードし、 +準備ができていることを確認してください。 + +### Appium の開始 + +(NPMのインストールが成功したと仮定して) +これで、以下のようにコマンドラインから実行することで、Appium サーバーをキックアップすることができます。 + +``` +appium +``` + +または、Appium Desktop 内の巨大な Start Server ボタンをクリックしてください。 + +Appium は、実行している Appium のバージョンとどのポートを待ち受けているかを示す小さなウェルカムメッセージを表示します +(デフォルトは `4723` です)。 +このポートで Appium に接続するようにテストクライアントを設定する必要があるので、 +このポート情報は重要です。 +ポートを変更したい場合は、 +Appium を起動する際に `-p` フラグを使用して変更することができます +([サーバーパラメータ](/docs/en/writing-running-appium/server-args.md)の全リストを確認してください)。 + +### 最初のテストの実行 + +このセクションでは、基本的な "Hello World" の Android テストを実行します。 +Android を選択したのは、すべてのプラットフォームで利用可能だからです。 +[UiAutomator2 Driver](/docs/en/drivers/android-uiautomator2.md)を使用しますので、 +そのドキュメントを読み、システムを適切に設定してください。 +また、言語として JavaScript を使用しますので、 +追加の依存関係に対処する必要はありません。 + +(Android 以外のものを +JavaScript 以外のものを使って自動化したいと思うこともあるでしょう。 +その場合は、多くの言語やプラットフォームに対応した +[コードサンプル](https://github.com/appium/appium/tree/master/sample-code)を用意しています。) + +#### 前提条件 + +- あなたが Android 8.0 エミュレータを設定して実行していると仮定します + (例は、バージョン番号を調整することで + より低バージョンで動作します。) +- あなたが[このテスト APK](https://github.com/appium/appium/raw/master/sample-code/apps/ApiDemos-debug.apk) をダウンロードして、 + ローカルファイルシステム上で + 利用可能であると仮定します + +#### Appium クライアントの設定 + +この例では、Appium クライアントとして [Webdriver.io](http://webdriver.io) を使用します。 +この例のディレクトリを作成し、実行します。 + +``` +npm init -y +``` +プロジェクトを初期化したら、`webdriverio` をインストールします: +``` +npm install webdriverio +``` + +#### セッションの初期化 + +ここで `index.js` という名前のテストファイルを作成し、 +クライアントオブジェクトを初期化します: + +```js +// javascript +const wdio = require("webdriverio"); +``` + +次にやるべきことは、Appium セッションを開始することです。 +これを行うには、サーバーオプションと Desired Capabilities のセットを定義し、 +それらを使って `wdio.remote()` を呼び出します。 +Desired Capabilities は、セッションの初期化中に Appium サーバーに送信されるキーと値の集合で、 +どのようなことを自動化したいかを Appium に伝えます。 +どのような Appium ドライバでも、以下の項目が必要な capabilities の最小セットになります。 + +- `platformName`: 自動化するプラットフォームの名前 +- `platformVersion`: 自動化するプラットフォームのバージョン +- `deviceName`: 自動化するデバイスの種類 +- `app`: 自動化したいアプリへのパス (ただし、Web ブラウザを自動化する場合は代わりに + `browserName` capability を使用します) +- `automationName`: 使用するドライバーの名前 + +Desired Capabilities の詳細と、 +Appium で使用できるすべての機能のリストについては、 +[Capabilities doc](/docs/en/writing-running-appium/caps.md)を参照してください。 + +ここでは、以下のテストファイルでセッションを構築する方法を説明します: + +```js +// javascript +const opts = { + path: '/wd/hub', + port: 4723, + capabilities: { + platformName: "Android", + platformVersion: "8", + deviceName: "Android Emulator", + app: "/path/to/the/downloaded/ApiDemos-debug.apk", + appPackage: "io.appium.android.apis", + appActivity: ".view.TextFields", + automationName: "UiAutomator2" + } +}; + +async function main () { + const client = await wdio.remote(opts); + + await client.deleteSession(); +} + +main(); +``` + +#### テストコマンドの実行 + +Appium ポートを指定し、要件に一致するように Desired Capabilities を構築したことがわかります +(ただし、パスをあなたのシステムの実際のダウンロードパスに置き換えることを忘れないでください)。 +この事実を `webdriverio` に登録して、 +Appium サーバーへの接続を表すクライアントオブジェクトができました。 +ここから先に進み、セッションを開始し、いくつかのテストコマンドを実行し、セッションを終了することができます。 +ここでは、テキストフィールドに入力して、 +正しいテキストが入力されたかどうかを確認します: + +```js +// javascript + +const field = await client.$("android.widget.EditText"); +await field.setValue("Hello World!"); +const value = await field.getText(); +assert.strictEqual(value, "Hello World!"); +``` + +ここで何が起こっているのかというと、セッションを作成してアプリを起動した後、 +アプリ階層で要素を見つけて入力するように Appium に指示しています。 +次に、同じフィールドにテキストを問い合わせ、 +期待通りのテキストであることを主張します。 + +すべてをまとめると、ファイルは次のようになります: + +```js +// javascript + +const wdio = require("webdriverio"); +const assert = require("assert"); + +const opts = { + path: '/wd/hub', + port: 4723, + capabilities: { + platformName: "Android", + platformVersion: "8", + deviceName: "Android Emulator", + app: "/path/to/the/downloaded/ApiDemos-debug.apk", + appPackage: "io.appium.android.apis", + appActivity: ".view.TextFields", + automationName: "UiAutomator2" + } +}; + +async function main () { + const client = await wdio.remote(opts); + + const field = await client.$("android.widget.EditText"); + await field.setValue("Hello World!"); + const value = await field.getText(); + assert.strictEqual(value,"Hello World!"); + + await client.deleteSession(); +} + +main(); +``` + +このテストを自分で実行してみることができます。 +保存して `node` を使って実行するだけです: +``` +node index.js +``` +すべてが正しく設定されている場合、 +Appium がたくさんのログを吐き出し始め、 +最終的にはアプリが画面上にポップアップし、見えないユーザーがタップしているかのように動作を開始するのがわかります。 + +### 次は何をするか + +Appium でできることについては、まだ表面上のことに過ぎません。 +これらのリソースをチェックして、あなたの旅に役立たせてください: + +- Appium [コマンドリファレンス](https://appium.io/docs/en/commands/status/) - どのようなコマンドが利用可能か、特定のクライアントライブラリでの使用方法などについて学びます +- [サンプルコード](https://github.com/appium/appium/tree/master/sample-code) ディレクトリには、他にもたくさんのコードサンプルがあります + +- [discuss.appium.io](https://discuss.appium.io) - これは Appium コミュニティのフォーラムです。バグに遭遇したかもしれないと思った場合、または始めるための助けを得るために最初に行くのに最適な場所です +- Appium [不具合トラッカー](https://github.com/appium/appium/issues) - バグを見つけたと思ったら、Appium メンテナに知らせてください diff --git a/docs/ja/about-appium/intro.md b/docs/ja/about-appium/intro.md new file mode 100644 index 00000000000..ed2ae2e5d33 --- /dev/null +++ b/docs/ja/about-appium/intro.md @@ -0,0 +1,138 @@ +## Appium 入門 + +Appium は、iOS モバイル、Android モバイル、Windows デスクトッププラットフォーム上の +ネイティブ、モバイル Web、ハイブリッドアプリケーションを自動化するためのオープンソースツールです。 +**ネイティブアプリ**とは、iOS、Android、または Windows SDK を使用して開発されたアプリのことです。 +**モバイル Web アプリ**は、モバイルブラウザを使用してアクセスする Web アプリです (Appium は、iOS では Safari、Android では Chrome または標準の Browser アプリをサポートしています)。 +**ハイブリッドアプリ**は、Web コンテンツとのインタラクションを可能にする標準的な仕組みである「WebView」のラッパーを持っています。 +[Apache Cordova](https://cordova.apache.org) のようなプロジェクトでは、 +Web 技術を使用してアプリを簡単に構築することができ、 +それをネイティブのラッパーにバンドルしてハイブリッドアプリを作成することができます。 + +重要なことは、Appium は「クロスプラットフォーム」であるということです。 +つまり、同じ API を使用して、複数のプラットフォーム (iOS、Android、Windows) に対してテストを書くことができます。 +これにより、iOS、Android、Windows のテストスイート間でコードを再利用することができます。 + +Appium がそのプラットフォームを「サポート」することの意味、 +および自動化の様式についての具体的な情報は、 +[プラットフォームサポートドキュメント](/docs/ja/about-appium/platform-support.md)を参照してください。 + +### Appium の理念 + +Appium は、次の4つの信条によって概説された理念に従って、 +モバイルオートメーションのニーズを満たすように設計されました。 + +1. アプリを自動化するために、 +アプリを再コンパイルしたり、修正したりする必要はありません +2. テストを書いて実行するために、 +特定の言語やフレームワークに縛られるべきではありません +3. モバイルオートメーションフレームワークは、 +自動化 API に関しては、車輪の再発明をしてはいけません +4. モバイルオートメーションフレームワークは、名前だけでなく、 +精神的にも実践的にもオープンソースでなければなりません! + +### Appium のデザイン + +では、Appium プロジェクトの構造はどのようにしてこの理念を実現しているのでしょうか? +ベンダーが提供する自動化フレームワークを基盤に利用することで、要件 1 を満たしています。 +この方法では、Appium 固有のコードやサードパーティのコードやフレームワークをアプリに組み込む必要はありません。 +つまり、**出荷するアプリと同じアプリをテストしていることになります**。 +使用しているベンダー提供のフレームワークは以下の通りです。 + +* iOS 9.3 以上: Apple の [XCUITest](https://developer.apple.com/reference/xctest) +* iOS 9.3 以下: Apple の [UIAutomation](https://web.archive.org/web/20160904214108/https://developer.apple.com/library/ios/documentation/DeveloperTools/Reference/UIAutomationRef/) +* Android 4.3 以上: Google の [UiAutomator/UiAutomator2](https://developer.android.com/training/testing/ui-automator) +* Windows: Microsoft の [WinAppDriver](http://github.com/microsoft/winappdriver) + +ベンダーが提供するフレームワークを +[WebDriver](http://docs.seleniumhq.org/projects/webdriver/) API という1つの API でラップすることで要件 2 を満たしています。 +WebDriver (別名 "Selenium WebDriver") は、([JSON Wire Protocol](https://w3c.github.io/webdriver/webdriver-spec.html) として知られる) +クライアント - サーバープロトコルを指定します。 +このクライアント - サーバーアーキテクチャを考えると、任意の言語で書かれたクライアントを使用して、 +適切な HTTP リクエストをサーバーに送信することができます。 +既に[あらゆる一般的なプログラミング言語で書かれたクライアント](http://appium.io/downloads) +が存在します。 +これはまた、好きなテストランナーやテストフレームワークを +自由に使用できることを意味します。 +言い換えれば、Appium と WebDriver クライアントは技術的には「テストフレームワーク」ではなく、 +「自動化ライブラリ」です。 +テスト環境を +好きなように管理することができます。 + +同様に要件 3 を満たしています。 +WebDriver は、Web ブラウザを自動化するためのデファクトスタンダードとなっており、 +[W3C のワーキングドラフト](https://dvcs.w3.org/hg/webdriver/raw-file/tip/webdriver-spec.html)です。 +なぜモバイル用に全く違うことをするのでしょうか? +その代わりに、モバイルの自動化に役立つ API メソッドを追加して +[プロトコルを拡張](https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md)しました。 + +要件 4 が与えられたものであることは明らかなはずです。 +あなたがこれを読んでいるのは、[Appium がオープンソース](https://github.com/appium/appium)だからです。 + +### Appium の概念 + +#### **クライアント/サーバー アーキテクチャ** + +Appium は、REST API を公開する Web サーバーです。 +クライアントからの接続を受信し、コマンドを待ち受け、 +モバイル デバイス上でそれらのコマンドを実行し、コマンドの実行結果を表す HTTP レスポンスで応答します。 +クライアント/サーバー アーキテクチャがあるという事実は、多くの可能性を開きます。 +HTTP クライアントの API を持つどの言語でもテストコードを書くことができますが、 +[Appium クライアントライブラリ](http://appium.io/downloads)の 1 つを使用する方が簡単です。 +テストが実行されているマシンとは別のマシンにサーバーを置くことができます。 +テストコードを書き、コマンドを受信して解釈するために +[Sauce Labs](https://saucelabs.com/products/mobile-app-testing) や [LambdaTest](https://www.lambdatest.com/feature) のようなクラウドサービスに頼ることもできます。 + +#### **セッション** +オートメーションは常にセッションのコンテキストで実行されます。 +クライアントはそれぞれのライブラリに固有の方法でサーバーとのセッションを開始しますが、 +最終的にはサーバーに `POST /session` リクエストを送信し、'desired capabilities' オブジェクトと呼ばれる JSON オブジェクトを送信します。 +この時点で、サーバーはオートメーションセッションを起動し、 +さらにコマンドを送信するために使用されるセッション ID で応答します。 + +#### **Desired capabilities** +Desired capabilities とは、どのような種類の自動化セッションの起動に興味があるかをサーバーに伝えるために、 +Appium サーバーに送られるキーと値のセット (すなわち、マップやハッシュ) です。 +また、自動化中にサーバーの動作を変更できる様々な機能があります。 +例えば、Android や Windows のセッションではなく、 +iOS のセッションが必要であることを Appium に伝えるために、 +`platformName` capability を `iOS` に設定することができます。 +また、Safari の自動化セッション中に JavaScript を使用して新しいウィンドウを開くことができるようにするために、 +`safariAllowPopups` の capability を `true` に設定することもできます。 +Appium で利用可能な機能の完全なリストについては、[capabilities のドキュメント](/docs/en/writing-running-appium/caps.md) を参照してください。 + +#### **Appium サーバー** +Appium は Node.js で書かれたサーバーです。 +ソースからビルドしてインストールすることもできますし、 +[NPM](https://www.npmjs.com/package/appium) から直接インストールすることもできます。 + +``` +$ npm install -g appium +$ appium +``` + +Appium の `ベータ版` は `npm install -g appium@beta` で NPM 経由で公開されています。 +開発版なので、変更点があるかもしれません。 +新しいバージョンをインストールする前に +`appium@beta` をアンインストールしてください (`npm uninstall -g appium@beta`)。 + +#### **Appium クライアント** +WebDriver プロトコルへの Appium の拡張をサポートする +クライアントライブラリ (Java、Ruby、Python、PHP、JavaScript、および C#) があります。 +Appium を使用する場合は、 +通常の WebDriver クライアントの代わりにこれらのクライアントライブラリを使用します。 +ライブラリの完全なリストは[ここ](/docs/en/about-appium/appium-clients.md)で見ることができます。 + +#### **[Appium デスクトップ](https://github.com/appium/appium-desktop)** +Appium サーバーの GUI ラッパーがあり、どのプラットフォーム用にもダウンロードできます。 +Appium サーバーを実行するために必要なすべてのものがバンドルされているので、 +Node について心配する必要はありません。 +また、インスペクタが付属しており、アプリの階層をチェックアウトすることができます。 +これはテストを書くときに便利です。 + +### はじめに + +おめでとうございます! +これで、Appium の使用を開始するのに十分な知識が身につきました。 +より詳細な要件と指示のために、 +[始め方のドキュメント](/docs/en/about-appium/getting-started.md) をご覧になってみてはいかがでしょうか? diff --git a/docs/ja/about-appium/platform-support.md b/docs/ja/about-appium/platform-support.md new file mode 100644 index 00000000000..f8745b42146 --- /dev/null +++ b/docs/ja/about-appium/platform-support.md @@ -0,0 +1,97 @@ +## Appium プラットフォームのサポート + +Appium は、さまざまなプラットフォームとテストの様式 +(ネイティブ、ハイブリッド、Web、リアルデバイス、シミュレータなど) をサポートしています。 +このドキュメントは、これらのそれぞれのサポートレベルと要件を明示するように設計されています。 +もしくは、それぞれの適切なページへ案内します。 + +## Appium team support + +以下はAppiumの開発チームによりサポートされるドライバーです。 + +### iOS のサポート + +iOS の自動化は2つのドライバーでサポートされています: + +* [XCUITest Driver](/docs/en/drivers/ios-xcuitest.md) +* (非推奨) [UIAutomation Driver](/docs/en/drivers/ios-uiautomation.md) +* [safaridriver](/docs/en/drivers/safari.md) は Apple の [safaridriver](https://developer.apple.com/documentation/webkit/testing_with_webdriver_in_safari?language=objc) + +設定方法については、これらのドライバーのドキュメントを参照してください。 + +* バージョン: 12.2 以上 (原則として、Appium は iOS の最新バージョン2つをサポートしています) +* デバイス: iPhone、iPad、tvOS 用のシミュレータと実機 +* ネイティブアプリのサポート: はい、デバッグバージョンの .app (シミュレータ) + または正しく署名された .ipa (実機) を使用しています。 + 基本的なサポートは、Apple の [XCUITest](https://developer.apple.com/reference/xctest) (古いバージョンでは [UIAutomation](https://web.archive.org/web/20160904214108/https://developer.apple.com/library/ios/documentation/DeveloperTools/Reference/UIAutomationRef/)) フレームワークによって + 提供されています +* モバイル Web のサポート: はい、モバイル Safari の自動化機構を経由できます。 + 手順については、[モバイル Web ドキュメント](/docs/en/writing-running-appium/web/mobile-web.md)を参照してください +* ハイブリッドサポート: はい。 + 手順については、[ハイブリッドドキュメント](/docs/en/writing-running-appium/web/hybrid.md)を参照してください +* 1つのセッションで複数のアプリの自動化をサポート: いいえ +* 複数のデバイスの同時自動化のサポート: はい +* ベンダー提供またはサードパーティ製アプリの自動化をサポート: はい。予め端末にインストールされている必要があります。 +* カスタムの非標準 UI コントロールの自動化のサポート: 最小限の設定です。 + 基本的な自動化を可能にするコントロールに + アクセシビリティ情報を設定する必要があります + +### Android のサポート + +Android の自動化は2つのドライバーでサポートされています: + +* [UiAutomator2 Driver](/docs/en/drivers/android-uiautomator2.md) +* [Espresso Driver](/docs/en/drivers/android-espresso.md) +* (非推奨) [UiAutomator Driver](/docs/en/drivers/android-uiautomator.md) +* Firefox や [GeckoView](https://wiki.mozilla.org/Mobile/GeckoView) 向けの [geckodriver](/docs/en/drivers/gecko.md) + +設定方法については、これらのドライバーのドキュメントを参照してください。 + +* バージョン: 4.3 以上 + * バージョン 4.3 以降は、Appium の [UiAutomator と UiAutomator2](http://developer.android.com/tools/testing-support-library/index.html#UIAutomator) ライブラリを介してサポートされています。 + UiAutomator はデフォルトのドライバーです +* デバイス: Android エミュレータと実機の Android 端末 +* ネイティブアプリのサポート: はい +* モバイル Web のサポート: はい。自動化は、バンドルされている [Chromedriver](http://chromedriver.chromium.org) サーバーを + プロキシとして使用して行われます。 + 4.3 では、公式の Chrome ブラウザまたは Chromium 上でのみ自動化が動作します。 + 4.4 以上では、自動化は標準の「ブラウザ」アプリでも動作します。 + Chrome / Chromium / Browser がテスト対象のデバイスに既にインストールされている必要があります。 + 手順については、[モバイル Web ドキュメント](/docs/en/writing-running-appium/web/mobile-web.md)を参照してください +* ハイブリッドサポート: はい。[ハイブリッドドキュメント](/docs/en/writing-running-appium/web/hybrid.md)を参照してください + * デフォルトの Appium オートメーションバックエンドを使用した場合: バージョン 4.4 以降 +* 1つのセッションで複数のアプリの自動化をサポート: はい +* 複数のデバイスの同時自動化のサポート: はい。 + ただし、Appium はサーバーパラメータ `--port`、`--bootstrap-port` や `--chromedriver-port` に対して + 異なるポートを使用して起動しなければなりません。 + これらのパラメータの詳細については + [サーバー引数のドキュメント](/docs/en/writing-running-appium/server-args.md) を参照してください +* ベンダー提供またはサードパーティ製アプリの自動化をサポート: はい +* カスタムの非標準 UI コントロールの自動化のサポート: いいえ + + +### macOS サポート + +macOS の自動化は以下のドライバーによってサポートされます。 + +* macOS 10.15 以上 [Mac2Driver](/docs/en/drivers/mac2.md) +* macOS 10.15 未満 (非推奨) [MacDriver](/docs/en/drivers/mac.md) + +### Windows デスクトップのサポート + +Windows の自動化は以下のドライバーによってサポートされます。 + +* [WinAppDriver](/docs/en/drivers/windows.md) +* Firefox と [GeckoView](https://wiki.mozilla.org/Mobile/GeckoView) は [geckodriver](/docs/en/drivers/gecko.md) + +## ベンダー/コミュニティー + +以下はベンダーやコミュニティーによってサポートされるドライバーです。 + +### You.i Engine Support + +* [You.i Engine](https://github.com/YOU-i-Labs/appium-youiengine-driver) + +### Flutter Support + +* [Flutter Driver](https://github.com/truongsinh/appium-flutter-driver) diff --git a/docs/toc.js b/docs/toc.js index 0bb93e29621..b16921f73b5 100644 --- a/docs/toc.js +++ b/docs/toc.js @@ -20,6 +20,7 @@ module.exports = { ['Safari (Mac/iOS)', 'safari.md'], ['Gecko (Firefox)', 'gecko.md'], ['Mac', 'mac.md'], + ['Mac2', 'mac2.md'], ]], ['Commands', ['commands', ['Status', 'status.md'], @@ -317,6 +318,7 @@ module.exports = { ['Appium Style Guide', 'style-guide.md'], ['How to Write Docs', 'how-to-write-docs.md'], ['Appium Package Structure', 'appium-packages.md'], + ['Release Appium', 'release-appium.md'], ['Credits', 'credits.md']]] ], cn: [ @@ -327,17 +329,17 @@ module.exports = { ['已支持的平台', 'platform-support.md'], // ['API 文档', 'api.md'], ]], - /*['驱动程序', ['drivers', + ['驱动程序', ['drivers', ['XCUITest (iOS)', 'ios-xcuitest.md'], ['XCUITest Real Devices (iOS)', 'ios-xcuitest-real-devices.md'], - ['UIAutomation (iOS)', 'ios-uiautomation.md'], - ['UIAutomation Safari Launcher (iOS)', 'ios-uiautomation-safari-launcher.md'], - ['UIAutomator (Android)', 'android-uiautomator.md'], + // ['UIAutomation (iOS)', 'ios-uiautomation.md'], + // ['UIAutomation Safari Launcher (iOS)', 'ios-uiautomation-safari-launcher.md'], + // ['UIAutomator (Android)', 'android-uiautomator.md'], ['UIAutomator2 (Android)', 'android-uiautomator2.md'], - ['Espresso (Android)', 'android-espresso.md'], - ['Windows', 'windows.md'], - ['Mac', 'mac.md'], - ]],*/ + // ['Espresso (Android)', 'android-espresso.md'], + // ['Windows', 'windows.md'], + // ['Mac', 'mac.md'], + ]], ['编写 & 运行测试', ['writing-running-appium', ['运行测试', 'running-tests.md'], ['预期功能', 'caps.md'], @@ -397,5 +399,14 @@ module.exports = { ['如何编写文档', 'how-to-write-docs.md'], ['Appium 包结构', 'appium-packages.md'], ['鸣谢', 'credits.md']]] + ], + ja: [ + ['ホーム', 'about-appium/intro.md'], + ['概要', ['about-appium', + ['イントロ', 'intro.md'], + ['Appium クライアント', 'appium-clients.md'], + ['はじめに', 'getting-started.md'], + ['サポートプラットフォーム', 'platform-support.md'], + ]] ] }; diff --git a/lib/appium.js b/lib/appium.js index 32691180b5b..b5af6e572c2 100644 --- a/lib/appium.js +++ b/lib/appium.js @@ -19,6 +19,9 @@ const PLATFORMS = { WINDOWS: 'windows', MAC: 'mac', TIZEN: 'tizen', + LINUX: 'linux', + ROKU: 'roku', + WEBOS: 'webos' }; const AUTOMATION_NAMES = { @@ -33,9 +36,12 @@ const AUTOMATION_NAMES = { INSTRUMENTS: 'Instruments', WINDOWS: 'Windows', MAC: 'Mac', + MAC2: 'Mac2', FLUTTER: 'Flutter', SAFARI: 'Safari', GECKO: 'Gecko', + ROKU: 'Roku', + WEBOS: 'WebOS' }; const DRIVER_MAP = { [AUTOMATION_NAMES.UIAUTOMATOR2.toLowerCase()]: { @@ -70,6 +76,10 @@ const DRIVER_MAP = { driverClassName: 'MacDriver', driverPackage: 'appium-mac-driver', }, + [AUTOMATION_NAMES.MAC2.toLowerCase()]: { + driverClassName: 'Mac2Driver', + driverPackage: 'appium-mac2-driver', + }, [AUTOMATION_NAMES.ESPRESSO.toLowerCase()]: { driverClassName: 'EspressoDriver', driverPackage: 'appium-espresso-driver', @@ -90,6 +100,14 @@ const DRIVER_MAP = { driverClassName: 'GeckoDriver', driverPackage: 'appium-geckodriver' }, + [AUTOMATION_NAMES.ROKU.toLowerCase()]: { + driverClassName: 'RokuDriver', + driverPackage: 'appium-roku-driver' + }, + [AUTOMATION_NAMES.WEBOS.toLowerCase()]: { + driverClassName: 'WebOSDriver', + driverPackage: 'appium-webos-driver' + }, }; const PLATFORMS_MAP = { @@ -139,6 +157,9 @@ const PLATFORMS_MAP = { [PLATFORMS.WINDOWS]: () => AUTOMATION_NAMES.WINDOWS, [PLATFORMS.MAC]: () => AUTOMATION_NAMES.MAC, [PLATFORMS.TIZEN]: () => AUTOMATION_NAMES.TIZEN, + [PLATFORMS.LINUX]: () => AUTOMATION_NAMES.GECKO, + [PLATFORMS.ROKU]: () => AUTOMATION_NAMES.ROKU, + [PLATFORMS.WEBOS]: () => AUTOMATION_NAMES.WEBOS }; const desiredCapabilityConstraints = { diff --git a/lib/main.js b/lib/main.js index 54240179654..ea3a5be8cee 100755 --- a/lib/main.js +++ b/lib/main.js @@ -1,7 +1,7 @@ #!/usr/bin/env node // transpile:main -import { init as logsinkInit } from './logsink'; +import { init as logsinkInit, clear as logsinkClear } from './logsink'; import logger from './logger'; // logger needs to remain first of imports import _ from 'lodash'; import { server as baseServer, routeConfiguringFunction as makeRouter } from 'appium-base-driver'; @@ -130,13 +130,17 @@ async function main (args = null) { await logStartupInfo(parser, args); let appiumDriver = new AppiumDriver(args); let routeConfiguringFunction = makeRouter(appiumDriver); - let server = await baseServer({ + const serverOpts = { routeConfiguringFunction, port: args.port, hostname: args.address, allowCors: args.allowCors, basePath: args.basePath, - }); + }; + if (args.keepAliveTimeout) { + serverOpts.keepAliveTimeout = args.keepAliveTimeout * 1000; + } + let server = await baseServer(serverOpts); if (args.allowCors) { logger.warn('You have enabled CORS requests from any host. Be careful not ' + 'to visit sites which could maliciously try to start Appium ' + @@ -160,14 +164,18 @@ async function main (args = null) { process.once(signal, async function onSignal () { logger.info(`Received ${signal} - shutting down`); try { - await appiumDriver.deleteAllSessions({ - force: true, - reason: `The process has received ${signal} signal`, - }); - await server.close(); + try { + await appiumDriver.deleteAllSessions({ + force: true, + reason: `The process has received ${signal} signal`, + }); + logsinkClear(); + } finally { + await server.close(); + } process.exit(0); } catch (e) { - logger.warn(e); + logger.error(e.message); process.exit(1); } }); diff --git a/lib/parser.js b/lib/parser.js index 0c79fd6cb71..48cc61430e2 100644 --- a/lib/parser.js +++ b/lib/parser.js @@ -66,6 +66,15 @@ const args = [ 'on this server' }], + [['-ka', '--keep-alive-timeout'], { + required: false, + default: null, + dest: 'keepAliveTimeout', + type: 'int', + help: 'Number of seconds the Appium server should apply as both the keep-alive timeout ' + + 'and the connection timeout for all requests. Defaults to 600 (10 minutes).' + }], + [['-ca', '--callback-address'], { required: false, dest: 'callbackAddress', diff --git a/package.json b/package.json index e53571e059d..a93976600a0 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "firefoxos", "testing" ], - "version": "1.20.0-beta.0", + "version": "1.23.0-beta.0", "author": "https://github.com/appium", "license": "Apache-2.0", "repository": { @@ -22,13 +22,12 @@ "url": "https://github.com/appium/appium/issues" }, "engines": { - "node": ">=8", - "npm": ">=6" + "node": ">=12", + "npm": ">=6.9" }, "main": "./build/lib/main.js", "bin": { - "appium": "./build/lib/main.js", - "authorize-ios": "./node_modules/.bin/authorize-ios" + "appium": "./build/lib/main.js" }, "directories": { "lib": "./lib", @@ -46,29 +45,30 @@ "appium-base-driver": "^7.0.0", "appium-espresso-driver": "^1.0.0", "appium-fake-driver": "^1.x", - "appium-flutter-driver": "^0", - "appium-geckodriver": "^0.3.0", + "appium-flutter-driver": "^0.x", + "appium-geckodriver": "^0.x", "appium-ios-driver": "4.x", "appium-mac-driver": "1.x", + "appium-mac2-driver": "^0.x", "appium-safari-driver": "^2.1.0", "appium-support": "2.x", "appium-tizen-driver": "^1.1.1-beta.4", "appium-uiautomator2-driver": "^1.37.1", "appium-windows-driver": "1.x", "appium-xcuitest-driver": "^3.27.6", - "appium-youiengine-driver": "^1.2.0", + "appium-youiengine-driver": "^1.2.9", "argparse": "^2.0.1", "async-lock": "^1.0.0", "asyncbox": "2.x", - "axios": "^0.21.0", + "axios": "^0.x", "bluebird": "3.x", "continuation-local-storage": "3.x", "find-root": "^1.1.0", "lodash": "^4.17.11", "longjohn": "^0.2.12", - "npmlog": "4.x", + "npmlog": "5.x", "semver": "^7.0.0", - "source-map-support": "0.x", + "source-map-support": "^0.x", "teen_process": "1.x", "winston": "3.x", "word-wrap": "^1.2.3" @@ -95,8 +95,7 @@ "generate-docs": "node ./build/commands-yml/parse.js", "zip": "zip -qr appium.zip .", "upload": "gulp github-upload", - "zip-and-upload": "npm run zip && npm run upload", - "authorize-ios": "authorize-ios" + "zip-and-upload": "npm run zip && npm run upload" }, "pre-commit": [ "precommit-msg", @@ -110,11 +109,11 @@ "fancy-log": "^1.3.2", "gulp": "^4.0.0", "handlebars": "^4.2.0", - "mocha": "^8.0.1", + "mocha": "^9.0.0", "pre-commit": "1.x", - "sinon": "^9.0.0", + "sinon": "^11.1.1", "validate.js": "^0.13.0", "wd": "^1.10.0", - "yaml-js": "^0.2.0" + "yaml-js": "^0.x" } } diff --git a/renovate.json b/renovate.json new file mode 100644 index 00000000000..d6a26d1e13f --- /dev/null +++ b/renovate.json @@ -0,0 +1,19 @@ +{ + "extends": [ + "config:base", + ":semanticCommitTypeAll(chore)", + ":pinAllExceptPeerDependencies" + ], + "packageRules": [ + { + "matchUpdateTypes": ["minor", "patch", "pin", "digest"], + "automerge": true + } + ], + "baseBranches": ["2.0"], + "ignorePaths": ["sample-code"], + "semanticCommits": "enabled", + "semanticCommitScope": "{{parentDir}}", + "schedule": ["after 10pm and before 5:00am"], + "timezone": "America/Vancouver" +} diff --git a/sample-code/apps/ApiDemos-debug.apk b/sample-code/apps/ApiDemos-debug.apk index e972bcb766d..b9be619f3d5 100644 Binary files a/sample-code/apps/ApiDemos-debug.apk and b/sample-code/apps/ApiDemos-debug.apk differ diff --git a/sample-code/javascript-webdriverio/package.json b/sample-code/javascript-webdriverio/package.json index 82856ffc488..8639bce45c0 100644 --- a/sample-code/javascript-webdriverio/package.json +++ b/sample-code/javascript-webdriverio/package.json @@ -7,12 +7,15 @@ "test": "mocha test/basic", "clean": "rm -rf node_modules && rm -f package-lock.json && npm install" }, + "mocha": { + "timeout": "1800000" + }, "author": "Daniel Graham", "license": "Apache-2.0", "devDependencies": { "assert": "^2.0.0", "chai": "^4.1.2", "mocha": "^8.0.1", - "webdriverio": "^6.0.5" + "webdriverio": "^8.5.1" } } diff --git a/sample-code/javascript-webdriverio/test/mocha.opts b/sample-code/javascript-webdriverio/test/mocha.opts deleted file mode 100644 index a706c190ebd..00000000000 --- a/sample-code/javascript-webdriverio/test/mocha.opts +++ /dev/null @@ -1 +0,0 @@ ---timeout 1800000 \ No newline at end of file diff --git a/sample-code/php/README.md b/sample-code/php/README.md deleted file mode 100644 index 3d3574deefb..00000000000 --- a/sample-code/php/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# PHP Sample Code - -## Setup - -* Install [composer](https://getcomposer.org/) -* Run `composer install` from this directory - -## Running Tests - -* vendor/phpunit/phpunit/phpunit (e.g.: `vendor/phpunit/phpunit/phpunit test/basic/AndroidBasicInteractions.php`) - -## Troubleshooting - -* ```Original error: '11.1' does not exist in the list of simctl SDKs. Only the following Simulator SDK versions are available on your system: x.y``` - * By default, these example tests expect IOS version 11.1 - * If 11.1 isn't available on your system, set the version by setting environment variable `IOS_PLATFORM_VERSION` or install with Xcode diff --git a/sample-code/php/composer.json b/sample-code/php/composer.json deleted file mode 100644 index f70d1602d87..00000000000 --- a/sample-code/php/composer.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "username/my-php-project", - "repositories": [ - { - "type": "vcs", - "url": "https://github.com/appium/php-client" - } - ], - "require": { - "appium/php-client": "dev-master" - } -} \ No newline at end of file diff --git a/sample-code/php/test/basic/AndroidBasicInteractions.php b/sample-code/php/test/basic/AndroidBasicInteractions.php deleted file mode 100644 index 593636ee1db..00000000000 --- a/sample-code/php/test/basic/AndroidBasicInteractions.php +++ /dev/null @@ -1,49 +0,0 @@ -value("Hello world!"); - - // Press on "onSearchRequestedButton" - $onSearchRequestedButton = Helpers::elemBy($this, "id", "btn_start_search"); - $onSearchRequestedButton->click(); - - // Check that the text matches the search term - $searchText = Helpers::waitForElemBy($this, "id", "android:id/search_src_text"); - $this->assertEquals($searchText->text(), "Hello world!"); - } - - public function testShouldClickButtonOpensAlert() - { - $this->startActivity(array( - "appActivity" => ".app.AlertDialogSamples", - "appPackage" => "io.appium.android.apis" - )); - $openDialogButtons = Helpers::waitForElemBy($this, "id", "io.appium.android.apis:id/two_buttons"); - $openDialogButtons->click(); - - // Check that the dialog is there - $alertElement = Helpers::waitForElemBy($this, "id", "android:id/alertTitle"); - $alertText = $alertElement->text(); - $this->assertEquals($alertText, "Lorem ipsum dolor sit aie consectetur adipiscing\nPlloaso mako nuto siwuf cakso dodtos anr koop."); - $closeDialogButton = Helpers::waitForElemBy($this, "id", "android:id/button1"); - - // Close the dialog - $closeDialogButton->click(); - } -} -?> \ No newline at end of file diff --git a/sample-code/php/test/basic/AndroidCreateSession.php b/sample-code/php/test/basic/AndroidCreateSession.php deleted file mode 100644 index adda31c0839..00000000000 --- a/sample-code/php/test/basic/AndroidCreateSession.php +++ /dev/null @@ -1,25 +0,0 @@ -currentActivity(); - $pkg = $this->currentPackage(); - $this->assertEquals($activity, '.ApiDemos'); - $this->assertEquals($pkg, 'io.appium.android.apis'); - } -} - -?> \ No newline at end of file diff --git a/sample-code/php/test/basic/AndroidCreateWebSession.php b/sample-code/php/test/basic/AndroidCreateWebSession.php deleted file mode 100644 index a86b11138d3..00000000000 --- a/sample-code/php/test/basic/AndroidCreateWebSession.php +++ /dev/null @@ -1,25 +0,0 @@ -url('https://www.google.com'); - - // Test that it was successful by checking the document title - $pageTitle = $this->title(); - $this->assertEquals($pageTitle, 'Google'); - } -} - -?> \ No newline at end of file diff --git a/sample-code/php/test/basic/IosBasicInteractions.php b/sample-code/php/test/basic/IosBasicInteractions.php deleted file mode 100644 index 5ead321546a..00000000000 --- a/sample-code/php/test/basic/IosBasicInteractions.php +++ /dev/null @@ -1,48 +0,0 @@ -text(); - $this->assertEquals($value, ""); - - // Send keys to that input - $textViewsEl->value('Hello World!'); - - // Check that the input has new value - $value = $textViewsEl->text(); - $this->assertEquals(value, 'Hello World!'); - } - - public function testShouldClickButtonOpensAlert() - { - // Find Button element and click on it - $buttonElement = Helpers::elemBy($this, "accessibility id", "show alert"); - $buttonElement->click(); - - // Wait for the alert to show up - $alertTitleId = `Cool title`; - $alertTitleElement = Helpers::elemBy($this, "accessibility id", "Cool title"); - - // Check the text - $alertTitle = $alertTitleElement->text(); - $this->assertEquals($alertTitle, "Cool title"); - } -} - -?> \ No newline at end of file diff --git a/sample-code/php/test/basic/IosCreateSession.php b/sample-code/php/test/basic/IosCreateSession.php deleted file mode 100644 index effea0bda01..00000000000 --- a/sample-code/php/test/basic/IosCreateSession.php +++ /dev/null @@ -1,25 +0,0 @@ -attribute('name'); - $this->assertEquals($applicationName, 'TestApp'); - } - -} - -?> \ No newline at end of file diff --git a/sample-code/php/test/basic/IosCreateWebSession.php b/sample-code/php/test/basic/IosCreateWebSession.php deleted file mode 100644 index e77e985023e..00000000000 --- a/sample-code/php/test/basic/IosCreateWebSession.php +++ /dev/null @@ -1,27 +0,0 @@ -url('https://www.google.com'); - - // Test that it was successful by checking the document title - $pageTitle = $this->title(); - $this->assertEquals($pageTitle, 'Google'); - } - -} - -?> \ No newline at end of file diff --git a/sample-code/php/test/helpers/Apps.php b/sample-code/php/test/helpers/Apps.php deleted file mode 100644 index 7a0fcbbf3f1..00000000000 --- a/sample-code/php/test/helpers/Apps.php +++ /dev/null @@ -1,22 +0,0 @@ - "http://appium.github.io/appium/assets/TestApp7.1.app.zip", - "androidApiDemos" => "http://appium.github.io/appium/assets/ApiDemos-debug.apk", - ); - } else { - return array( - "iosTestApp" => IOS_TEST_APP, - "androidApiDemos" => ANDROID_API_DEMOS, - ); - } - } -} - -?> \ No newline at end of file diff --git a/sample-code/php/test/helpers/Caps.php b/sample-code/php/test/helpers/Caps.php deleted file mode 100644 index 2734ba5c355..00000000000 --- a/sample-code/php/test/helpers/Caps.php +++ /dev/null @@ -1,73 +0,0 @@ - IS_LOCAL, - "port" => PORT, - "browserName" => $browserName, - "desiredCapabilities" => array( - "platformName" => "iOS", - "automationName" => "XCUITest", - "platformVersion" => getenv("IOS_PLATFORM_VERSION", true) ? getenv("IOS_PLATFORM_VERSION") : "11.1", - "deviceName" => getenv("IOS_DEVICE_NAME", true) ? getenv("IOS_DEVICE_NAME") : "iPhone 6s", - "app" => $app - ) - ) - ); - } - - public static function getAndroidCaps($app, $appActivity="", $browserName="") { - return array( - array( - "local" => IS_LOCAL, - "port" => PORT, - "browserName" => $browserName, - "desiredCapabilities" => array( - "platformName" => "Android", - "automationName" => "UIAutomator2", - "platformVersion" => ANDROID_PLATFORM_VERSION, - "deviceName" => ANDROID_DEVICE_NAME, - "app" => $app, - "appActivity" => $appActivity, - ) - ) - ); - } -} - -?> \ No newline at end of file diff --git a/sample-code/php/test/helpers/Helpers.php b/sample-code/php/test/helpers/Helpers.php deleted file mode 100644 index a08229c110d..00000000000 --- a/sample-code/php/test/helpers/Helpers.php +++ /dev/null @@ -1,44 +0,0 @@ -elements($driver->using($using)->value($tag)); - } - - public static function waitForElemsBy($driver, $using, $tag) - { - $element; - $i = 0; - while ($i < 20) { - $element = $driver->elements($driver->using("id")->value($tag)); - if ($element) { - break; - } - sleep(1); - } - return $element; - } - - public static function elemBy($driver, $using, $tag) - { - $elems = Helpers::elemsBy($driver, $using, $tag); - if ($elems) - { - return $elems[0]; - } - } - - public static function waitForElemBy($driver, $using, $tag) - { - $elems = Helpers::waitForElemsBy($driver, $using, $tag); - if ($elems) - { - return $elems[0]; - } - } - -} - -?> \ No newline at end of file diff --git a/sample-code/python/README.md b/sample-code/python/README.md index 715e47e644f..d80f5520f9e 100644 --- a/sample-code/python/README.md +++ b/sample-code/python/README.md @@ -36,10 +36,16 @@ py.test test/test_ios_selectors.py # Tutorial -## Portuguese +## Portuguese 🇧🇷 The brazilian testing community has a complete and free tutorial teaching from 0 to advanced how to use Appium with Python to do software automation. If you can read Portuguese from Brazil, see the tutorial below: [Automação de teste de software com Appium e Python - Por Maria Clara Bezerra (Github)](https://github.com/clarabez/appium) + +## English 🇺🇸 + +Here is the translated version from portugues to english of the free tutorial from 0 to advanced of using Appium with Python for software automation. + +[Software automation with Appium and Python - By Maria Clara Bezerra (Github)](https://github.com/clarabez/appium-en) diff --git a/sample-code/ruby/Gemfile b/sample-code/ruby/Gemfile index 095ad03fa84..40534b4645a 100644 --- a/sample-code/ruby/Gemfile +++ b/sample-code/ruby/Gemfile @@ -1,11 +1,4 @@ source 'https://www.rubygems.org' -gem 'appium_lib', '~> 9.15' -gem 'rest-client', '~> 2.0.2' -gem 'rspec', '~> 3.8.0' -gem 'cucumber', '~> 3.1.2' -gem 'rspec-expectations', '~> 3.8.1' -gem 'spec', '~> 5.3.4' -gem 'sauce_whisk', '~> 0.1.0' -gem 'test-unit', '~> 3.2.8' -gem 'pry' +gem 'appium_lib', '~> 11.2' +gem 'appium_lib_core', '~> 4.2' diff --git a/sample-code/ruby/README.md b/sample-code/ruby/README.md index 658d99af04a..fc6a7d9f6af 100644 --- a/sample-code/ruby/README.md +++ b/sample-code/ruby/README.md @@ -1,10 +1,15 @@ # Ruby Sample Code +iOS tests are written by `ruby_lib_core`. +Android tests are written by `ruby_lib`. + ## Setup -* Install `ruby` and `rspec` -* Run `bundle install` from this directory +1. Install Ruby +2. `gem install rspec` +3. `bundle install` ## Running Tests +* `rspec` * `rspec spec/_spec.rb` diff --git a/sample-code/ruby/spec/android_basic_interactions_spec.rb b/sample-code/ruby/spec/android_basic_interactions_spec.rb index 62580e6cce2..337a5267a53 100644 --- a/sample-code/ruby/spec/android_basic_interactions_spec.rb +++ b/sample-code/ruby/spec/android_basic_interactions_spec.rb @@ -1,29 +1,16 @@ require 'spec_helper' - -desired_caps = { - caps: { - platformName: 'Android', - platformVersion: ENV['SAUCE_LABS'] ? (ENV["ANDROID_PLATFORM_VERSION"] || '7.1') : ENV["ANDROID_PLATFORM_VERSION"], - deviceName: ENV["ANDROID_DEVICE_VERSION"] || 'Android', - app: ANDROID_APP, - automationName: 'UIAutomator2', - appActivity: '.app.SearchInvoke' - }, - appium_lib: { - sauce_username: ENV['SAUCE_LABS'] ? ENV['SAUCE_USERNAME'] : nil, - sauce_access_key: ENV['SAUCE_LABS'] ? ENV['SAUCE_ACCESS_KEY'] : nil, - wait: 60 - } -} +require 'appium_lib' describe 'Basic Android interactions' do before(:all) do - @driver = Appium::Driver.new(desired_caps, false).start_driver + caps = android_caps + caps[:caps][:appActivity] = '.app.SearchInvoke' + @driver = Appium::Driver.new(caps, false).start_driver end after(:all) do - @driver.quit + @driver&.quit end it 'should send keys to search box and then check the value' do diff --git a/sample-code/ruby/spec/android_create_session_spec.rb b/sample-code/ruby/spec/android_create_session_spec.rb index be398dd6239..28855d506e5 100644 --- a/sample-code/ruby/spec/android_create_session_spec.rb +++ b/sample-code/ruby/spec/android_create_session_spec.rb @@ -1,23 +1,9 @@ require 'spec_helper' - -desired_caps = { - caps: { - platformName: 'Android', - platformVersion: ENV['SAUCE_LABS'] ? (ENV["ANDROID_PLATFORM_VERSION"] || '7.1') : ENV["ANDROID_PLATFORM_VERSION"], - deviceName: ENV["ANDROID_DEVICE_VERSION"] || 'Android', - app: ANDROID_APP, - automationName: 'UIAutomator2', - }, - appium_lib: { - sauce_username: ENV['SAUCE_LABS'] ? ENV['SAUCE_USERNAME'] : nil, - sauce_access_key: ENV['SAUCE_LABS'] ? ENV['SAUCE_ACCESS_KEY'] : nil, - wait: 60 - } -} +require 'appium_lib' describe 'Create Android session' do it 'should create and destroy Android sessions' do - @driver = Appium::Driver.new(desired_caps, true).start_driver + @driver = Appium::Driver.new(android_caps, true).start_driver @activity = @driver.current_activity @pkg = @driver.current_package diff --git a/sample-code/ruby/spec/android_create_web_session_spec.rb b/sample-code/ruby/spec/android_create_web_session_spec.rb index 419a07b40a2..689a4741ea6 100644 --- a/sample-code/ruby/spec/android_create_web_session_spec.rb +++ b/sample-code/ruby/spec/android_create_web_session_spec.rb @@ -1,23 +1,11 @@ require 'spec_helper' - -desired_caps = { - caps: { - platformName: 'Android', - platformVersion: ENV['SAUCE_LABS'] ? (ENV["ANDROID_PLATFORM_VERSION"] || '7.1') : ENV["ANDROID_PLATFORM_VERSION"], - deviceName: ENV["ANDROID_DEVICE_VERSION"] || 'Android', - automationName: 'UIAutomator2', - browserName: 'Chrome' - }, - appium_lib: { - sauce_username: ENV['SAUCE_LABS'] ? ENV['SAUCE_USERNAME'] : nil, - sauce_access_key: ENV['SAUCE_LABS'] ? ENV['SAUCE_ACCESS_KEY'] : nil, - wait: 60 - } -} +require 'appium_lib' describe 'Create Chrome web session' do it 'should create and destroy Android browser session' do - @driver = Appium::Driver.new(desired_caps, true).start_driver + caps = android_caps + caps[:caps][:browserName] = :chrome + @driver = Appium::Driver.new(caps, true).start_driver @driver.get('https://www.google.com') @@ -25,6 +13,9 @@ expect(@page_title).to eql 'Google' @driver.quit - expect { @driver.title }.to raise_error(Selenium::WebDriver::Error::InvalidSessionIdError, 'A session is either terminated or not started') + expect { + @driver.title + }.to raise_error(Selenium::WebDriver::Error::InvalidSessionIdError, + 'A session is either terminated or not started') end end diff --git a/sample-code/ruby/spec/android_selectors_spec.rb b/sample-code/ruby/spec/android_selectors_spec.rb index f1f1d7a85af..ba7e73447eb 100644 --- a/sample-code/ruby/spec/android_selectors_spec.rb +++ b/sample-code/ruby/spec/android_selectors_spec.rb @@ -1,28 +1,14 @@ require 'spec_helper' - -desired_caps = { - caps: { - platformName: 'Android', - platformVersion: ENV['SAUCE_LABS'] ? (ENV["ANDROID_PLATFORM_VERSION"] || '7.1') : ENV["ANDROID_PLATFORM_VERSION"], - deviceName: ENV["ANDROID_DEVICE_VERSION"] || 'Android', - app: ANDROID_APP, - automationName: 'UIAutomator2' - }, - appium_lib: { - sauce_username: ENV['SAUCE_LABS'] ? ENV['SAUCE_USERNAME'] : nil, - sauce_access_key: ENV['SAUCE_LABS'] ? ENV['SAUCE_ACCESS_KEY'] : nil, - wait: 60 - } -} +require 'appium_lib' describe 'Basic Android selectors' do before(:all) do - @driver = Appium::Driver.new(desired_caps, true).start_driver + @driver = Appium::Driver.new(android_caps, true).start_driver end after(:all) do - @driver.quit + @driver&.quit end it 'should find elements by Accessibility ID' do diff --git a/sample-code/ruby/spec/ios_basic_interactions_spec.rb b/sample-code/ruby/spec/ios_basic_interactions_spec.rb index d95ea18bd3c..57b24a047ac 100644 --- a/sample-code/ruby/spec/ios_basic_interactions_spec.rb +++ b/sample-code/ruby/spec/ios_basic_interactions_spec.rb @@ -1,44 +1,29 @@ require 'spec_helper' +require 'appium_lib_core' -desired_caps = { - caps: { - platformName: 'iOS', - platformVersion: ENV["IOS_PLATFORM_VERSION"] || '11.4', - deviceName: ENV["IOS_DEVICE_NAME"] || 'iPhone 6s', - app: IOS_APP, - automationName: 'XCUITest', - }, - appium_lib: { - sauce_username: ENV['SAUCE_LABS'] ? ENV['SAUCE_USERNAME'] : nil, - sauce_access_key: ENV['SAUCE_LABS'] ? ENV['SAUCE_ACCESS_KEY'] : nil, - wait: 60 - } -} - -# Start the driver -describe "IOS Basic Interactions" do +describe 'IOS Basic Interactions' do before(:all) do - @driver = Appium::Driver.new(desired_caps, false).start_driver + @driver = Appium::Core.for(ios_caps).start_driver end after(:all) do - @driver.quit + @driver&.quit end - it "should send keys to inputs" do - textFieldEl = @driver.find_element :id, "TextField1" - expect(textFieldEl.attribute(:value)).to be_nil - textFieldEl.send_keys "Hello World!" - expect(textFieldEl.attribute(:value)).to eq "Hello World!" + it 'should send keys to inputs' do + text_field_el = @driver.find_element :predicate, 'label == "TextField1"' + expect(text_field_el.attribute(:value)).to be_nil + text_field_el.send_keys 'Hello World!' + expect(text_field_el.attribute(:value)).to eq 'Hello World!' end - it "should click a button that opens an alert" do - buttonElementId = "show alert" - buttonElement = @driver.find_element :accessibility_id, buttonElementId - buttonElement.click - alertTitleId = "Cool title" - alertTitleElement = @driver.find_element :accessibility_id, alertTitleId - alertTitle = alertTitleElement.attribute :name - expect(alertTitle).to eq "Cool title" + it 'should click a button that opens an alert' do + button_el_txt = 'show alert' + button_el = @driver.find_element :accessibility_id, button_el_txt + button_el.click + alert_title = 'Cool title' + alert_el = @driver.find_element :accessibility_id, alert_title + alert_title = alert_el.attribute :name + expect(alert_title).to eq 'Cool title' end end diff --git a/sample-code/ruby/spec/ios_create_session_spec.rb b/sample-code/ruby/spec/ios_create_session_spec.rb index d3cdf07f7c4..38bb9b76e48 100644 --- a/sample-code/ruby/spec/ios_create_session_spec.rb +++ b/sample-code/ruby/spec/ios_create_session_spec.rb @@ -1,29 +1,18 @@ require 'spec_helper' - -desired_caps = { - caps: { - platformName: 'iOS', - platformVersion: ENV["IOS_PLATFORM_VERSION"] || '11.4', - deviceName: ENV["IOS_DEVICE_NAME"] || 'iPhone 6s', - app: IOS_APP, - automationName: 'XCUITest', - }, - appium_lib: { - sauce_username: ENV['SAUCE_LABS'] ? ENV['SAUCE_USERNAME'] : nil, - sauce_access_key: ENV['SAUCE_LABS'] ? ENV['SAUCE_ACCESS_KEY'] : nil, - wait: 60 - } -} +require 'appium_lib_core' describe 'Create session' do it 'should create and destroy IOS sessions' do - @driver = Appium::Driver.new(desired_caps, false).start_driver + @driver = Appium::Core.for(ios_caps).start_driver application_element = @driver.find_element :class_name, 'XCUIElementTypeApplication' application_name = application_element.attribute :name expect(application_name).to eq 'TestApp' @driver.quit - expect { application_element.attribute :name }.to raise_error(Selenium::WebDriver::Error::InvalidSessionIdError, 'A session is either terminated or not started') + expect { + application_element.attribute :name + }.to raise_error(Selenium::WebDriver::Error::InvalidSessionIdError, + 'A session is either terminated or not started') end end diff --git a/sample-code/ruby/spec/ios_create_web_session_spec.rb b/sample-code/ruby/spec/ios_create_web_session_spec.rb index 01880c40186..995951ae8ea 100644 --- a/sample-code/ruby/spec/ios_create_web_session_spec.rb +++ b/sample-code/ruby/spec/ios_create_web_session_spec.rb @@ -1,28 +1,19 @@ require 'spec_helper' - -desired_caps = { - caps: { - platformName: 'iOS', - platformVersion: ENV["IOS_PLATFORM_VERSION"] || '11.4', - deviceName: ENV["IOS_DEVICE_NAME"] || 'iPhone 6s', - automationName: 'XCUITest', - browserName: 'Safari', - }, - appium_lib: { - sauce_username: ENV['SAUCE_LABS'] ? ENV['SAUCE_USERNAME'] : nil, - sauce_access_key: ENV['SAUCE_LABS'] ? ENV['SAUCE_ACCESS_KEY'] : nil, - wait: 60 - } -} +require 'appium_lib_core' describe 'Create Safari session' do it 'should create and destroy IOS Safari session' do - @driver = Appium::Driver.new(desired_caps, false).start_driver + caps = ios_caps + caps[:caps][:browserName] = :safari + @driver = Appium::Core.for(caps).start_driver @driver.get 'https://www.google.com' - expect(@driver.title).to eql 'Google' + expect(@driver.title).to eq 'Google' @driver.quit - expect { @driver.title }.to raise_error(Selenium::WebDriver::Error::InvalidSessionIdError, 'A session is either terminated or not started') + expect { + @driver.title + }.to raise_error(Selenium::WebDriver::Error::InvalidSessionIdError, + 'A session is either terminated or not started') end end diff --git a/sample-code/ruby/spec/ios_selectors_spec.rb b/sample-code/ruby/spec/ios_selectors_spec.rb index 7495dcf7020..e7099a6743f 100644 --- a/sample-code/ruby/spec/ios_selectors_spec.rb +++ b/sample-code/ruby/spec/ios_selectors_spec.rb @@ -1,51 +1,38 @@ require 'spec_helper' +require 'appium_lib_core' -desired_caps = { - caps: { - platformName: 'iOS', - platformVersion: ENV["IOS_PLATFORM_VERSION"] || '11.4', - deviceName: ENV["IOS_DEVICE_NAME"] || 'iPhone 6s', - app: IOS_APP, - automationName: 'XCUITest', - }, - appium_lib: { - sauce_username: ENV['SAUCE_LABS'] ? ENV['SAUCE_USERNAME'] : nil, - sauce_access_key: ENV['SAUCE_LABS'] ? ENV['SAUCE_ACCESS_KEY'] : nil, - wait: 60 - } -} describe 'Basic IOS selectors' do before(:all) do - @driver = Appium::Driver.new(desired_caps, true).start_driver + @driver = Appium::Core.for(ios_caps).start_driver end after(:all) do - @driver.quit + @driver&.quit end it 'should find elements by Accessibility ID' do compute_sum_buttons = @driver.find_elements :accessibility_id, 'ComputeSumButton' - expect(compute_sum_buttons.length).to eql 1 + expect(compute_sum_buttons.length).to eq 1 end it 'should find elements by class name' do window_elements = @driver.find_elements :class_name, 'XCUIElementTypeWindow' - expect(window_elements.length).to eql 2 + expect(window_elements.length).to eq 1 end it 'should find elements by NSPredicateString' do all_visible_elements = @driver.find_elements :predicate, 'visible = 1' - expect(all_visible_elements.length).to eql 27 + expect(all_visible_elements.last.name).to eq 'Check calendar authorized' end it 'should find elements by class chain' do - window_element = @driver.find_elements :class_chain, 'XCUIElementTypeWindow[1]/*[2]' - expect(window_element.length).to eql 1 + window_elements = @driver.find_elements :class_chain, 'XCUIElementTypeWindow[1]/*[1]' + expect(window_elements.length).to eq 1 end it 'should find elements by XPath' do buttons = @driver.find_elements :xpath, '//XCUIElementTypeWindow//XCUIElementTypeButton' - expect(buttons.length).to eql 8 + expect(buttons.length).to eq 8 end end diff --git a/sample-code/ruby/spec/spec_helper.rb b/sample-code/ruby/spec/spec_helper.rb index a16317d966c..8cdacd85b37 100644 --- a/sample-code/ruby/spec/spec_helper.rb +++ b/sample-code/ruby/spec/spec_helper.rb @@ -1,10 +1,33 @@ -require 'rubygems' -require 'appium_lib' -require 'test/unit' -extend Test::Unit::Assertions +# require 'test/unit' +# extend Test::Unit::Assertions -ANDROID_APP = ENV['SAUCE_LABS'] ? 'http://appium.github.io/appium/assets/ApiDemos-debug.apk' : '../apps/ApiDemos-debug.apk' ANDROID_PACKAGE = 'io.appium.android.apis' +def android_caps + { + caps: { + platformName: 'Android', + platformVersion: ENV['ANDROID_PLATFORM_VERSION'] || '10', + deviceName: 'Android', + app: '../apps/ApiDemos-debug.apk', + automationName: 'UIAutomator2', + }, + appium_lib: { + wait: 60 + } + } +end - -IOS_APP = ENV['SAUCE_LABS'] ? 'http://appium.github.io/appium/assets/TestApp7.1.app.zip' : '../apps/TestApp.app.zip' +def ios_caps + { + caps: { + platformName: 'iOS', + platformVersion: ENV["IOS_PLATFORM_VERSION"] || '14.2', + deviceName: ENV["IOS_DEVICE_NAME"] || 'iPhone 12', + app: '../apps/TestApp.app.zip', + automationName: 'XCUITest', + }, + appium_lib: { + wait: 60 + } + } +end \ No newline at end of file diff --git a/scripts/release-branch.sh b/scripts/release-branch.sh new file mode 100644 index 00000000000..3e0ca76b730 --- /dev/null +++ b/scripts/release-branch.sh @@ -0,0 +1,13 @@ +git fetch +echo "* Creating release branch $1" +git checkout -b releases/$1 +rm -rf node_modules/ npm-shrinkwrap.json package-lock.json +npm install +npm shrinkwrap +echo "* git add ." +git add npm-shrinkwrap.json package.json +git commit -m 'add shrinkwrap' +echo "* npm version $1.0-rc.0" +npm version $1.0-rc.0 +git push origin releases/$1 + diff --git a/scripts/release-latest.sh b/scripts/release-latest.sh new file mode 100755 index 00000000000..1e0aed13b09 --- /dev/null +++ b/scripts/release-latest.sh @@ -0,0 +1,6 @@ +#! /bin/sh + +npm version $1 +git push +git push --tags +npm publish --tag latest diff --git a/scripts/release.sh b/scripts/release.sh new file mode 100755 index 00000000000..7c35b21fa32 --- /dev/null +++ b/scripts/release.sh @@ -0,0 +1,7 @@ +#! /bin/sh + +npm version prerelease --preid=$1 +git push +git push --tags +# Note: Do not forget to add `--tag rc` for RC channel. Without the tag, the publishment will end up in `latest`. +npm publish --tag $1 diff --git a/test/config-specs.js b/test/config-specs.js index 71eddff740d..a7f5ace8b8e 100644 --- a/test/config-specs.js +++ b/test/config-specs.js @@ -145,7 +145,8 @@ describe('Config', function () { describe('unsupported nodes', function () { const unsupportedVersions = [ 'v0.1', 'v0.9.12', 'v0.10.36', 'v0.12.14', - 'v4.4.7', 'v5.7.0', 'v6.3.1', 'v7.1.1', + 'v4.4.7', 'v5.7.0', 'v6.3.1', 'v7.1.1', 'v8.1.2', + 'v9.1.2', 'v10.0.1', 'v11.6.0' ]; for (const version of unsupportedVersions) { it(`should fail if node is ${version}`, function () { @@ -156,20 +157,20 @@ describe('Config', function () { }); describe('supported nodes', function () { - it('should succeed if node is 8+', function () { - process.version = 'v8.1.2'; + it('should succeed if node is 12+', function () { + process.version = '12.20.1'; checkNodeOk.should.not.throw(); }); - it('should succeed if node is 9+', function () { - process.version = 'v9.1.2'; + it('should succeed if node is 13+', function () { + process.version = '13.14.0'; checkNodeOk.should.not.throw(); }); - it('should succeed if node is 10+', function () { - process.version = 'v10.0.1'; + it('should succeed if node is 14+', function () { + process.version = '14.15.4'; checkNodeOk.should.not.throw(); }); - it('should succeed if node is 11+', function () { - process.version = 'v11.6.0'; + it('should succeed if node is 15+', function () { + process.version = '15.5.1'; checkNodeOk.should.not.throw(); }); });