Appium 1.7.0 Released

Hi everyone, we’ve got a fantastic release ready for you, with tons of stuff! Want to try it out right now? Head to your terminal and get the latest from NPM:

npm uninstall -g appium
npm install -g appium

Full Changelog

(Taken from the official Release Notes on GitHub)

Note: This is a feature release, marking two major changes:

  • Support iOS 11 through Xcode 9 beta 6
  • Support multiple simultaneous sessions in Android and iOS (9+)

Known Issues:

  • Android
    • Webviews on Android O do not work because of a bug in Chromedriver. We
      are working on a workaround. Chrome sessions still work
  • iOS
    • Touch ID enrollment on simulators in Xcode 9 does not work because of an
      issue with AppleScript
    • Scaling simulators with Xcode 9 does not work
    • Simulators in Xcode 9 produce no meaningful device logs
    • Parallel Safari/Webview sessions are not working due to an Apple bug

General

  • Fix handling of sending keys to elements in recent versions of Selenium
  • Allow app capability that is a url to have query parameters
  • Begin to allow multiple device support in situations where it is possible
    (e.g., iOS under Xcode 9)
  • Add isHeadless capability to allow running simulator/emulator with no UI

iOS

  • Add command to upload media to simulator
  • Fix reliability of touch ID functionality
  • Fix detection of system apps
  • Update atoms used for MobileSafari automation to those of Selenium 3.5.3
  • Add realDeviceLogger capability to allow specification of what program to
    use to capture logs on real device
  • Fix handling of enablePerformanceLogging capability in Safari tests
  • Fix offset when Safari on an iPad has multiple tabs

