java-client
This is the Java language binding for writing Appium Tests, conforms to Mobile JSON Wire Protocol
Features and other interesting information
How to install latest java client Beta/Snapshots
Java client project is available to use even before it is officially published to maven central. Refer jitpack.io
Maven
- Add the following to pom.xml:
<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>
- Add the dependency:
<dependency>
    <groupId>com.github.appium</groupId>
    <artifactId>java-client</artifactId>
    <version>latest commit ID from master branch</version>
</dependency>
Gradle
- Add the JitPack repository to your build file. Add it in your root build.gradle at the end of repositories:
allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
- Add the dependency:
dependencies {
    implementation 'com.github.appium:java-client:latest commit id from master branch'
}
Changelog
7.3.0
- [ENHANCEMENTS]
- Add support for logging custom events on the Appium Server. #1262
- Update Appium executable detection implementation. #1256
- Avoid through NPE if any setting value is null. #1241
- Settings API was improved to accept string names. #1240
- Switch runAppInBackgroundiOS implementation in sync with other platforms. #1229
- JavaDocs for AndroidMobileCapabilityType was updated. #1238
- Github Actions were introduced instead of TravisCI. #1219
 
- [BUG FIX]
7.2.0
- [DEPENDENCY UPDATES]
- [ENHANCEMENTS]
- videoFiltersproperty was added to IOSStartScreenRecordingOptions. #1180
 
- [IMPROVEMENTS]
7.1.0
- 
[ENHANCEMENTS] - Added an ability to get all the session details. #1167
- TRACK_SCROLL_EVENTS,- ALLOW_INVISIBLE_ELEMENTS,- ENABLE_NOTIFICATION_LISTENER,
 - NORMALIZE_TAG_NAMESand- SHUTDOWN_ON_POWER_DISCONNECTAndroid Settings were added.
- KEYBOARD_AUTOCORRECTION,- MJPEG_SCALING_FACTOR,
 - MJPEG_SERVER_SCREENSHOT_QUALITY,- MJPEG_SERVER_FRAMERATE,- SCREENSHOT_QUALITY
 and- KEYBOARD_PREDICTIONiOS Settings were added.
- GET_MATCHED_IMAGE_RESULT,- FIX_IMAGE_TEMPLATE_SCALE,
 - SHOULD_USE_COMPACT_RESPONSES,- ELEMENT_RESPONSE_ATTRIBUTESand
 - DEFAULT_IMAGE_TEMPLATE_SCALEsettings were added for both Android and iOS #1166, #1156 and #1120
- The new interface io.appium.java_client.ExecutesDriverScriptwas added. #1165
- Added an ability to get status of appium server. #1153
- tvOSplatform support was added. #1142
- The new interface io.appium.java_client. FindsByAndroidDataMatcherwas added. #1106
- The selector strategy io.appium.java_client.MobileBy.ByAndroidDataMatcherwas added. #1106
- Selendroid for android and UIAutomation for iOS are removed. #1077
- [BUG FIX] Platform Name enforced on driver creation is avoided now. #1164
- [BUG FIX] Send both signalStrengh and signalStrength for GSM_SIGNAL. #1115
- [BUG FIX] Null pointer exceptions when calling getCapabilities is handled better. #1094
 
- 
[DEPENDENCY UPDATES] - org.seleniumhq.selenium:selenium-javawas updated to 4.0.0-alpha-1.
- org.aspectj:aspectjweaverwas updated to 1.9.4.
- org.apache.httpcomponents:httpclientwas updated to 4.5.9.
- cglib:cglibwas updated to 3.2.12.
- org.springframework:spring-contextwas updated to 5.1.8.RELEASE.
- io.github.bonigarcia:webdrivermanagerwas updated to 3.6.1.
- org.eclipse.jdt:ecjwas updated to 3.18.0.
- com.github.jengelman.gradle.plugins:shadowwas updated to 5.1.0.
- checkstylewas updated to 8.22.
- gradlewas updated to 5.4.
- dependency-check-gradlewas updated to 5.1.0.
- org.slf4j:slf4j-apiwas updated to 1.7.26.
- org.apache.commons:commons-lang3was updated to 3.9.
 
7.0.0
- [ENHANCEMENTS]
- The new interface io.appium.java_client.FindsByAndroidViewTagwas added. #996
- The selector strategy io.appium.java_client.MobileBy.ByAndroidViewTagwas added. #996
- The new interface io.appium.java_client.FindsByImagewas added. #990
- The selector strategy io.appium.java_client.MobileBy.ByImagewas added. #990
- The new interface io.appium.java_client.FindsByCustomwas added. #1041
- The selector strategy io.appium.java_client.MobileBy.ByCustomwas added. #1041
- DatatypeConverter is replaced with Base64 for JDK 9 compatibility. #999
- Expand touch options API to accept coordinates as Point. #997
- W3C capabilities written into firstMatch entity instead of alwaysMatch. #1010
- Selendroidfor android and- UIAutomationfor iOS is deprecated. #1034 and #1074
- videoScaleand- fpsscreen recording options are introduced for iOS. #1067
- NORMALIZE_TAG_NAMESsetting was introduced for android. #1073
- thresholdargument was added to OccurrenceMatchingOptions. #1060
- org.openqa.selenium.internal.WrapsElementreplaced by- org.openqa.selenium.WrapsElement. #1053
- SLF4J logging support added into Appium Driver local service. #1014
- IMAGE_MATCH_THRESHOLD,- FIX_IMAGE_FIND_SCREENSHOT_DIMENSIONS,- FIX_IMAGE_TEMPLATE_SIZE,- CHECK_IMAGE_ELEMENT_STALENESS,- UPDATE_IMAGE_ELEMENT_POSITIONand- IMAGE_ELEMENT_TAP_STRATEGYsetting was introduced for image elements. #1011
 
