Hi guys!
Java-client version 5.0.0-BETA1 has been released. The list of chandes is too long 
It is the beta version. We will wait for contributions and bug reports before 5.0.0 will has been finalized.
Change list:
-
[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.DeviceActionShortcutsio.appium.java_client.android.AndroidDeviceActionShortcutsio.appium.java_client.ios.IOSDeviceActionShortcuts
instead following inerfaces were designed:
io.appium.java_client.HasDeviceTimeio.appium.java_client.HidesKeyboardio.appium.java_client.HidesKeyboardWithKeyNameio.appium.java_client.PressesKeyCodeio.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.SwipeElementDirectionandio.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 extendsio.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_CERTIOSMobileCapabilityType#TAP_WITH_SHORT_PRESS_DURATIONIOSMobileCapabilityType#SCALE_FACTORIOSMobileCapabilityType#WDA_LOCAL_PORTIOSMobileCapabilityType#SHOW_XCODE_LOGIOSMobileCapabilityType#REAL_DEVICE_LOGGERIOSMobileCapabilityType#IOS_INSTALL_PAUSEIOSMobileCapabilityType#XCODE_CONFIG_FILEIOSMobileCapabilityType#KEYCHAIN_PASSWORDIOSMobileCapabilityType#USE_PREBUILT_WDAIOSMobileCapabilityType#PREVENT_WDAATTACHMENTSIOSMobileCapabilityType#WEB_DRIVER_AGENT_URLIOSMobileCapabilityType#KEYCHAIN_PATHMobileCapabilityType#CLEAR_SYSTEM_FILES
-
[UPDATE] to Selenium 3.0.1.
-
[UPDATE] to Spring Framework 4.3.5.RELEASE.
-
[UPDATE] to AspectJ weaver 1.8.10.
Let’s suppose it New Year release. 
my bad. The first one, swipes, the others will just do a long press on element.