Releases: appium/java-client
v5.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_FAC...
 
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
[maven-release-plugin] copy for tag 4.1.1
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
v3.3.0
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
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
v3.2.0
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 replaceValue method for elements.
Replace sendKeyEvent() method in android with pressKey() and added longPressKey() method.