- The new interface 
- [BUG FIX] Better handling of InvocationTargetException #968
- [BUG FIX] Map sending keys to active element for W3C compatibility. #966
- [BUG FIX] Error message on session creation is improved. #994
- [DEPENDENCY UPDATES]
- org.seleniumhq.selenium:selenium-javawas updated to 3.141.59.
- com.google.code.gson:gsonwas updated to 2.8.5.
- org.apache.httpcomponents:httpclientwas updated to 4.5.6.
- cglib:cglibwas updated to 3.2.8.
- org.apache.commons:commons-lang3was updated to 3.8.
- org.springframework:spring-contextwas updated to 5.1.0.RELEASE.
- io.github.bonigarcia:webdrivermanagerwas updated to 3.0.0.
- org.eclipse.jdt:ecjwas updated to 3.14.0.
- org.slf4j:slf4j-apiwas updated to 1.7.25.
- jacocowas updated to 0.8.2.
- checkstylewas updated to 8.12.
- gradlewas updated to 4.10.1.
- org.openpnp:opencvwas removed.
 
6.1.0
- [BUG FIX] Initing web socket clients lazily. Report #911. FIX: #912.
- [BUG FIX] Fix session payload for W3C. #913
- [ENHANCEMENT] Added TouchAction constructor argument verification #923
- [BUG FIX] Set retry flag to true by default for OkHttpFactory. #928
- [BUG FIX] Fix class cast exception on getting battery info. #935
- [ENHANCEMENT] Added an optional format argument to getDeviceTime and update the documentation. #939
- [ENHANCEMENT] The switching web socket client implementation to okhttp library. #941
- [BUG FIX] Fix of the bug #924. #951
6.0.0
- [ENHANCEMENT] Added an ability to set pressure value for iOS. #879
- [ENHANCEMENT] Added new server arguments RELAXED_SECURITYandENABLE_HEAP_DUMP. #880
- [BUG FIX] Use default Selenium HTTP client factory #877
- [ENHANCEMENT] Supporting syslog broadcast with iOS #871
- [ENHANCEMENT] Added isKeyboardShown command for iOS #887
- [ENHANCEMENT] Added battery information accessors #882
- [BREAKING CHANGE] Removal of deprecated code. #881
- [BUG FIX] Added NewAppiumSessionPayload. Bug report: #875. FIX: #894
- [ENHANCEMENT] Added ESPRESSO automation name #908
- [ENHANCEMENT] Added a method for output streams cleanup #909
- [DEPENDENCY UPDATES]
- com.google.code.gson:gsonwas updated to 2.8.4
- org.springframework:spring-contextwas updated to 5.0.5.RELEASE
- org.aspectj:aspectjweaverwas updated to 1.9.1
- org.glassfish.tyrus:tyrus-clienwas updated to 1.13.1
- org.glassfish.tyrus:tyrus-container-grizzlywas updated to 1.2.1
- org.seleniumhq.selenium:selenium-javawas updated to 3.12.0
 
6.0.0-BETA5
- [ENHANCEMENT] Added clipboard handlers. #855 #869
- [ENHANCEMENT] Added wrappers for Android logcat broadcaster. #858
- [ENHANCEMENT] Add bugreport option to Android screen recorder. #852
- [BUG FIX] Avoid amending parameters for SET_ALERT_VALUE endpoint. #867
- [BREAKING CHANGE] Refactor network connection setting on Android. #865
- [BUG FIX] [BREAKING CHANGE] Refactor of the io.appium.java_client.AppiumFluentWait. It usesjava.time.Durationfor time settings instead oforg.openqa.selenium.support.ui.Durationandjava.util.concurrent.TimeUnit#863
- [BREAKING CHANGE] io.appium.java_client.pagefactory.TimeOutDurationbecame deprecated. It is going to be removed. Usejava.time.Durationinstead. FIX #742 #863.
- [BREAKING CHANGE] io.appium.java_client.pagefactory.WithTimeOut#unitbecame deprecated. It is going to be removed. Useio.appium.java_client.pagefactory.WithTimeOut#chronoUnitinstead. FIX #742 #863.
- [BREAKING CHANGE] constructors of io.appium.java_client.pagefactory.AppiumElementLocatorFactory,io.appium.java_client.pagefactory.AppiumFieldDecoratorandio.appium.java_client.pagefactory.AppiumElementLocatorwhich useio.appium.java_client.pagefactory.TimeOutDurationas a parameter became deprecated. Use new constructors which usejava.time.Duration.
- [DEPENDENCY UPDATES]
- org.seleniumhq.selenium:selenium-javawas updated to 3.11.0
 
6.0.0-BETA4
- [ENHANCEMENT] Added handler for isDispalyed in W3C mode. #833
- [ENHANCEMENT] Added handlers for sending SMS, making GSM Call, setting GSM signal, voice, power capacity and power AC. #834
- [ENHANCEMENT] Added handlers for toggling wifi, airplane mode and data in android. #835
- [DEPENDENCY UPDATES]
- org.apache.httpcomponents:httpclientwas updated to 4.5.5
- cglib:cglibwas updated to 3.2.6
- org.springframework:spring-contextwas updated to 5.0.3.RELEASE
 
