Appium 1.9.0 Released

CHANGES IN VERSION 1.9.0 (from 1.8.1)

Appium 1.9.0 is a feature release, comprising multiple updates.


  • Full W3C Specification support.
  • Add full beta of Espresso driver
    for Android automation (used by specifying automationName capability to be
  • Add driver for Samsung Tizen devices
  • Add -image find element strategy,
  • Fix --async-trace server argument, and rename as --long-stacktrace
  • Sample code has been moved into the main repository to aid in maintenance.
  • Fix status retrieval to speed up performance.


  • Add support for Xcode 10 beta 5 and iOS 12 beta 5.
  • Add preliminary support for MacOS Mojave beta.
  • Add face id biometric support.
  • Fix retrieval of device time, and add optional format parameter.
  • Do not crash if there is no idevicesyslog when ending session.
  • Handle frames when page changes in Safari.
  • Add desired capabilities:
    • remoteDebugProxy - port or Unix domain socket on which a proxy for the
      remote debugger sits.
    • safariGarbageCollect - turn on/off JS garbage collection in Safari.
    • showSafariNetworkLog - print Safari network logs in the Appium server logs.
    • mjpegServerPort - port to which screenshots can be streamed.
  • Fix handling of settings updates, so simulators are not restarted unnecessarily.
  • Allow pulling of folder from real devices.
  • Add mobile: getContexts execute function, to retrieve meta-information (title,
    url, etc.) about available contexts.
  • Fix certificate retrieval and handling.
  • Fix cookie handling, to allow secure cookies.
  • Fix Safari timeout issues.
  • Add support to retrieve Safari network logs, as safariNetwork log type.


  • Update Chromedriver to v2.41.
  • Get Chrome version for Webviews in Android 7+, to find correct Chromedriver.
  • Make sure UiAutomator processes are cleaned up during test.
  • Fix handling of autoWebview capability.
  • New desired capabilities:
    • mjpegScreenshotUrl - url to stream screenshots to.
    • chromedriverUseSystemExecutable - boolean flag to use the default Chromedriver
      installed with Appium, avoiding any attempt to find correct Chromedriver.
    • disableWindowAnimation - disable window animations on device (now available
      on UiAutomator and UiAutomator2).
    • pageLoadStrategy - page load strategy for Chromedriver.
  • Allow test-only APKs to be installed.
  • Fix implicit wait handling for finding elements.
  • Better handle Unicode IME installation.
  • Relax package validation logic.
  • Fix error in UiAutomator searches with nested quotes.
  • Perform accessibility refresh when needed on UiAutomator2.
  • Improve logic for determining if apps need upgrade.
  • Fix screen recording to allow longer recordings, up to 30 minutes.

npm install -g appium@beta --verbose installs [email protected].
Is this an issue? or am i using the wrong command here for the Beta.

npm info lifecycle [email protected]~postinstall: [email protected]
npm timing action:postinstall Completed in 105ms
npm verb unlock done using /Users/shirodkm/.npm/_locks/staging-3a08f0df5026584d.lock for /usr/local/lib/node_modules/.staging
npm timing stage:executeActions Completed in 31825ms
npm timing stage:rollbackFailedOptional Completed in 1ms
npm timing stage:runTopLevelLifecycles Completed in 34508ms

  • [email protected]
    added 594 packages from 410 contributors in 34.513s
    npm verb exit [ 0, true ]
    npm timing npm Completed in 34859ms
    npm info ok
  1. 1.9.0 is opened from cmd very very slow
  2. parallel has series issues, more then 2 devices not working

Very not stable:
Unhandled rejection Error: UiAUtomator shut down unexpectedly
at AndroidBootstrap.callee$2$0$

Back to 8.1,

After upgrading Appium to v1.9.0, I’m getting error on wait.until(…) an error:

[W3C] Encountered internal error running command: BadParametersError: Parameters were incorrect. We wanted "W3C protocol expects any of script, pageLoad or implicit to be set" and you sent {"type":"implicit","ms":300}

Does anyone know what causes this error? The problem seems to be in this line of code, but I do not know what is the correct way:

driver.manage().timeouts().implicitlyWait(300, TimeUnit.MILLISECONDS);

Also any I have a code like this:

public static boolean isElementPresent(Appium driver, By by) {
try {
return true;
} catch (Exception e) {
return false;

And each time this function is called and element isn’t present, I get and error:

[MJSONWP] Encountered internal error running command: NoSuchElementError: An element could not be located on the page using the given search parameters.
[MJSONWP] at XCUITestDriver.callee$0$0$ (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/lib/commands/find.js:130:13)
[MJSONWP] at tryCatch (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
[MJSONWP] at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
[MJSONWP] at GeneratorFunctionPrototype.prototype.(anonymous function) [as throw] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
[MJSONWP] at GeneratorFunctionPrototype.invoke (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)

These logs weren’t displayed in the console before - is there any way to disable these?

I just updated to appium 1.9.0. And whenever i try to run a test i get the error message: org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: The desired capabilities must include either 'appPackage' or 'browserName' Build info: version: '3.5.2', revision: '10229a9', time: '2017-08-21T17:29:55.15Z' System info: host: 'KEL', ip: '', 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_171' Driver info: driver.version: AndroidDriver remote stacktrace: UnknownError: An unknown server-side error occurred while processing the command. Original error: The desired capabilities must include either 'appPackage' or 'browserName'
Meanwhile, i have appPackage set in my DesiredCapabilities object.

Please add your server log to Appium 'new session' response is not W3C compatible. This switches selenium-java client to old protocol and cause false-positive tests · Issue #11300 · appium/appium · GitHub. This kind of problems happens due to a bug in the protocol retrieval algorithm.

regarding the log: I’ve created a Pr to change its level to debug, so you might skip it by setting the minimum logging level. It would not be a good idea to not log it at all, since there is an exception. You may use !driver.findElements(location).isEmpty() verification as well and this one won’t produce any traces (and is also faster, since it ignores the implicit wait).

Done and thank you for your reply. For now, I will just downgrade Appium version back to 1.8.1.

Btw. What is the minimum logging level? Info?

The minimum level is debug

Use beta if you can. It helps us to catch bugs on early stages. Otheriwse after some time this beta is becoming a release and creates problems like the one above

@Kelechi Did you get a solution for this. I see that you have to set the appPackage for app and browserName for web.

@mykola-mokhnach ; I used to set both values (appPackage’ and ‘browserName’ ) earlier , now it shows error that any one of them shall be accepted.

Does Appium v1.9.0 support image recognition??