Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Using Selenium to Test Native iOS Apps
Search
Jason Carr
November 15, 2012
Technology
280
2
Share
Using Selenium to Test Native iOS Apps
Jason Carr
November 15, 2012
More Decks by Jason Carr
See All by Jason Carr
The Future of Selenium for mobile web and native apps
maudineormsby
1
410
Other Decks in Technology
See All in Technology
AIエージェントの権限管理 2: データ基盤の Fine grained access control 編
ren8k
0
120
#jawsugyokohama 100 LT11, "My AWS Journey 2011-2026 - kwntravel"
shinichirokawano
0
340
最初の一歩を踏み出せなかった私が、誰かの背中を押したいと思うようになるまで / give someone a push
mii3king
0
160
弁護士ドットコム株式会社 エンジニア職向け 会社紹介資料
bengo4com
1
140
基盤を育てる 外部SaaS連携の運用
gamonges_dresscode
1
110
EBS暗号化に失敗してEC2が動かなくなった話
hamaguchimmm
2
190
ネットワーク運用を楽にするAWS DevOps Agent活用法!! / 20260421 Masaki Okuda
shift_evolve
PRO
2
200
Digitization部 紹介資料
sansan33
PRO
1
7.3k
AI バイブコーティングでキーボード不要?!
samakada
0
450
AIエージェントの権限管理 1: MCPサーバー・ツールの Fine grained access control 編
ren8k
3
490
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
16k
最近の技術系の話題で気になったもの色々(IoT系以外も) / IoTLT 花見予定会(たぶんBBQ) @都立潮風公園バーベキュー広場
you
PRO
1
220
Featured
See All Featured
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.2k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
Writing Fast Ruby
sferik
630
63k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
350
The Curse of the Amulet
leimatthew05
1
11k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Typedesign – Prime Four
hannesfritz
42
3k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
510
Transcript
Using Selenium to Test Native Applications …wait, you can do
that?
Hi. I’m JASON CARR. I work at sauce LABS.
@maudineormsby …it’s a long story.
I’m a developer and contributor to SELENIUM and APPIUM
This talk is about…
This talk is about… THE PROBLEM OF IOS APP AUTOMATION
This talk is about… LESSONS LEARNED AUTOMATING APPS
This talk is about… THE RIGHT APPROACH TO TESTING NATIVE
APPS
This talk is about… THE TOOLS AVAILABLE TO TEST YOUR
APPS TODAY
This talk is about… WHAT HOPE WE HAVE FOR THE
FUTURE.
THE PROBLEM OF IOS APP AUTOMATION
“…a bit like being dropped off in a field somewhere
with no map, tools or supplies and being told you need to build a house.” -Alex Vollmer
js js Instruments.app Instruments.app App
js js Instruments.app Instruments.app App CLIENT DEVICE
UI Automation only runs in Instruments.app
Tests have to be in Javascript
No realtime interaction with tests
Hard to reuse code
One test at a time
So what have we LEARNED SO FAR?
Two attempted approaches to automation
Script/ Framework Script/ Framework Screen Capture Screen Capture App CLIENT
DEVICE
Hard to abstract
Very brittle
Hard to use with real devices
Hard to use with CI or parallelize
script script Client library Client library App CLIENT DEVICE
Requires code modification
Real devices are hard
New framework and new tests
The RIGHT WAY TO AUTOMATE IOS
Remember the testing pyramid
None
Are you writing unit tests for apps? It’s not that
hard!
Test your views appropriately
For UIWebViews use iWebDriver
Yes, yes, but NOW WHAT?
Code reuse is good.
Realtime interaction
Integrate with existing automation
Parallel tests and real devices
That sounds great, BUT HOW?
APPIUM
Open Source Can be extended
Uses webdriver API Runs with off-the-shelf client libraries Language agnostic
Real time Interact with js interpreter or client
Real devices
Works in parallel (architecturally)
No code modification
test script test script Instruments.app Instruments.app App CLIENT DEVICE Appium
Server Appium Server
Easy to get started
Clone Appium
pip install bottle
python server.py /path/to/my.app
from selenium import webdriver command_url = “http://localhost:4723/wd/hub” iphone = webdriver.DesiredCapabilities.IPHONE
driver = webdriver.Remote(command_url, iphone) fields = driver.find_elements_by_tag_name('textField’) fields[0].send_keys(3) fields[1].send_keys(4) buttons = driver.find_elements_by_tag_name('button’) buttons[0].click()
DEMO
Doesn’t support execute_script() …yet. More on this later.
1 Second delay between commands UI Automation limitation
Still uses UIAutomation ‘Accessibility’ is important
WHERE DO WE GO FROM HERE?
Implement more of the API
WebKit remote debugging protocol
Selenium Grid support
Questions? Thank you!
Resources Appium Github Repo: http://goo.gl/4E5F0 Dan Cuellar’s talk on Appium:
http://goo.gl/qgLha François Reynaud on ios-driver: http://goo.gl/pzn75 Simon Stewart’s blog on mobile testing: http://goo.gl/8wl8j