6.0.0-BETA3
- [DEPENDENCY UPDATES]
- org.seleniumhq.selenium:selenium-javawas updated to 3.9.1
 
- [BREAKING CHANGE] Removal of deprecated listener-methods from the AlertEventListener. #797
- [BUG FIX]. Fix the pushFilecommand. #812 #816
- [ENHANCEMENT]. Implemented custom command codec. #817, #825
- [ENHANCEMENT] Added handlers for lock/unlock in iOS. #799
- [ENHANCEMENT] AddEd endpoints for screen recording API for iOS and Android. #814
- [MAJOR ENHANCEMENT] W3C compliance was provided. #829
- [ENHANCEMENT] New capability MobileCapabilityType.FORCE_MJSONWP#829
- [ENHANCEMENT] Updated applications management endpoints. #824
6.0.0-BETA2
- [ENHANCEMENT] The fingerPrintability was added. It is supported by Android for now. #473 #786
- [BUG FIX]. Less strict verification of the PointOption. #795
6.0.0-BETA1
- [ENHANCEMENT] [REFACTOR] [BREAKING CHANGE] [MAJOR CHANGE] Improvements of the TouchActions API #756, #760:
- io.appium.java_client.touch.ActionOptionsand sublasses were added
- old methods of the TouchActionswere marked@Deprecated
- new methods which take new options.
 
- [ENHANCEMENT]. Appium drivr local service uses default process environment by default. #753
- [BUG FIX]. Removed 'set' prefix from waitForIdleTimeout setting. #754
- [BUG FIX]. The asking for session details was optimized. Issue report 764.
 FIX #769
- [BUG FIX] [REFACTOR]. Inconcistent MissingParameterException was removed. Improvements of MultiTouchAction. Report: #102. FIX #772
- [DEPENDENCY UPDATES]
- org.apache.commons:commons-lang3was updated to 3.7
- commons-io:commons-iowas updated to 2.6
- org.springframework:spring-contextwas updated to 5.0.2.RELEASE
- org.aspectj:aspectjweaverwas updated to 1.8.13
- org.seleniumhq.selenium:selenium-javawas updated to 3.7.1
 
5.0.4
- [BUG FIX]. Client was crashing when user was testing iOS with server 1.7.0. Report: #732. Fix: #733.
- [REFACTOR] [BREAKING CHANGE] Excessive invocation of the implicit waiting timeout was removed. This is the breaking change because API of AppiumElementLocatorandAppiumElementLocatorFactorywas changed. Request: #735, FIXES: #738, #741
- [DEPENDENCY UPDATES]
- org.seleniumhq.selenium:selenium-java to 3.6.0
- com.google.code.gson:gson to 2.8.2
- org.springframework:spring-context to 5.0.0.RELEASE
- org.aspectj:aspectjweaver to 1.8.11
 
5.0.3
- [BUG FIX] Selenuim version was reverted from boundaries to the single number. Issue report: #718. FIX: #722
- [ENHANCEMENT] The pushFilewas added to IOSDriver. Feature request: #720. Implementation: #721. This feature requires appium node server v>=1.7.0
5.0.2 [BUG FIX RELEASE]
- [BUG FIX] Dependency conflict resolving. The report: #714. The fix: #717. This change may affect users who use htmlunit-driver and/or phantomjsdriver. At this case it is necessary to add it to dependency list and to exclude old selenium versions.
5.0.1 [BUG FIX RELEASE]
5.0.0
- [REFACTOR] [BREAKING CHANGE] 5.0.0 finalization. Removal of obsolete code. #660
- [ENHANCEMENT] Enable nativeWebTap setting for iOS. #658
- [ENHANCEMENT] The getCurrentPackagewas added. #657
- [ENHANCEMENT] The toggleTouchIDEnrollmentwas added. #659
- [BUG FIX] The clearing of existing actions/parameters after perform is invoked. #663
- [BUG FIX] #669 missed parameters of the OverrideWidgetwere added:- iOSXCUITAutomation
- windowsAutomation
 
- [BUG FIX] ByAll was re-implemented. #680
- [BUG FIX] [BREAKING CHANGE] The issue of compliance with Selenium grid 3.x was fixed. This change is breaking because now java_client is compatible with appiun server v>=1.6.5. Issue report #655. FIX #682
- [BUG FIX] issues related to latest Selenium changes were fixed. Issue report #696. Fix: #699.
- [UPDATE] Dependency update
- selenium-javawas updated to 3.5.x
- org.apache.commons-lang3was updated to 3.6
- org.springframework.spring-contextwas updated to 4.3.10.RELEASE
 
- [ENHANCEMENT] Update of the touch ID enroll method. The older PerformsTouchID#toggleTouchIDEnrollmentwas markedDeprecated.
 It is recoomended to usePerformsTouchID#toggleTouchIDEnrollment(boolean)instead. #695
5.0.0-BETA9
- [ENHANCEMENT] Page factory: Mixed locator strategies were implemented. Feature request:#565 Implementation: #646
- [DEPRECATED] All the content of the io.appium.java_client.youienginepackage was markedDeprecated. It is going to be removed. #652
- [UPDATE] Update of the com.google.code.gson:gsonto v2.8.1.
5.0.0-BETA8
- 
[ENHANCEMENT] Page factory classes became which had package visibility are publicnow. #630- io.appium.java_client.pagefactory.AppiumElementLocatorFactory
- io.appium.java_client.pagefactory.DefaultElementByBuilder
- io.appium.java_client.pagefactory.WidgetByBuilder
 
