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
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
140
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
800
LLMにもCAP定理があるという話
harukasakihara
0
290
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
600
スキルと MCP ツール、責務をどう分けるか? AI が迷わないインターフェース設計の戦略
cdataj
1
950
DevOps Agentで始めるAWS運用 〜フロンティアエージェントが変える運用の現場〜
nyankotaro
1
380
FDE という解 ― 暗黙知と明示知をつなぐ、伴走型エンジニアリング ―
otanet
0
130
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
130
ポケモンの型をTypeScriptの型システムで表現してみた
subroh0508
0
370
エラーバジェットのアラートのタイミングを考える.pdf
kairim0
0
120
AmazonRoute 53ではじめてのドメイン取得!HTTPS化までの道のりを整理してみた
usanchuu
3
130
現地で盛り上がった WWDC26 Keynote
zozotech
PRO
1
200
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Building the Perfect Custom Keyboard
takai
2
790
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
Ruling the World: When Life Gets Gamed
codingconduct
0
250
Bash Introduction
62gerente
615
220k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
420
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
420
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
200
Mobile First: as difficult as doing things right
swwweet
225
10k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
160
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