This site is in read only mode. Please continue to browse, but replying, likes, and other actions are disabled for now.
34 / 37
Jun 2016

This is a valid question @jlipps @penguinho @jonahss, because in lots of apps (probably most of them) devs do not apply ids on all elements and using xpath does not seem a good alternative.

Can you post why this happened and if there is any other alternative besides xpath?

Thanks

Xpath is a completely viable solution, and in fact allows you to continue using "name".

I have been doing ALL of my Appium development using xpath exclusively and successfully. But I'm forced to do this as my AUT doesn't currently have accessibility IDs at this time. So visible text is my only unique identifier I can rely on. And some don't even have "name" attribute (protected password entry fields, for example). Thus xpath to the rescue.

locators["settings.security_notifications_slider_label"] = '//UIAStaticText[@name="Security Notifications"]'

The reason people jump to saying "xpath is bad, never use xpath" is when they're composing horribly brittle xpath based on meaningless nested indexes like:

'//UIATableGroup[2]/UIATableCell[7]/UIAStaticText[4]'

Better yet xpath allows you to find elements based on specific relationships in the page source using xpath axes.

locators["cases_and_contracts.special_all_open_cases"] = \
'//UIATableGroup[@name="SPECIAL"]/following-sibling::UIATableCell[@name="All Open Cases"]'

So go explore xpath, I think you'll find it a functionally successful method of locating your elements.

Hai Everyone..

I am using Appium1.4.16 in Ubuntu14.04.. I need to upgrade to Appium1.5.0..
How can I do that..??

@pr4bh4sh I tried both AccessibilityID and XPath, I found that XPath is much more slower than AccessibilityID. If I find an element by AccessibilityID, it will need less then 1 second, but for XPath, it will probably need 3 seconds. It is really too slow to run a full regression testing. Do you have the similar issue?

@gyl_xyz Your observations absolutely are correct. I don't know the complete internal details on how communication between Appium and UI automation happens.
But when you use AccesiblityID, appium creates UIautomation script and sends it to UIautomation. However in the case of XPath, Appium gets the complete DOM> process the XPath you have provided> creates UI Automation script > sends to UiAutomation.
So because of these intermediate processing, it takes more time compared to AccessiblityID.

So my point over supporting XPath to the people think XPath is bad
1. Don't use XPath, they are pure evil, Stop everything and keep whining to Dev's to provided proper locator.
2. Use XPath, Whenever you feel necessary. Complete your task at time.

Anyway i said too much, @gyl_xyz thanks for pointing it out :innocent:

Yes, xpath is a generally slower locator method. I believe the slowness comes from the fact before each and every xpath call Appium is pulling the full page source each time. So, if you're going to be querying a lot of xpath against the same static / unchanging page you can manually pull the page_source into a variable and then execute your xpaths against that variable. It saves a little time by shaving off all of those page_source calls. Really only appropriate if your page isn't changing and you have more than a few elements to inspect.

I think the general point being made is that @name has been deprecated, some of us are simply pointing out you can use xpath to retain use of @name. For those of us without AccessibilityId at all this is critical.

Unable to find safari launcher in Appium 1.5.0

I have a concern about the safari mobile launch in real device. I have used the appium 1.5.0 version. While installing the appium I could see the safari-launcher in tree structure. When I ran the script I am getting the error saying unable to locate the safari launcher in the directory. Here am sharing the tree structure:

/usr/local/lib
└─┬ appium@1.5.0
├─┬ appium-android-driver@1.6.12
│ ├── adm-zip@0.4.7
│ ├── appium-adb@2.4.3
│ ├─┬ appium-android-bootstrap@2.5.1
│ │ ├── appium-uiautomator@1.1.0
│ │ └── net@1.0.2
│ ├── appium-android-ime@2.0.0
│ ├─┬ appium-chromedriver@2.8.0
│ │ ├─┬ continuation-local-storage@3.1.6
│ │ │ ├─┬ async-listener@0.5.6
│ │ │ │ └── shimmer@1.0.0
│ │ │ └─┬ emitter-listener@1.0.1
│ │ │ └── shimmer@1.0.0
│ │ ├── is-os@1.0.0
│ │ └─┬ ps-node@0.0.5
│ │ └── table-parser@0.0.3
│ ├── appium-unlock@0.0.1
│ ├── io.appium.settings@2.1.0
│ ├─┬ temp@0.8.3
│ │ ├── os-tmpdir@1.0.1
│ │ └── rimraf@2.2.8
│ └─┬ yargs@3.32.0
│ ├── camelcase@2.1.0
│ ├─┬ cliui@3.1.0
│ │ ├─┬ strip-ansi@3.0.1
│ │ │ └── ansi-regex@2.0.0
│ │ └── wrap-ansi@1.0.0
│ ├─┬ decamelize@1.1.2
│ │ └── escape-string-regexp@1.0.5
│ ├─┬ os-locale@1.4.0
│ │ └─┬ lcid@1.0.0
│ │ └── invert-kv@1.0.0
│ ├─┬ string-width@1.0.1
│ │ ├─┬ code-point-at@1.0.0
│ │ │ └── number-is-nan@1.0.0
│ │ └── is-fullwidth-code-point@1.0.0
│ ├── window-size@0.1.4
│ └── y18n@3.2.0
├─┬ appium-base-driver@1.3.0
│ ├── lodash@4.5.1
│ ├─┬ request@2.69.0
│ │ ├── aws-sign2@0.6.0
│ │ ├─┬ aws4@1.2.1
│ │ │ └── lru-cache@2.7.3
│ │ ├── bl@1.0.3
│ │ ├── caseless@0.11.0
│ │ ├─┬ combined-stream@1.0.5
│ │ │ └── delayed-stream@1.0.0
│ │ ├── extend@3.0.0
│ │ ├── forever-agent@0.6.1
│ │ ├─┬ form-data@1.0.0-rc3
│ │ │ └── async@1.5.2
│ │ ├─┬ har-validator@2.0.6
│ │ │ ├─┬ commander@2.9.0
│ │ │ │ └── graceful-readlink@1.0.1
│ │ │ ├─┬ is-my-json-valid@2.13.1
│ │ │ │ ├── generate-function@2.0.0
│ │ │ │ ├─┬ generate-object-property@1.2.0
│ │ │ │ │ └── is-property@1.0.2
│ │ │ │ └── jsonpointer@2.0.0
│ │ │ └─┬ pinkie-promise@2.0.0
│ │ │ └── pinkie@2.0.4
│ │ ├─┬ hawk@3.1.3
│ │ │ ├── boom@2.10.1
│ │ │ ├── cryptiles@2.0.5
│ │ │ ├── hoek@2.16.3
│ │ │ └── sntp@1.0.9
│ │ ├─┬ http-signature@1.1.1
│ │ │ ├── assert-plus@0.2.0
│ │ │ ├─┬ jsprim@1.2.2
│ │ │ │ ├── extsprintf@1.0.2
│ │ │ │ ├── json-schema@0.2.2
│ │ │ │ └── verror@1.3.6
│ │ │ └─┬ sshpk@1.7.4
│ │ │ ├── asn1@0.2.3
│ │ │ ├─┬ dashdash@1.13.0
│ │ │ │ └── assert-plus@1.0.0
│ │ │ ├── ecc-jsbn@0.1.1
│ │ │ ├── jodid25519@1.0.2
│ │ │ ├── jsbn@0.1.0
│ │ │ └── tweetnacl@0.14.0
│ │ ├── is-typedarray@1.0.0
│ │ ├── json-stringify-safe@5.0.1
│ │ ├─┬ mime-types@2.1.10
│ │ │ └── mime-db@1.22.0
│ │ ├── node-uuid@1.4.7
│ │ ├── oauth-sign@0.8.1
│ │ ├── qs@6.0.2
│ │ ├── stringstream@0.0.5
│ │ ├── tough-cookie@2.2.1
│ │ └── tunnel-agent@0.4.2
│ ├── source-map-support@0.4.0
│ ├── uuid-js@0.7.5
│ └── validate.js@0.9.0
├─┬ appium-express@1.2.1
│ ├─┬ body-parser@1.15.0
│ │ ├── bytes@2.2.0
│ │ ├── content-type@1.0.1
│ │ ├── debug@2.2.0
│ │ ├── depd@1.1.0
│ │ ├─┬ http-errors@1.4.0
│ │ │ └── statuses@1.2.1
│ │ ├── iconv-lite@0.4.13
│ │ ├─┬ on-finished@2.3.0
│ │ │ └── ee-first@1.1.1
│ │ ├── qs@6.1.0
│ │ ├─┬ raw-body@2.1.5
│ │ │ └── unpipe@1.0.0
│ │ └─┬ type-is@1.6.11
│ │ └── media-typer@0.3.0
│ ├── colors@1.1.2
│ ├─┬ express@4.13.4
│ │ ├─┬ accepts@1.2.13
│ │ │ └── negotiator@0.5.3
│ │ ├── array-flatten@1.1.1
│ │ ├── content-disposition@0.5.1
│ │ ├── cookie@0.1.5
│ │ ├── cookie-signature@1.0.6
│ │ ├── escape-html@1.0.3
│ │ ├── etag@1.7.0
│ │ ├── finalhandler@0.4.1
│ │ ├── fresh@0.3.0
│ │ ├── merge-descriptors@1.0.1
│ │ ├── methods@1.1.2
│ │ ├── parseurl@1.3.1
│ │ ├── path-to-regexp@0.1.7
│ │ ├─┬ proxy-addr@1.0.10
│ │ │ ├── forwarded@0.1.0
│ │ │ └── ipaddr.js@1.0.5
│ │ ├── qs@4.0.0
│ │ ├── range-parser@1.0.3
│ │ ├─┬ send@0.13.1
│ │ │ ├── destroy@1.0.4
│ │ │ ├── http-errors@1.3.1
│ │ │ └── mime@1.3.4
│ │ ├── serve-static@1.10.2
│ │ ├── utils-merge@1.0.0
│ │ └── vary@1.0.1
│ ├── method-override@2.3.5
│ ├─┬ morgan@1.7.0
│ │ ├── basic-auth@1.0.3
│ │ └── on-headers@1.0.1
│ └─┬ serve-favicon@2.3.0
│ └── ms@0.7.1
├─┬ appium-fake-driver@0.1.9
│ ├─┬ babel-core@5.8.24
│ │ ├── babel-plugin-constant-folding@1.0.1
│ │ ├── babel-plugin-dead-code-elimination@1.0.2
│ │ ├── babel-plugin-eval@1.0.1
│ │ ├── babel-plugin-inline-environment-variables@1.0.1
│ │ ├── babel-plugin-jscript@1.0.4
│ │ ├── babel-plugin-member-expression-literals@1.0.1
│ │ ├── babel-plugin-property-literals@1.0.1
│ │ ├── babel-plugin-proto-to-assign@1.0.4
│ │ ├── babel-plugin-react-constant-elements@1.0.3
│ │ ├── babel-plugin-react-display-name@1.0.3
│ │ ├── babel-plugin-remove-console@1.0.1
│ │ ├── babel-plugin-remove-debugger@1.0.1
│ │ ├── babel-plugin-runtime@1.0.7
│ │ ├─┬ babel-plugin-undeclared-variables-check@1.0.2
│ │ │ └── leven@1.0.2
│ │ ├── babel-plugin-undefined-to-void@1.1.6
│ │ ├── babylon@5.8.35
│ │ ├─┬ chalk@1.1.1
│ │ │ ├─┬ ansi-styles@2.2.0
│ │ │ │ └── color-convert@1.0.0
│ │ │ ├── has-ansi@2.0.0
│ │ │ └── supports-color@2.0.0
│ │ ├── convert-source-map@1.1.3
│ │ ├─┬ detect-indent@3.0.1
│ │ │ ├── get-stdin@4.0.1
│ │ │ └── minimist@1.2.0
│ │ ├── esutils@2.0.2
│ │ ├── fs-readdir-recursive@0.1.2
│ │ ├── globals@6.4.1
│ │ ├─┬ home-or-tmp@1.0.0
│ │ │ └── user-home@1.1.1
│ │ ├─┬ is-integer@1.0.6
│ │ │ └── is-finite@1.0.1
│ │ ├── js-tokens@1.0.1
│ │ ├── json5@0.4.0
│ │ ├─┬ line-numbers@0.2.0
│ │ │ └── left-pad@0.0.3
│ │ ├─┬ minimatch@2.0.10
│ │ │ └─┬ brace-expansion@1.1.3
│ │ │ ├── balanced-match@0.3.0
│ │ │ └── concat-map@0.0.1
│ │ ├─┬ output-file-sync@1.1.1
│ │ │ └── xtend@4.0.1
│ │ ├── path-exists@1.0.0
│ │ ├── path-is-absolute@1.0.0
│ │ ├── private@0.1.6
│ │ ├─┬ regenerator@0.8.35
│ │ │ ├─┬ commoner@0.10.4
│ │ │ │ ├─┬ detective@4.3.1
│ │ │ │ │ ├── acorn@1.2.2
│ │ │ │ │ └── defined@1.0.0
│ │ │ │ ├── glob@5.0.15
│ │ │ │ ├── graceful-fs@4.1.3
│ │ │ │ └── q@1.4.1
│ │ │ ├─┬ defs@1.1.1
│ │ │ │ ├─┬ alter@0.2.0
│ │ │ │ │ └── stable@0.1.5
│ │ │ │ ├── ast-traverse@0.1.1
│ │ │ │ ├── breakable@1.0.0
│ │ │ │ ├── esprima-fb@15001.1001.0-dev-harmony-fb
│ │ │ │ ├── simple-fmt@0.1.0
│ │ │ │ ├── simple-is@0.2.0
│ │ │ │ ├── stringmap@0.2.2
│ │ │ │ ├── stringset@0.2.1
│ │ │ │ ├── tryor@0.1.2
│ │ │ │ └─┬ yargs@3.27.0
│ │ │ │ ├── camelcase@1.2.1
│ │ │ │ └─┬ cliui@2.1.0
│ │ │ │ ├─┬ center-align@0.1.3
│ │ │ │ │ ├─┬ align-text@0.1.4
│ │ │ │ │ │ ├── kind-of@3.0.2
│ │ │ │ │ │ ├── longest@1.0.1
│ │ │ │ │ │ └── repeat-string@1.5.2
│ │ │ │ │ └── lazy-cache@1.0.3
│ │ │ │ ├── right-align@0.1.3
│ │ │ │ └── wordwrap@0.0.2
│ │ │ ├── esprima-fb@15001.1.0-dev-harmony-fb
│ │ │ └─┬ recast@0.10.24
│ │ │ ├── ast-types@0.8.5
│ │ │ └── source-map@0.4.4
│ │ ├─┬ regexpu@1.3.0
│ │ │ ├── esprima@2.7.2
│ │ │ ├── regenerate@1.2.1
│ │ │ ├── regjsgen@0.2.0
│ │ │ └─┬ regjsparser@0.1.5
│ │ │ └── jsesc@0.5.0
│ │ ├── repeating@1.1.3
│ │ ├── resolve@1.1.7
│ │ ├── shebang-regex@1.0.0
│ │ ├── slash@1.0.0
│ │ ├── source-map@0.4.4
│ │ ├─┬ source-map-support@0.2.10
│ │ │ └── source-map@0.1.32
│ │ ├── to-fast-properties@1.0.1
│ │ ├── trim-right@1.0.1
│ │ └── try-resolve@1.0.1
│ ├── bluebird@3.3.1
│ ├── source-map-support@0.4.0
│ ├── xmldom@0.1.22
│ └── xpath@0.0.9
├─┬ appium-ios-driver@1.8.7
│ ├─┬ appium-cookies@1.1.0
│ │ └── babel-runtime@5.8.20
│ ├── appium-instruments@3.6.0
│ ├── appium-ios-log@1.2.0
│ ├─┬ appium-ios-simulator@1.5.2
│ │ ├── lodash@4.5.1
│ │ ├─┬ node-simctl@3.3.1
│ │ │ ├── lodash@4.5.1
│ │ │ └── source-map-support@0.4.0
│ │ ├── semver-compare@1.0.0
│ │ └── source-map-support@0.4.0
│ ├─┬ appium-remote-debugger@2.0.0
│ │ ├── appium-atoms@0.1.0
│ │ ├── bufferpack@0.0.6
│ │ ├── lodash@4.5.1
│ │ ├── source-map-support@0.4.0
│ │ └─┬ ws@1.0.1
│ │ ├── options@0.0.6
│ │ └── ultron@1.0.2
│ ├─┬ appium-uiauto@2.3.1
│ │ └── lodash@4.5.1
│ ├── appium-xcode@3.1.0
│ ├── ios-app-utils@1.1.0
│ ├── js2xmlparser2@0.2.0
│ ├── lodash@4.5.1
│ ├── node-idevice@0.1.5
│ ├─┬ path@0.12.7
│ │ ├── process@0.11.2
│ │ └── util@0.10.3
│ ├── safari-launcher@2.0.5
│ ├── source-map-support@0.4.0
│ ├─┬ url@0.11.0
│ │ ├── punycode@1.3.2
│ │ └── querystring@0.2.0
│ └── xpath@0.0.21
├── appium-logger@2.1.0
├─┬ appium-selendroid-driver@1.2.2
│ ├─┬ appium-jsonwp-proxy@1.5.0
│ │ └── jsonwp-status@0.0.1
│ ├─┬ appium-selendroid-installer@0.2.0
│ │ └── request-promise@0.4.3
│ └── utf7@1.0.0
├─┬ appium-support@2.0.10
│ ├─┬ bplist-creator@0.0.6
│ │ └── stream-buffers@2.2.0
│ ├─┬ bplist-parser@0.1.1
│ │ └── big-integer@1.6.12
│ ├─┬ glob@6.0.4
│ │ ├─┬ inflight@1.0.4
│ │ │ └── wrappy@1.0.1
│ │ ├── inherits@2.0.1
│ │ ├── minimatch@3.0.0
│ │ └── once@1.3.3
│ ├── lodash@4.5.1
│ ├─┬ md5@2.0.0
│ │ ├── charenc@0.0.1
│ │ ├── crypt@0.0.1
│ │ └── is-buffer@1.0.2
│ ├─┬ mkdirp@0.5.1
│ │ └── minimist@0.0.8
│ ├─┬ mv@2.1.1
│ │ └── rimraf@2.4.5
│ ├── ncp@2.0.0
│ ├─┬ plist@1.2.0
│ │ ├── base64-js@0.0.8
│ │ ├── util-deprecate@1.0.2
│ │ └── xmlbuilder@4.0.0
│ ├─┬ rimraf@2.5.2
│ │ └── glob@7.0.0
│ └─┬ which@1.2.4
│ ├─┬ is-absolute@0.1.7
│ │ └── is-relative@0.1.3
│ └── isexe@1.1.2
├─┬ argparse@1.0.6
│ └── sprintf-js@1.0.3
├─┬ asyncbox@2.3.1
│ ├─┬ babel-runtime@5.5.5
│ │ └── core-js@0.9.18
│ ├─┬ chai@3.5.0
│ │ ├── assertion-error@1.0.1
│ │ ├─┬ deep-eql@0.1.3
│ │ │ └── type-detect@0.1.1
│ │ └── type-detect@1.0.0
│ ├── chai-as-promised@5.2.0
│ └─┬ es6-mapify@1.0.0
│ └─┬ traceur@0.0.102
│ ├── commander@2.6.0
│ ├─┬ glob@4.3.5
│ │ └── minimatch@2.0.10
│ ├── rsvp@3.2.1
│ ├── semver@4.3.2
│ └── source-map-support@0.2.10
├─┬ authorize-ios@1.0.4
│ └── glob@5.0.15
├─┬ babel-runtime@5.8.24
│ └── core-js@1.2.6
├── bluebird@2.10.2
├── date-utils@1.2.18
├─┬ fsevents@1.0.8
│ ├── nan@2.2.0
│ └─┬ node-pre-gyp@0.6.21
│ ├─┬ mkdirp@0.5.1
│ │ └── minimist@0.0.8
│ ├─┬ nopt@3.0.6
│ │ └── abbrev@1.0.7
│ ├─┬ npmlog@2.0.2
│ │ ├── ansi@0.3.1
│ │ ├─┬ are-we-there-yet@1.0.6
│ │ │ └── delegates@1.0.0
│ │ └─┬ gauge@1.2.5
│ │ ├── has-unicode@2.0.0
│ │ ├─┬ lodash.pad@3.3.0
│ │ │ ├── lodash._root@3.0.0
│ │ │ └── lodash.repeat@3.2.0
│ │ ├─┬ lodash.padleft@3.1.1
│ │ │ ├── lodash._basetostring@3.0.1
│ │ │ └── lodash._createpadding@3.6.1
│ │ └── lodash.padright@3.1.1
│ ├─┬ rc@1.1.6
│ │ ├── deep-extend@0.4.1
│ │ ├── ini@1.3.4
│ │ ├── minimist@1.2.0
│ │ └── strip-json-comments@1.0.4
│ ├─┬ request@2.69.0
│ │ ├── aws-sign2@0.6.0
│ │ ├─┬ aws4@1.2.1
│ │ │ └── lru-cache@2.7.3
│ │ ├── bl@1.0.2
│ │ ├── caseless@0.11.0
│ │ ├─┬ combined-stream@1.0.5
│ │ │ └── delayed-stream@1.0.0
│ │ ├── extend@3.0.0
│ │ ├── forever-agent@0.6.1
│ │ ├─┬ form-data@1.0.0-rc3
│ │ │ └── async@1.5.2
│ │ ├─┬ har-validator@2.0.6
│ │ │ ├─┬ chalk@1.1.1
│ │ │ │ ├── ansi-styles@2.1.0
│ │ │ │ ├── escape-string-regexp@1.0.4
│ │ │ │ ├─┬ has-ansi@2.0.0
│ │ │ │ │ └── ansi-regex@2.0.0
│ │ │ │ ├── strip-ansi@3.0.0
│ │ │ │ └── supports-color@2.0.0
│ │ │ ├─┬ commander@2.9.0
│ │ │ │ └── graceful-readlink@1.0.1
│ │ │ ├─┬ is-my-json-valid@2.12.4
│ │ │ │ ├── generate-function@2.0.0
│ │ │ │ ├─┬ generate-object-property@1.2.0
│ │ │ │ │ └── is-property@1.0.2
│ │ │ │ ├── jsonpointer@2.0.0
│ │ │ │ └── xtend@4.0.1
│ │ │ └─┬ pinkie-promise@2.0.0
│ │ │ └── pinkie@2.0.4
│ │ ├─┬ hawk@3.1.3
│ │ │ ├── boom@2.10.1
│ │ │ ├── cryptiles@2.0.5
│ │ │ ├── hoek@2.16.3
│ │ │ └── sntp@1.0.9
│ │ ├─┬ http-signature@1.1.1
│ │ │ ├── assert-plus@0.2.0
│ │ │ ├─┬ jsprim@1.2.2
│ │ │ │ ├── extsprintf@1.0.2
│ │ │ │ ├── json-schema@0.2.2
│ │ │ │ └── verror@1.3.6
│ │ │ └─┬ sshpk@1.7.3
│ │ │ ├── asn1@0.2.3
│ │ │ ├── dashdash@1.12.2
│ │ │ ├── ecc-jsbn@0.1.1
│ │ │ ├── jodid25519@1.0.2
│ │ │ ├── jsbn@0.1.0
│ │ │ └── tweetnacl@0.13.3
│ │ ├── is-typedarray@1.0.0
│ │ ├── isstream@0.1.2
│ │ ├── json-stringify-safe@5.0.1
│ │ ├─┬ mime-types@2.1.9
│ │ │ └── mime-db@1.21.0
│ │ ├── node-uuid@1.4.7
│ │ ├── oauth-sign@0.8.1
│ │ ├── qs@6.0.2
│ │ ├── stringstream@0.0.5
│ │ ├── tough-cookie@2.2.1
│ │ └── tunnel-agent@0.4.2
│ ├─┬ rimraf@2.5.1
│ │ └─┬ glob@6.0.4
│ │ ├─┬ inflight@1.0.4
│ │ │ └── wrappy@1.0.1
│ │ ├── inherits@2.0.1
│ │ ├─┬ minimatch@3.0.0
│ │ │ └─┬ brace-expansion@1.1.2
│ │ │ ├── balanced-match@0.3.0
│ │ │ └── concat-map@0.0.1
│ │ ├─┬ once@1.3.3
│ │ │ └── wrappy@1.0.1
│ │ └── path-is-absolute@1.0.0
│ ├── semver@5.1.0
│ ├─┬ tar@2.2.1
│ │ ├── block-stream@0.0.8
│ │ ├─┬ fstream@1.0.8
│ │ │ └── graceful-fs@4.1.3
│ │ └── inherits@2.0.1
│ └─┬ tar-pack@3.1.3
│ ├─┬ debug@2.2.0
│ │ └── ms@0.7.1
│ ├─┬ fstream-ignore@1.0.3
│ │ └─┬ minimatch@3.0.0
│ │ └─┬ brace-expansion@1.1.2
│ │ ├── balanced-match@0.3.0
│ │ └── concat-map@0.0.1
│ ├─┬ once@1.3.3
│ │ └── wrappy@1.0.1
│ ├─┬ readable-stream@2.0.5
│ │ ├── core-util-is@1.0.2
│ │ ├── isarray@0.0.1
│ │ ├── process-nextick-args@1.0.6
│ │ ├── string_decoder@0.10.31
│ │ └── util-deprecate@1.0.2
│ └── uid-number@0.0.6
├── lodash@3.10.1
├─┬ mobile-json-wire-protocol@1.3.2
│ └── es6-error@2.0.2
├─┬ npmlog@2.0.2
│ ├── ansi@0.3.1
│ ├─┬ are-we-there-yet@1.0.6
│ │ ├── delegates@1.0.0
│ │ └─┬ readable-stream@2.0.5
│ │ ├── core-util-is@1.0.2
│ │ ├── isarray@0.0.1
│ │ ├── process-nextick-args@1.0.6
│ │ └── string_decoder@0.10.31
│ └─┬ gauge@1.2.7
│ ├── has-unicode@2.0.0
│ ├─┬ lodash.pad@4.1.0
│ │ ├── lodash.repeat@4.0.0
│ │ └── lodash.tostring@4.1.1
│ ├── lodash.padend@4.2.0
│ └── lodash.padstart@4.2.0
├─┬ request-promise@1.0.2
│ └─┬ cls-bluebird@1.0.1
│ └── shimmer@1.1.0
├─┬ source-map-support@0.3.3
│ └─┬ source-map@0.1.32
│ └── amdefine@1.0.0
├─┬ teen_process@1.5.1
│ ├─┬ shell-quote@1.4.3
│ │ ├── array-filter@0.0.1
│ │ ├── array-map@0.0.0
│ │ ├── array-reduce@0.0.0
│ │ └── jsonify@0.0.0
│ ├── source-map-support@0.2.10
│ └── through@2.3.8
└─┬ winston@1.1.2
├── async@1.0.0
├── colors@1.0.3
├── cycle@1.0.3
├── eyes@0.1.8
├── isstream@0.1.2
├── pkginfo@0.3.1
└── stack-trace@0.0.9