- 
[ENHANCEMENT] New capabilities were added #626: - AndroidMobileCapabilityType#AUTO_GRANT_PERMISSIONS
- AndroidMobileCapabilityType#ANDROID_NATURAL_ORIENTATION
- IOSMobileCapabilityType#XCODE_ORG_ID
- IOSMobileCapabilityType#XCODE_SIGNING_ID
- IOSMobileCapabilityType#UPDATE_WDA_BUNDLEID
- IOSMobileCapabilityType#RESET_ON_SESSION_START_ONLY
- IOSMobileCapabilityType#COMMAND_TIMEOUTS
- IOSMobileCapabilityType#WDA_STARTUP_RETRIES
- IOSMobileCapabilityType#WDA_STARTUP_RETRY_INTERVAL
- IOSMobileCapabilityType#CONNECT_HARDWARE_KEYBOARD
- IOSMobileCapabilityType#MAX_TYPING_FREQUENCY
- IOSMobileCapabilityType#SIMPLE_ISVISIBLE_CHECK
- IOSMobileCapabilityType#USE_CARTHAGE_SSL
- IOSMobileCapabilityType#SHOULD_USE_SINGLETON_TESTMANAGER
- IOSMobileCapabilityType#START_IWDP
- IOSMobileCapabilityType#ALLOW_TOUCHID_ENROLL
- MobileCapabilityType#EVENT_TIMINGS
 
- 
[UPDATE] Dependencies were updated: - org.seleniumhq.selenium:selenium-javawas updated to 3.4.0
- cglib:cglibwas updated to 3.2.5
- org.apache.httpcomponents:httpclientwas updated to 4.5.3
- commons-validator:commons-validatorwas updated to 1.6
- org.springframework:spring-contextwas updated to 4.3.8.RELEASE
 
5.0.0-BETA7
- [ENHANCEMENT] The ability to customize the polling strategy of the waiting was provided. #612
- [ENHANCEMENT] [REFACTOR] Methods which were representing time deltas instead of elementary types became Deprecated. Methods which usejava.time.Durationare suugested to be used. #611
- [ENHANCEMENT] The ability to calculate screenshots overlap was included. #595.
5.0.0-BETA6
- [UPDATE] Update to Selenium 3.3.1
- [ENHANCEMENT] iOS XCUIT mode automation: API to run application in background was added. #593
- [BUG FIX] Issue report: #594. FIX: #597
- [ENHANCEMENT] The class chain locator was added. #599
5.0.0-BETA5
- [UPDATE] Update to Selenium 3.2.0
- [BUG FIX] Excessive dependency on guavawas removed. It causes errors. Issue report: #588. FIX: #589.
- [ENHANCEMENT]. The capability io.appium.java_client.remote.AndroidMobileCapabilityType#SYSTEM_PORTwas added. #591
5.0.0-BETA4
- [ENHANCEMENT] Android. API to read the performance data was added. #562
- [REFACTOR] Android. Simplified the activity starting by reducing the number of parameters through POJO clas. Old methods which start activities were marked @Deprecated. #579 #585
- [BUG FIX] Issue report:#574. Fix:#582
5.0.0-BETA3
[BUG FIX]
5.0.0-BETA2
- [BUG FIX]:Issue report: #549. Fix: #551
- New capabilities were added #533:
- IOSMobileCapabilityType#USE_NEW_WDA
- IOSMobileCapabilityType#WDA_LAUNCH_TIMEOUT
- IOSMobileCapabilityType#WDA_CONNECTION_TIMEOUT
 
The capability IOSMobileCapabilityType#REAL_DEVICE_LOGGER was removed. #533
- 
[BUG FIX]/[ENHANCEMENT]. Issue report: #552. FIX #556 - Additional methods were added to the io.appium.java_client.HasSessionDetails- String getPlatformName()
- String getAutomationName()
- boolean isBrowser()
 
- io.appium.java_client.HasSessionDetailsis used by the- io.appium.java_client.internal.JsonToMobileElementConverterto define which instance of the- org.openqa.selenium.WebElementsubclass should be created.
 
- Additional methods were added to the 
- 
[ENHANCEMENT]: The additional event firing feature. PR: #559. The WIKI chapter about the event firing was updated. 
5.0.0-BETA1
- 
[MAJOR ENHANCEMENT]: Migration to Java 8. Epic: #399 - API with default implementation. PR #470
- Tools that provide Page Object engines were redesigned. The migration to repeatable annotations. Details you can read there: #497. Documentation was synced as well.
- The new functional interface io.appium.java_client.functions.AppiumFunction was designed. It extendsjava.util.function.Functionandcom.google.common.base.Function. It was designed in order to provide compatibility with theorg.openqa.selenium.support.ui.Wait#543
- The new functional interface io.appium.java_client.functions.ExpectedConditionwas designed. It extendsio.appium.java_client.functions.AppiumFunctionandorg.openqa.selenium.support.ui.ExpectedCondition. #543
- The new functional interface io.appium.java_client.functions.ActionSupplierwas designed. It extendsjava.util.function.Supplier. #543
 
