Appium server v1.2.3 released

Hi everyone, thanks to all your help in this bugfix release! Check it out:

Next up will be Appium 1.3.0-beta with support for iOS8.

Meanwhile, here’s the changelog for 1.2.3

General

  • add a settings api (used currently only for Android xpath compression)
  • add configurable loglevels for different transports
  • allow appium to be run under sudo if the sudo user owns the appium files

iOS

  • fix crash while recovering from instruments failure
  • add ability to launch app by ‘bundleId’ cap alone (no ‘app’ cap)
  • misc groundwork for iOS8
  • fix bug that prevented scrolling collectionViews
  • more crash recovery bugfixes
  • use ‘click’ atom in webviews, ‘tap’ sent two clicks
  • fix bug where we’d try to kill a null logging proc and crash
  • enable performance logs for webviews
  • allow automation of native frame in safari (actually works on 7.1!)
  • fix uiautomation predicate search bug
  • fix ‘spawn ENOENT’ bug caused by a missing deviceconsole binary
  • fix autoAcceptAlert bug
  • fix certain findElement crashes
  • fix hideKeyboard bugs

Android

  • fix issue with unzipping apk
  • add ability to launch arbitrary apps/activities mid-session
  • add lock() method to lock screen
  • add unlock() method to unlock screen
  • fix bug where app would be classified incorrectly as not installed
  • add settings api member for setting layout hierarchy compression
  • fix crash when touch actions attempted on webviews
  • undo setText changes and simply handle hint text fields better

Selendroid

  • fix --selendroid-quick reset.sh option
  • fix unicode keyboard issues
  • fix bug in getting window_handles
  • fix bug that would prevent launching an app with spaces in its apk path

—Jonathan

6 Likes

Auto update is still 1.2.2, should I wait?

I updated to 1.2.3, but it fails to start with file paths that contain spaces :S

Never mind, it turned out to be a problem with the dot.exe application itself.

New release is working just great for now :slight_smile:

1 Like

Should we expect complete iOS 8 support in 1.3 or the 1.2.3 has any little support for iOS 8 we can play around :blush: ???

iOS8 support will land in 1.3, nothing to see in 1.2.3 :slight_smile:

Tried running with xcode 6, complains about the tracetemplate path

WebDriverException: Message: u’A new session could not be created. (Original error: Could not find Automation.tracetemplate in /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate)

Fix the Instruments path. They changed the .bundle folder to .xrplugin

ln -sf /Applications/Xcode6-Beta2.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/ /Applications/Xcode6-Beta2.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle

Match the directory structure of Xcode 5

mkdir /Applications/Xcode6-Beta2.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/
mkdir /Applications/Xcode6-Beta2.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/

Fix the simulator app name. They changed it from iPhone Simulator to iOS Simulator (about time)

ln -sf /Applications/Xcode6-Beta2.app/Contents/Developer/Applications/iOS\ Simulator.app /Applications/Xcode6-Beta2.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\ Simulator.app

Fix the binary name. They changed it from iPhone Simulator to iOS Simulator (about time)

ln -sf /Applications/Xcode6-Beta2.app/Contents/Developer/Applications/iOS\ Simulator.app/Contents/MacOS/iOS\ Simulator /Applications/Xcode6-Beta2.app/Contents/Developer/Applications/iOS\ Simulator.app/Contents/MacOS/iPhone\ Simulator

Hi,

Am i the only one that still has problem with the hang at:
info: [debug] Starting iOS device log capture via deviceconsole

When testing on a real device, even after upgrading to 1.2.3?

Does this mean that the old xpath issue with non compressed layout hierarchy is fixed? Would be fantastic if it was.

Is there an OSX build of 1.2.3? All I see in the downloads section is a dmg for 1.2.2.
Thanks.

1 Like

Can someone in the know, please explain what this means? The answer just might resolve some issues we are having with XPath.

1 Like

Should the MAC version be updated already? Mine is still pointing to 1.2.2

1 Like

In reply to @James_Farrier and @rstagner

Yes this should fix xpath issues!

xpath compression in android now defaults to false , so all views are included in xpath searches. It can slow things down a bit, so advanced users can set ignoreUnimportantViews to true for most tests, and switch it to false for tests which require xpath to get elements which Android marks as non-important.

@jonahss

Thanks for the reply. When you refer to xpath compression, I think I know what you mean, but could you provide an example of that so that I’m clear about it’s purpose?

Ok, I’ll give it a try.
Android UiAutomator has a method called setCompressedLayoutHierarchy:

/**
     * Enables or disables layout hierarchy compression.
     *
     * If compression is enabled, the layout hierarchy derived from the Acessibility
     * framework will only contain nodes that are important for uiautomator
     * testing. Any unnecessary surrounding layout nodes that make viewing
     * and searching the hierarchy inefficient are removed.
     *
     * @param compressed true to enable compression; else, false to disable
     * @since API Level 18
     */
    public void setCompressedLayoutHeirarchy(boolean compressed) {
        getAutomatorBridge().setCompressedLayoutHierarchy(compressed);
    }

So… when that is set, every single UiAutomator command runs on a subset of all the views that are actually present. That makes lookups and traversals of the layout hierarchy faster, since there’s less elements to check on every operation.

I opened up the Android ApiDemos app and called getSource(). Then I set ignoreUnimportantElements to true and ran it again.

See how less is returned when the layout is compressed? A bunch of nested FrameLayout and LinearLayout views were removed since they don’t seem to actually contain anything important.

Things will run faster, but if you wanted to query the hierarchy for one of the “dropped” views, appium wouldn’t see it, or xpath might grab the wrong element instead. That’s why it’s disabled by default. I would try enabling it and see what fails.

1 Like

Thanks.

This helps in my understanding. It appears that this is only supported for Android devices at API level 18 and up. So, that is certainly an important consideration if you need to test an app that supports API levels 15 - 19 (our use case).

Hi Daniel,

I was just wondering whether you managed to fix this issue? I have just upgraded and still having this problem…

Regards,

Sarah

Oh indeed! I forgot that the option isn’t even relevant in API levels <18. Good news for you is that it’s always off by default now :slight_smile: In times past, there were a couple versions of appium where it we set that option.