Java-client version 3.4.0 released

Hi everebody!
The appium version 1.5 has been released. I’m working on the new version of .NET client now. It is coming out soon.
There are good news. The new Java client has been promoted yesterday. The list of changes:

  • 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() or IOSDriver.lockDevice(int seconds) instead. Thanks to @namannigam for
    the catching. Read #315

  • maven-release-plugin was 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 deprecated because 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

4 Likes

The main idea was to synchronize client with server node 1.5 and to keep some backward compatibility with node server v <= 1.4.16. The next release (it is probably will be v4.0.0) will be incompatible with old nodes.

There are some plans for the next release:

  • to clean repo of deprecated code.

  • improve testing. Ticket: #325;

  • to automate the building/deployment/PR validation. Java client was a small lib and since April’14 it has grown to the framework. I think it becomes a solid project. So human cause and related problems should be excluded. Tikets:
    #269 , #253

  • improve API. Since v2.0.0 there are many movings/removes/refactors have been here. So I think the current API (additional interfaces) needs for some audit.

  • improve gestures. There are some interesting thoughts related to this PR (not merged yet).

  • add the Spring-feature which should become the solution of problems related to EventFiringWebdriver from Selenium.
    Ticket: #242.

  • add WIKI. Ticket: #321

  • Optianally: migrate client from maven to gradle. #214. But I’m not sure that it is necessary. The project feels good with maven. Maybe it will have been done for the 5.0.0. What do you think?

This is not the final scope. It will be changed/detailed further.

It is possible that something is raw yet (on the client side as well as on the server side). Series of minor 3.4.x are possible. If you find something that looks like a bug please post a new issue here https://github.com/appium/java-client/issues or here https://github.com/appium/appium/issues. Please format new issues like:

1 Like