- 
[MAJOR ENHANCEMENT]: Migration from Maven to Gradle. Feature request is #214. Fixes: #442, #465. 
- 
[MAJOR ENHANCEMENT] [MAJOR REFACTORING]. Non-abstract AppiumDriver: - 
Now the io.appium.java_client.AppiumDrivercan use an instance of anyio.appium.java_client.MobileBysubclass for the searching. It should work as expected when current session supports the given selector. It will throworg.openqa.selenium.WebDriverExceptionotherwise. #462
- 
The new interface io.appium.java_client.FindsByFluentSelectorwas added. #462
- 
API was redesigned: these interfaces were marked deprecated and they are going to be removed #513#514: - io.appium.java_client.DeviceActionShortcuts
- io.appium.java_client.android.AndroidDeviceActionShortcuts
- io.appium.java_client.ios.IOSDeviceActionShortcuts
 instead following inerfaces were designed: - io.appium.java_client.HasDeviceTime
- io.appium.java_client.HidesKeyboard
- io.appium.java_client.HidesKeyboardWithKeyName
- io.appium.java_client.PressesKeyCode
- io.appium.java_client.ios.ShakesDevice
- io.appium.java_client.HasSessionDetails
 That was done because Windows automation tools have some features that were considered as Android-specific and iOS-specific.
 The list of classes and methods which were marked deprecated and they are going to be removed - AppiumDriver#swipe(int, int, int, int, int)
- AppiumDriver#pinch(WebElement)
- AppiumDriver#pinch(int, int)
- AppiumDriver#zoom(WebElement)
- AppiumDriver#zoom(int, int)
- AppiumDriver#tap(int, WebElement, int)
- AppiumDriver#tap(int, int, int, int)
- AppiumDriver#swipe(int, int, int, int, int)
- MobileElement#swipe(SwipeElementDirection, int)
- MobileElement#swipe(SwipeElementDirection, int, int, int)
- MobileElement#zoom()
- MobileElement#pinch()
- MobileElement#tap(int, int)
- io.appium.java_client.SwipeElementDirectionand- io.appium.java_client.TouchebleElementalso were marked deprecated.
 redesign of TouchActionandMultiTouchAction- constructors were redesigned. There is no strict binding of AppiumDriverandTouchAction/MultiTouchAction. They can consume any instance of a class that implementsPerformsTouchActions.
- io.appium.java_client.ios.IOSTouchActionwas added. It extends- io.appium.java_client.TouchAction.
- the new interface io.appium.java_client.PerformsActionswas added. It unifiesTouchActionandMultiTouchActionnow. #543
 JsonToMobileElementConverterre-design #532:- unused MobileElementToJsonConverterwas removed
- JsonToMobileElementConverteris not rhe abstract class now. It generates instances of MobileElement subclasses according to current session parameters
- JsonToAndroidElementConverteris deprecated now
- JsonToIOSElementConverteris depreacated now
- JsonToYouiEngineElementConverteris deprecated now.
- constructors of 'AppiumDriver' were re-designed.
- constructors of 'AndroidDriver' were re-designed.
- constructors of 'IOSDriver' were re-designed.
 
 
- 
- 
[MAJOR ENHANCEMENT] Windows automation. Epic #471 - The new interface io.appium.java_client.FindsByWindowsAutomationwas added. #462. With @jonstoneman 's authorship.
- The new selector strategy io.appium.java_client.MobileBy.ByWindowsAutomationwas added. #462. With @jonstoneman 's authorship.
- io.appium.java_client.windows.WindowsDriverwas designed. #538
- io.appium.java_client.windows.WindowsElementwas designed. #538
- io.appium.java_client.windows.WindowsKeyCodewas added. #538
- Page object tools were updated #538
- the io.appium.java_client.pagefactory.WindowsFindByannotation was added.
- io.appium.java_client.pagefactory.AppiumFieldDecoratorand supporting tools were actualized.
 
- the 
 
- The new interface 
- 
[MAJOR ENHANCEMENT] iOS XCUIT mode automation: - io.appium.java_client.remote.AutomationName#IOS_XCUI_TESTwas added
- The new interface io.appium.java_client.FindsByIosNSPredicatewas added. #462. With @rafael-chavez 's authorship. It is implemented byio.appium.java_client.ios.IOSDriverandio.appium.java_client.ios.IOSElement.
- The new selector strategy io.appium.java_client.MobileBy.ByIosNsPredicatewas added. #462. With @rafael-chavez 's authorship.
- Page object tools were updated #545, #546
- the io.appium.java_client.pagefactory.iOSXCUITFindByannotation was added.
- io.appium.java_client.pagefactory.AppiumFieldDecoratorand supporting tools were actualized.
 
- the 
 
- 
[ENHANCEMENT] Added the ability to set UiAutomator Congfigurator values. #410. 
 #477.
