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.AppiumFunctio
n was designed. It extendsjava.util.function.Function
andcom.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.ExpectedCondition
was designed. It extendsio.appium.java_client.functions.AppiumFunction
andorg.openqa.selenium.support.ui.ExpectedCondition
. #543 - The new functional interface
io.appium.java_client.functions.ActionSupplier
was 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.AppiumDriver
can use an instance of anyio.appium.java_client.MobileBy
subclass for the searching. It should work as expected when current session supports the given selector. It will throworg.openqa.selenium.WebDriverException
otherwise. #462 -
The new interface
io.appium.java_client.FindsByFluentSelector
was 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.SwipeElementDirection
andio.appium.java_client.TouchebleElement
also were marked deprecated.
redesign of
TouchAction
andMultiTouchAction
- constructors were redesigned. There is no strict binding of
AppiumDriver
andTouchAction
/MultiTouchAction
. They can consume any instance of a class that implementsPerformsTouchActions
. -
io.appium.java_client.ios.IOSTouchAction
was added. It extendsio.appium.java_client.TouchAction
. - the new interface
io.appium.java_client.PerformsActions
was added. It unifiesTouchAction
andMultiTouchAction
now. #543
JsonToMobileElementConverter
re-design #532:- unused
MobileElementToJsonConverter
was removed -
JsonToMobileElementConverter
is not rhe abstract class now. It generates instances of MobileElement subclasses according to current session parameters -
JsonToAndroidElementConverter
is deprecated now -
JsonToIOSElementConverter
is depreacated now -
JsonToYouiEngineElementConverter
is 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.FindsByWindowsAutomation
was added. #462. With @jonstoneman 's authorship. - The new selector strategy
io.appium.java_client.MobileBy.ByWindowsAutomation
was added. #462. With @jonstoneman 's authorship. -
io.appium.java_client.windows.WindowsDriver
was designed. #538 -
io.appium.java_client.windows.WindowsElement
was designed. #538 -
io.appium.java_client.windows.WindowsKeyCode
was added. #538 - Page object tools were updated #538
- the
io.appium.java_client.pagefactory.WindowsFindBy
annotation was added. -
io.appium.java_client.pagefactory.AppiumFieldDecorator
and supporting tools were actualized.
- the
- The new interface
-
[MAJOR ENHANCEMENT] iOS XCUIT mode automation:
-
io.appium.java_client.remote.AutomationName#IOS_XCUI_TEST
was added - The new interface
io.appium.java_client.FindsByIosNSPredicate
was added. #462. With @rafael-chavez 's authorship. It is implemented byio.appium.java_client.ios.IOSDriver
andio.appium.java_client.ios.IOSElement
. - The new selector strategy
io.appium.java_client.MobileBy.ByIosNsPredicate
was added. #462. With @rafael-chavez 's authorship. - Page object tools were updated #545, #546
- the
io.appium.java_client.pagefactory.iOSXCUITFindBy
annotation was added. -
io.appium.java_client.pagefactory.AppiumFieldDecorator
and 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.HasDeviceDetails
was added. It is implemented byio.appium.java_client.android.AndroidDriver
by 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.AppiumDriver
are 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_DURATION
capability. #461 -
the new automation type
io.appium.java_client.remote.MobilePlatform#ANDROID_UIAUTOMATOR2
was add. -
the new automation type
io.appium.java_client.remote.MobilePlatform#YOUI_ENGINE
was 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.
Let’s suppose it New Year release.