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
The Future of Selenium for mobile web and nativ...
Search
Jason Carr
November 16, 2012
Technology
1
400
The Future of Selenium for mobile web and native apps
Jason Carr
November 16, 2012
Tweet
Share
More Decks by Jason Carr
See All by Jason Carr
Using Selenium to Test Native iOS Apps
maudineormsby
2
280
Other Decks in Technology
See All in Technology
夢の無限スパゲッティ製造機 #phperkaigi
o0h
PRO
0
390
Bill One 開発エンジニア 紹介資料
sansan33
PRO
5
18k
OCI技術資料 : ロード・バランサ 概要 - FLB・NLB共通
ocise
4
27k
昔話で振り返るAWSの歩み ~S3誕生から20年、クラウドはどう進化したのか~
nrinetcom
PRO
0
110
「通るまでRe-run」から卒業!落ちないテストを書く勘所
asumikam
2
820
Datadog で実現するセキュリティ対策 ~オブザーバビリティとセキュリティを 一緒にやると何がいいのか~
a2ush
0
170
韓非子に学ぶAI活用術
tomfook
3
1.1k
Blue/Green Deployment を用いた PostgreSQL のメジャーバージョンアップ
kkato1
0
160
【社内勉強会】新年度からコーディングエージェントを使いこなす - 構造と制約で引き出すClaude Codeの実践知
nwiizo
27
13k
イベントで大活躍する電子ペーパー名札を作る(その2) 〜 M5PaperとM5PaperS3 〜 / IoTLT @ JLCPCB オープンハードカンファレンス
you
PRO
0
210
Bref でサービスを運用している話
sgash708
0
200
Navigation APIと見るSvelteKitのWeb標準志向
yamanoku
2
130
Featured
See All Featured
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
870
How STYLIGHT went responsive
nonsquared
100
6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
100
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
160
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
200
Context Engineering - Making Every Token Count
addyosmani
9
780
Faster Mobile Websites
deanohume
310
31k
Discover your Explorer Soul
emna__ayadi
2
1.1k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
140
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Transcript
The future of Selenium testing for mobile web and native
apps
Hi. I’m JASON CARR. I work at sauce LABS.
@maudineormsby
None
I’m a developer and contributor to SELENIUM and APPIUM
Context
For mobile web, Web Driver
Script Script Selenium Grid (optional) Selenium Grid (optional) iWebDriver.app
Script Script iWebDriver.app
iWebDriver.app from selenium import webdriver hub = ‘http://localhost:3001/wd/hub’ caps =
webdriver.DesiredCapabilities.IPHONE driver = webdriver.Remote(hub, caps) from selenium import webdriver hub = ‘http://localhost:3001/wd/hub’ caps = webdriver.DesiredCapabilities.IPHONE driver = webdriver.Remote(hub, caps)
None
Limitations
iframes
driver.quit()
Alert handling
Javascript
UIAutomation
“…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
An aside: Android automation…
Monkey Runner
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?
WebKit remote debugging protocol
Drive mobile safari
Drive desktop safari
Drive chrome on android!
Android RC
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