- 
[ENHANCEMENT]. Additional methods which perform device rotation were implemented. #489. #439. But it works for iOS in XCUIT mode and for Android in UIAutomator2 mode only. The feature request: #7131 
- 
[ENHANCEMENT]. TouchID Implementation (iOS Sim Only). Details: #509 
- 
[ENHANCEMENT]. The ability to use port, ip and log file as server arguments was provided. Feature request: #521. Fixes: #522, #524. 
- 
[ENHANCEMENT]. The new interface io.appium.java_client.android.HasDeviceDetailswas added. It is implemented byio.appium.java_client.android.AndroidDriverby default. #518
- 
[ENHANCEMENT]. New touch actions were added. io.appium.java_client.ios.IOSTouchAction#doubleTap(WebElement, int, int)andio.appium.java_client.ios.IOSTouchAction#doubleTap(WebElement). #523, #444
- 
[ENHANCEMENT]. All constructors declared by io.appium.java_client.AppiumDriverare public now.
- 
[BUG FIX]: There was the issue when "@WithTimeout" was changing general timeout of the waiting for elements. Bug report: #467. Fixes: #468, #469, #480. Read: supported-settings 
- 
Added the server flag io.appium.java_client.service.local.flags.AndroidServerFlag#REBOOT. #476
- 
Added io.appium.java_client.remote.AndroidMobileCapabilityType.APP_WAIT_DURATIONcapability. #461
- 
the new automation type io.appium.java_client.remote.MobilePlatform#ANDROID_UIAUTOMATOR2was add.
- 
the new automation type io.appium.java_client.remote.MobilePlatform#YOUI_ENGINEwas add.
- 
Additional capabilities were addede: - IOSMobileCapabilityType#CUSTOM_SSL_CERT
- IOSMobileCapabilityType#TAP_WITH_SHORT_PRESS_DURATION
- IOSMobileCapabilityType#SCALE_FACTOR
- IOSMobileCapabilityType#WDA_LOCAL_PORT
- IOSMobileCapabilityType#SHOW_XCODE_LOG
- IOSMobileCapabilityType#REAL_DEVICE_LOGGER
- IOSMobileCapabilityType#IOS_INSTALL_PAUSE
- IOSMobileCapabilityType#XCODE_CONFIG_FILE
- IOSMobileCapabilityType#KEYCHAIN_PASSWORD
- IOSMobileCapabilityType#USE_PREBUILT_WDA
- IOSMobileCapabilityType#PREVENT_WDAATTACHMENTS
- IOSMobileCapabilityType#WEB_DRIVER_AGENT_URL
- IOSMobileCapabilityType#KEYCHAIN_PATH
- MobileCapabilityType#CLEAR_SYSTEM_FILES
 
- 
[UPDATE] to Selenium 3.0.1. 
- 
[UPDATE] to Spring Framework 4.3.5.RELEASE. 
- 
[UPDATE] to AspectJ weaver 1.8.10. 
4.1.2
- Following capabilities were added:
- io.appium.java_client.remote.AndroidMobileCapabilityType.ANDROID_INSTALL_TIMEOUT
- io.appium.java_client.remote.AndroidMobileCapabilityType.NATIVE_WEB_SCREENSHOT
- io.appium.java_client.remote.AndroidMobileCapabilityType.ANDROID_SCREENSHOT_PATH. The pull request: #452
 
- org.openqa.selenium.Alertwas reimplemented for iOS. Details: #459
- The deprecated io.appium.java_client.generic.searchcontextwas removed.
- The dependency on com.google.code.gsonwas updated to 2.7. Also it was adde to exclusions
 fororg.seleniumhq.seleniumselenium-java.
- The new AutomationName was added. IOS_XCUI_TEST. It is needed for the further development.
- The new MobilePlatform was added. WINDOWS. It is needed for the further development.
4.1.1
BUG FIX: Issue #450. Fix: #451. Thanks to @tutunang for the report.
4.1.0
- all code marked @Deprecatedwas removed.
- getSessionDetails()was added. Thanks to @saikrishna321 for the contribution.
- FIX #362, #220, #323. Details read there: #413
- FIX #392. Thanks to @truebit for the bug report.
- The dependency on cglibwas replaced by the dependency oncglib-nodep. FIX #418
- The casting to the weaker interface HasIdentityinstead of classRemoteWebElementwas added. It is the internal refactoring of theTouchAction. #432. Thanks to @asolntsev for the contribution.
- The setValuemethod was moved toMobileElement. It works against text input elements on Android.
- The dependency on org.springframeworkspring-contextv4.3.2.RELEASEwas added
- The dependency on org.aspectjaspectjweaverv1.8.9was added
- ENHANCEMENT: The alternative event firing engine. The feature request: #242.
 Implementation: #437. Also new WIKI chapter was added.
- ENHANCEMENT: Convenient access to specific commands for each supported mobile OS. Details: #445
- dependencies and plugins were updated
- ENHANCEMENT: YouiEngineDriverwas added. Details: appium server #6215, #429, #448. It is just the draft of the new solution that is going to be extended further. Please stay tuned. There are many interesting things are coming up. Thanks toYou I Engineteam for the contribution.
4.0.0
- all code marked @Deprecatedwas removed. Java client won't support old servers (v<1.5.0)
 anymore.
- the ability to start an activity using Android intent actions, intent categories, flags and arguments
 was added toAndroidDriver. Thanks to @saikrishna321 for the contribution.
- scrollTo()and- scrollToExact()became deprecated. They are going to be removed in the next release.
- The interface io.appium.java_client.ios.GetsNamedTextFieldand the declared methodT getNamedTextField(String name)are
 deprecated as well. They are going to be removed in the next release.