iOS - XCUITest

  • Support for latest Beta of iOS 11 (Xcode 9 beta 6)
  • Multiple device support
  • Fix handling of bundle id on simulators
  • Make nativeWebTap a setting as well as a desired capability
  • Allow nativeWebTap to work on real devices
  • Do not try to uninstall app before installing on real device, which was causing
    many issues
  • Fix clearing of text fields
  • Change behavior of useNewWDA: if true, forces uninstall of any existing
    WebDriverAgent app on device. Set it to true if you want to apply different
    startup options for WebDriverAgent for each session. Real devices require
    WebDriverAgent client to run for as long as possible without reinstall/restart
    to avoid issues. The false value will try to detect currently running WDA
    listener executed by previous testing session(s) and reuse it if possible,
    which is highly recommended for real device testing and to speed up suites of
    multiple tests in general. A new WDA session will be triggered at the default
    URL (http://localhost:8100) if WDA is not listening and webDriverAgentUrl
    capability is not set.
  • Allow setting url in native context
  • Fix screenshot functionality

Android

  • Add remoteAdbHost capability to specify the host on which adb is running, if
    it is not localhost
  • Add methods to start and stop recording the screen
  • Fix screenshot commands
  • Skip setting of mock location for emulators
  • Add methods for emulator phone capacity: sendSMS, gsmCall, gsmSignal,
    gsmVoice, powerAC, powerCapacity, and networkSpeed
  • Fix cleanup of adb port forwarding during Chrome sessions
  • Fix error where package name would be appended to fully qualified activity
    name and package finding would then fail
  • Properly handle bootstrap failure on launch
  • Make sure correct logger is used for bootstrap

Android - UIAutomator 2

  • Fix handling of adbPort capability
  • Fix coverage handling
  • Handle pressing and long pressing key codes
  • Enable nativeWebScreenshot capability
  • Fix restoring of IME when unicodeKeyboard/resetKeyboard capabilities are
    used
  • Add disableWindowAnimation capability to launch instrumentation with no
    animation
  • Correctly start ChromeDriver session for Chrome session
  • Allow getting password attribute from elements
11 Likes

Please share multiple device support tutorial or documentation

2 Likes

Java client for Appium Mobile Webdriver

<dependency>
    <groupId>io.appium</groupId>
    <artifactId>java-client</artifactId>
    <version>5.0.3</version>
</dependency>

Learn more here: Appium Support

@micahwilliams12 latest Java Client version is 5.0.3 ( https://github.com/appium/java-client/tags )

From where you found 1.7.0 ?

Hi All,

Can someone please clarify difference between fixes related to Android VS Android - UIAutomation 2 as per the release notes ?

Per my understanding UIAutomator 2 belongs to Google and am not sure it appium team can do fixes in that project directly.

Same query holds for iOS VS iOS - XCUITest fixes

Thanks in advance.

For me this worked out of the box. Just start two UI tests on the same Appium server port.

@Appium team: This is a great new feature. Thank you for this

@micahwilliams12 Whats corresponding Python Appium Client version for java-client version 5.0.3?
I am facing issue with save_screenshot in iOS 11.
This got fixed after updating libimobiledevice. Here are the steps:
brew uninstall libimobiledevice
brew install --HEAD libimobiledevice

Hi guys,

the SQAEvangelist test automation framework is using the java client and always works great. Thanks again for the great work!

We have been noticing an issue not mentioned here: Screenshots not working with the latest IOSDriver and Xcode 9 / iOS 11 and java client 5.0.3. Is anyone else experiencing the problem or is there another technique to do this now?

Is there a ruby client for running tests on multiple simulators in iOS? I am using Xcode 9beta with appium 1.7.0 to run my cucumber+ruby tests .

It would be very helpful if someone can share me a documentation for the same.

Thanks

Android: “Add methods to start and stop recording the screen”

  • Hello; Can i get any exemple or documentation for this? ty!

@Appium team: Great up. Ty!

1 Like

Hello, can you provide more details - I’m trying to launch several tests on the same appium, but either they try to use the same simulator (if I query the same version, e.g. 10.2) or a new one is launched (if I try to run 10.2 and 10.3) but the automation happens only on the first one, i.e. the second test launches the new simulator but the commands are performed on the first one. May be some special capabilities are to be set?

@jlipps could you point us to where we can find more info relating to iOS “Multiple device support” ?

You also have to use separate wda ports for parallel using of simulators

There is a new capabilities on 1.7 version?

Set the udid desired capability, which is unqiue per simulator. Run instruments -w devices to list all available simulators and their udids.

EDIT: Ok, i’m unable to run multiple iOS simulators at once. But I can run Android and iOS emulators and UI tests at the same time on the same appium server.

I´ve been trying out appium for some days now and i´m having some troubles with it. I´ve automated a test on an app on Rubymine and was able to run it on 2 android devices through Selenium grid. The problem is that i have to, after i start the hub, register 2 nodes and start 2 appium servers with an udid on default capabilities for each one. I would like to just start 1 appium server and selenium grid would choose which device is available. When i do that the test starts on the 1st device and when i start a second test it just overrrides the 1st test on the 1st device. On the test im not passing any udid. here is my node and what i do to start the hub and the node with 2 instances. I have 2 emulators with android 7.0.

{
“capabilities”: [
{
“appPackage”: “cl.entel.appswlsdesa”,
“appActivity”: “.activity.SplashscreenActivity”,
“version”: “7.0”,
“maxInstances”: 2,
“platform”: “ANDROID”
}
],
“cleanUpCycle”: 2000,
“timeout”: 30000,
“proxy”: “org.openqa.grid.selenium.proxy.DefaultRemoteProxy”,
“url”: “http://127.0.0.1:4723/wd/hub”,
“maxSession”: 5,
“register”: true,
“registerCycle”: 5000,
“nodeStatusCheckTimeout”: 30000,
“hubPort”: 4444,
“hubHost”: “192.168.122.1”,
“role”: “node”,
“nodePolling”: 5000,
“unregisterIfStillDownAfter”: 60000,
“downPollingLimit”: 2,
“debug”: false,
“servlets” : [],
“withoutServlets”: [],
“custom”: {}
}

I start the hub with: java -jar selenium-server-standalone-3.5.3.jar -role hub
and the node: appium --nodeconfig ./android.json -a 127.0.0.1 -p 4723 -ca 127.0.0.1 -cp 4723

It would be awesome if selenium grid chose an available device. Thanks!

Has there been a response to this? I would like to know as well

Support was done in server, now clients need to implement it. Follow state in here:

1 Like

Hello, It worked for me with using different udid of course for the different simulators, and then each test suite have to run with a different wda port.