To install appium first install Node js

Then in cmd prompt type-> npm install -g appium
npm install -g appium --verbose ( to see background)

Then in cmd prompt type -> npm install wd

Then in cmd promt type-> appium

Then your appium server will start

29 days later

Dropping findBy.name() has killed 100% of our Android automation code base. Wow. Everything has come to a grinding halt because of this. We cannot upgrade to 1.5 until the entire code base is refactored. Got im himmel...

Why?

1 month later

@lvconley: I understand your problem.
How we tackled this problem? A framework. The framework wrapped almost everything, so in our wrapped findByName method we internally handled to call findByAccessibilityId. There is not even a single end user affected by this change and everything worked well as before. So I would suggest time to create a framework.

Otherwise, find and replace will help you.

19 days later

Scripts are running very slow with appium 1.5.2 version , but with appium 1.4.3 version ,it is very fast Suppose for each testscript in appium 1.4.3 ,it takes 80 sec ,but with appium 1.5.2 ,it is taking 400 sec .Any Idea how to fix this one ?

You might want to add some details to your particular issue, because the Appium 1.5 series has so far been running smooth and snappy for me.

Hey guys,

I have a problem when I'm trying to install the latest version. The installation is failing when installing the chrome-driver.

npm ERR! Windows_NT 10.0.10240
npm ERR! argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "install" "-g" "appium" "--verbose"
npm ERR! node v4.4.5
npm ERR! npm v2.15.5
npm ERR! code ELIFECYCLE

npm ERR! appium-chromedriver@2.9.2 install: node install-npm.js
npm ERR! Exit status 3221225501
npm ERR!
npm ERR! Failed at the appium-chromedriver@2.9.2 install script 'node install-npm.js'.
npm ERR! This is most likely a problem with the appium-chromedriver package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node install-npm.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs appium-chromedriver
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!
npm ERR! npm owner ls appium-chromedriver
npm ERR! There is likely additional logging output above.
npm verb exit [ 1, true ]

Have someone encountered the same problem?

Thanks