- Methods findElements(String by, String using)andfindElement(String by, String using)oforg.openga.selenium.remote.RemoteWebdriverare public now. Thanks to @SrinivasanTarget.
- the io.appium.java_client.NetworkConnectionSettingclass was marked deprecated
- the enum io.appium.java_client.android.Connectionwas added. All supported network bitmasks are defined there.
- Android. Old methods which get/set connection were marked  @Deprecated
- Android. New methods which consume/return io.appium.java_client.android.Connectionwere added.
- the commandRepositoryfield is public now. The modification of theMobileCommand
- Constructors like AppiumDriver(HttpCommandExecutor executor, Capabilities capabilities)were added to
 io.appium.java_client.android.AndroidDriverandio.appium.java_client.ios.IOSDriver
- The refactoring of io.appium.java_client.internal.JsonToMobileElementConverter. Now it accepts
 org.openqa.selenium.remote.RemoteWebDriveras the constructor parameter. It is possible to re-use
 io.appium.java_client.android.internal.JsonToAndroidElementConverteror
 io.appium.java_client.ios.internal.JsonToIOSElementConverterby RemoteWebDriver when it is needed.
- Constructors of the abstract io.appium.java_client.AppiumDriverwere redesigned. Now they require
 a subclass ofio.appium.java_client.internal.JsonToMobileElementConverter. Constructors of
 io.appium.java_client.android.AndroidDriverandio.appium.java_client.ios.IOSDriverare same still.
- The pushFile(String remotePath, File file)was added to AndroidDriver
- FIX of TouchAction. Instances of the TouchAction class are reusable now
- FIX of the swiping issue (iOS, server version >= 1.5.0). Now the swiping is implemented differently by
 AndroidDriver and IOSDriver. Thanks to @truebit and @nuggit32 for the catching.
- the project was integrated with maven-checkstyle-plugin. Thanks to @SrinivasanTarget for the work
- source code was improved according to code style checking rules.
- the integration with org.owasp dependency-check-mavenwas added. Thanks to @saikrishna321
 for the work.
- the integration with org.jacoco jacoco-maven-pluginwas added. Thanks to @SrinivasanTarget for the contribution.
3.4.1
- Update to Selenium v2.53.0
- all dependencies were updated to latest versions
- the dependency on org.apache.commons commons-lang3 v3.4 was added
- the fix of Widget method invocation.#340. A class visibility was taken into account. Thanks to aznime for the catching.
 Server flags were added:- GeneralServerFlag.ASYNC_TRACE
- IOSServerFlag.WEBKIT_DEBUG_PROXY_PORT
 
- Source code was formatted using eclipse-java-google-style.xml. This is not the complete solution. The code style checking is going to be added further. Thanks to SrinivasanTarget for the work!
3.4.0
- Update to Selenium v2.52.0
- getAppStrings()methods are deprecated now. They are going to be removed.- getAppStringMap()methods were added and now return a map with app strings (keys and values)
 instead of a string. Thanks to @rgonalo for the contribution.
- Add getAppStringMap(String language, String stringFile)method to allow searching app strings in the specified file
- FIXED of the bug which causes deadlocks of AppiumDriver LocalService in multithreading. Thanks to saikrishna321 for the bug report.
- FIXED Zoom methods, thanks to @kkhaidukov
- FIXED The issue of compatibility of AppiumServiceBuilder with Appium node server v >= 1.5.x. Take a look at #305
- getDeviceTime()was added. Thanks to @SrinivasanTarget for the contribution.
- FIXED longPressKeyCode()methods. Now they use the convenient JSONWP command.Thanks to @kirillbilchenko for the proposed fix.
- FIXED javadoc.
- Page object tools were updated. Details read here: #311, #313, #317. By.name locator strategy is deprecated for Android and iOS. It is still valid for the Selendroid mode. Thanks to @SrinivasanTarget for the helping.
- The method lockScreen(seconds)is deprecated and it is going to be removed in the next release. Since Appium node server v1.5.x it is recommended to use
 AndroidDriver.lockDevice()...AndroidDriver.unlockDevice()orIOSDriver.lockDevice(int seconds)instead. Thanks to @namannigam for
 the catching. Read #315
- maven-release-pluginwas added to POM.XML configuration
- #320 fix. The Widget.getSelfReference()was added. This method allows to extract a real widget-object from inside a proxy at some extraordinary situations. Read: PR. Thanks to SergeyErmakovMercDev for the reporting.
- all capabilities were added according to this description. There are three classes: io.appium.java_client.remote.MobileCapabilityType(just modified),io.appium.java_client.remote.AndroidMobileCapabilityType(android-specific capabilities),io.appium.java_client.remote.IOSMobileCapabilityType(iOS-specific capabilities). Details are here: #326
- some server flags were marked deprecatedbecause they are deprecated since server node v1.5.x. These flags are going to be removed at the java client release. Details are here: #326
- The ability to start Appium node programmatically using desired capabilities. This feature is compatible with Appium node server v >= 1.5.x. Details are here: #326
3.3.0
- updated the dependency on Selenium to version 2.48.2
- bug fix and enhancements of io.appium.java_client.service.local.AppiumDriverLocalService
- FIXED bug which was found and reproduced with Eclipse for Mac OS X. Please read about details here: #252
 Thanks to saikrishna321 for the bug report
- FIXED bug which was found out by Jonahss. Thanks for the reporting. Details: #272
 and #273
- For starting an appium server using localService, added additional environment variable to specify the location of Node.js binary: NODE_BINARY_PATH
- The ability to set additional output streams was provided
 
- FIXED bug which was found and reproduced with Eclipse for Mac OS X. Please read about details here: #252
- The additional startActivity() method was added to AndroidDriver. It allows to start activities without the stopping of a target app
 Thanks to deadmoto for the contribution
- The additional extension of the Page Object design pattern was designed. Please read about details here: #267
- New public constructors to AndroidDriver/IOSDriver that allow passing a custom HttpClient.Factory Details: #276 thanks to baechul
3.2.0
- updated the dependency on Selenium to version 2.47.1
- the new dependency on commons-validator v1.4.1
- the ability to start programmatically/silently an Appium node server is provided now. Details please read at #240.
 Historical reference: The similar solution has been designed by @Hassan-Radi.
 The mentioned framework and the current solution use different approaches.
- Throwing declarations were added to some searching methods. The "getMouse" method of RemoteWebDriver was marked Deprecated
- Add replaceValuemethod for elements.
- Replace sendKeyEvent()method in android with pressKeyCode(int key) and added: pressKeyCode(int key, Integer metastate), longPressKeyCode(int key), longPressKeyCode(int key, Integer metastate)
3.1.1
- Page-object findBy strategies are now aware of which driver (iOS or Android) you are using. For more details see the Pull Request: https://github.com/appium/java-client/pull/213
- If somebody desires to use their own Webdriver implementation then it has to implement HasCapabilities.
- Added a new annotation: WithTimeout. This annotation allows one to specify a specific timeout for finding an element which overrides the drivers default timeout. For more info see: https://github.com/appium/java-client/pull/210
- Corrected an uninformative Exception message.
3.0.0
- AppiumDriver class is now a Generic. This allows us to return elements of class MobileElement (and its subclasses) instead of always returning WebElements and requiring users to cast to MobileElement. See https://github.com/appium/java-client/pull/182
- Full set of Android KeyEvents added.
- Selenium client version updated to 2.46
- PageObject enhancements
- Junit dependency removed
2.2.0
- Added new TouchAction methods for LongPress, on an element, at x,y coordinates, or at an offset from within an element
- SwipeElementDirection changed. Read the documentation, it's now smarter about how/where to swipe
- Added APPIUM_VERSION MobileCapabilityType
- sendKeyEvent()moved from AppiumDriver to AndroidDriver
- linkTextand- partialLinkTextlocators added
- setValue() moved from MobileElement to iOSElement
- Fixed Selendroid PageAnnotations
2.1.0
- Moved hasAppString() from AndroidDriver to AppiumDriver
- Fixes to PageFactory
- Added @AndroidFindAll and @iOSFindAll
- Added toggleLocationServices() to AndroidDriver
- Added touchAction methods to MobileElement, so now you can do element.pinch(),element.zoom(), etc.
- Added the ability to choose a direction to swipe over an element. Use the SwipeElementDirectionenums:UP, DOWN, LEFT, RIGHT
2.0.0
- AppiumDriver is now an abstract class, use IOSDriver and AndroidDriver which both extend it. You no longer need to include the PLATFORM_NAMEdesired capability since it's automatic for each class. Thanks to @TikhomirovSergey for all their work
- ScrollTo() and ScrollToExact() methods reimplemented
- Zoom() and Pinch() are now a little smarter and less likely to fail if you element is near the edge of the screen. Congratulate @BJap on their first PR!
1.7.0
- Removed scrollTo()andscrollToExact()methods because they relied oncomplexFind(). They will be added back in the next version!
- Removed complexFind()
- Added startActivity()method
- Added isLocked()method
- Added getSettings()andignoreUnimportantViews()methods
1.6.2
- Added MobilePlatform interface (Android, IOS, FirefoxOS)
- Added MobileBrowserType interface (Safari, Browser, Chromium, Chrome)
- Added MobileCapabilityType.APP_WAIT_ACTIVITY
- Fixed small Integer cast issue (in Eclipse it won't compile)
- Set -source and -target of the Java Compiler to 1.7 (for maven compiler plugin)
- Fixed bug in Page Factory
1.6.1
- Fixed the logic for checking connection status on NetworkConnectionSetting objects
1.6.0
- Added @findBy annotations. Explanation here: https://github.com/appium/java-client/pull/68 Thanks to TikhomirovSergey
- Appium Driver now implements LocationContext interface, so setLocation() works for setting GPS coordinates
1.5.0
- Added MobileCapabilityType enums for desired capabilities
- findElementand- findElementsreturn MobileElement objects (still need to be casted, but no longer instantiated)
- new appium v1.2 hideKeyboard()strategies added
- getNetworkConnection()and- setNetworkConnection()commands added
1.4.0
- Added openNotifications() method, to open the notifications shade on Android
- Added pullFolder() method, to pull an entire folder as a zip archive from a device/simulator
- Upgraded Selenium dependency to 2.42.2
1.3.0
- MultiGesture with a single TouchAction fixed for Android
- Now depends upon Selenium java client 2.42.1
- Cleanup of Errorcode handling, due to merging a change into Selenium
1.2.1
- fix dependency issue
1.2.0
- complexFind() now returns MobileElement objects
- added scrollTo() and scrollToExact() methods for use with complexFind()
1.1.0
- AppiumDriver now implements Rotatable. rotate() and getOrientation() methods added
- when no appium server is running, the proper error is thrown, instead of a NullPointerException
1.0.2
- recompiled to include some missing methods such as shake() and complexFind()
Running tests
Run a test using
gradle clean -Dtest.single=IOSAlertTest test
 projecs by owner
                                                                (
                                                                projecs by owner
                                                                (